ETH Price: $2,995.63 (-1.96%)
Gas: 2 Gwei

Contract

0xD0cd197a460eDb22E53b408e79C3C0d79B3d5f65
 

Overview

ETH Balance

3 wei

Eth Value

Less Than $0.01 (@ $2,995.63/ETH)

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Value
Approve193024542024-02-25 5:16:59133 days ago1708838219IN
0xD0cd197a...79B3d5f65
0 ETH0.0010734922.74597573
Approve191767512024-02-07 13:56:35151 days ago1707314195IN
0xD0cd197a...79B3d5f65
0 ETH0.0016618835.39322404
Approve191747182024-02-07 7:05:59151 days ago1707289559IN
0xD0cd197a...79B3d5f65
0 ETH0.0013636128.85653941
Approve191741502024-02-07 5:11:11151 days ago1707282671IN
0xD0cd197a...79B3d5f65
0 ETH0.0012040325.64240447
Approve191741332024-02-07 5:07:47151 days ago1707282467IN
0xD0cd197a...79B3d5f65
0 ETH0.0012707226.8906999
Approve191739372024-02-07 4:28:23151 days ago1707280103IN
0xD0cd197a...79B3d5f65
0 ETH0.0014252930.16170087
Approve176591612023-07-09 22:37:35363 days ago1688942255IN
0xD0cd197a...79B3d5f65
0 ETH0.0009467320.16785509
Approve171236852023-04-25 13:51:35439 days ago1682430695IN
0xD0cd197a...79B3d5f65
0 ETH0.0018973440.15121933
Approve170468972023-04-14 17:33:59450 days ago1681493639IN
0xD0cd197a...79B3d5f65
0 ETH0.0012044525.52080513
Approve170143672023-04-10 0:50:47454 days ago1681087847IN
0xD0cd197a...79B3d5f65
0 ETH0.0009514220.15940594
Approve169876422023-04-06 5:44:47458 days ago1680759887IN
0xD0cd197a...79B3d5f65
0 ETH0.0010449222.14064604
Approve169654752023-04-03 2:13:59461 days ago1680488039IN
0xD0cd197a...79B3d5f65
0 ETH0.0019140840.55688436
Approve169603722023-04-02 8:58:47462 days ago1680425927IN
0xD0cd197a...79B3d5f65
0 ETH0.0017762537.58875018
Approve169591172023-04-02 4:42:35462 days ago1680410555IN
0xD0cd197a...79B3d5f65
0 ETH0.0014727731.20612148
Transfer169435592023-03-31 0:16:11464 days ago1680221771IN
0xD0cd197a...79B3d5f65
0 ETH0.0030012323.58536285
Approve169411422023-03-30 16:07:23465 days ago1680192443IN
0xD0cd197a...79B3d5f65
0 ETH0.0026044255.18426515
Approve169387712023-03-30 8:07:23465 days ago1680163643IN
0xD0cd197a...79B3d5f65
0 ETH0.0014885331.5
Approve169302302023-03-29 3:18:23466 days ago1680059903IN
0xD0cd197a...79B3d5f65
0 ETH0.0016848635.7
Approve169294522023-03-29 0:41:23466 days ago1680050483IN
0xD0cd197a...79B3d5f65
0 ETH0.0010348321.92674292
Transfer169087692023-03-26 2:56:23469 days ago1679799383IN
0xD0cd197a...79B3d5f65
0 ETH0.001563914.19794147
Transfer169010702023-03-25 0:59:35470 days ago1679705975IN
0xD0cd197a...79B3d5f65
0 ETH0.0015994914.52101991
Approve169008692023-03-25 0:18:35470 days ago1679703515IN
0xD0cd197a...79B3d5f65
0 ETH0.0007985416.89863702
Approve168996722023-03-24 20:15:11470 days ago1679688911IN
0xD0cd197a...79B3d5f65
0 ETH0.0012572726.60619833
Transfer168995242023-03-24 19:45:35470 days ago1679687135IN
0xD0cd197a...79B3d5f65
0 ETH0.0031183828.31037847
Approve168979882023-03-24 14:35:11471 days ago1679668511IN
0xD0cd197a...79B3d5f65
0 ETH0.0014682231.10969317
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To Value
167524552023-03-04 3:36:35491 days ago1677900995
0xD0cd197a...79B3d5f65
0.06066115 ETH
167524552023-03-04 3:36:35491 days ago1677900995
0xD0cd197a...79B3d5f65
0.03412189 ETH
167524552023-03-04 3:36:35491 days ago1677900995
0xD0cd197a...79B3d5f65
0.03412189 ETH
167524552023-03-04 3:36:35491 days ago1677900995
0xD0cd197a...79B3d5f65
0.06066115 ETH
167524552023-03-04 3:36:35491 days ago1677900995
0xD0cd197a...79B3d5f65
0.1895661 ETH
167524382023-03-04 3:33:11491 days ago1677900791
0xD0cd197a...79B3d5f65
0.05673072 ETH
167524382023-03-04 3:33:11491 days ago1677900791
0xD0cd197a...79B3d5f65
0.03191103 ETH
167524382023-03-04 3:33:11491 days ago1677900791
0xD0cd197a...79B3d5f65
0.03191103 ETH
167524382023-03-04 3:33:11491 days ago1677900791
0xD0cd197a...79B3d5f65
0.05673072 ETH
167524382023-03-04 3:33:11491 days ago1677900791
0xD0cd197a...79B3d5f65
0.17728352 ETH
167524372023-03-04 3:32:59491 days ago1677900779
0xD0cd197a...79B3d5f65
0.0250692 ETH
167524372023-03-04 3:32:59491 days ago1677900779
0xD0cd197a...79B3d5f65
0.01410143 ETH
167524372023-03-04 3:32:59491 days ago1677900779
0xD0cd197a...79B3d5f65
0.01410143 ETH
167524372023-03-04 3:32:59491 days ago1677900779
0xD0cd197a...79B3d5f65
0.0250692 ETH
167524372023-03-04 3:32:59491 days ago1677900779
0xD0cd197a...79B3d5f65
0.07834127 ETH
167524342023-03-04 3:32:23491 days ago1677900743
0xD0cd197a...79B3d5f65
0.18481295 ETH
167524342023-03-04 3:32:23491 days ago1677900743
0xD0cd197a...79B3d5f65
0.10395728 ETH
167524342023-03-04 3:32:23491 days ago1677900743
0xD0cd197a...79B3d5f65
0.10395728 ETH
167524342023-03-04 3:32:23491 days ago1677900743
0xD0cd197a...79B3d5f65
0.18481295 ETH
167524342023-03-04 3:32:23491 days ago1677900743
0xD0cd197a...79B3d5f65
0.57754049 ETH
167524012023-03-04 3:25:47491 days ago1677900347
0xD0cd197a...79B3d5f65
0.04178067 ETH
167524012023-03-04 3:25:47491 days ago1677900347
0xD0cd197a...79B3d5f65
0.02350163 ETH
167524012023-03-04 3:25:47491 days ago1677900347
0xD0cd197a...79B3d5f65
0.02350163 ETH
167524012023-03-04 3:25:47491 days ago1677900347
0xD0cd197a...79B3d5f65
0.04178067 ETH
167524012023-03-04 3:25:47491 days ago1677900347
0xD0cd197a...79B3d5f65
0.13056461 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
SHADOWINU

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-03-04
*/

/**

  sSSs   .S    S.    .S_SSSs     .S_sSSs      sSSs_sSSs     .S     S.          .S   .S_sSSs     .S       S.   
 d%%SP  .SS    SS.  .SS~SSSSS   .SS~YS%%b    d%%SP~YS%%b   .SS     SS.        .SS  .SS~YS%%b   .SS       SS.  
d%S'    S%S    S%S  S%S   SSSS  S%S   `S%b  d%S'     `S%b  S%S     S%S        S%S  S%S   `S%b  S%S       S%S  
S%|     S%S    S%S  S%S    S%S  S%S    S%S  S%S       S%S  S%S     S%S        S%S  S%S    S%S  S%S       S%S  
S&S     S%S SSSS%S  S%S SSSS%S  S%S    S&S  S&S       S&S  S%S     S%S        S&S  S%S    S&S  S&S       S&S  
Y&Ss    S&S  SSS&S  S&S  SSS%S  S&S    S&S  S&S       S&S  S&S     S&S        S&S  S&S    S&S  S&S       S&S  
`S&&S   S&S    S&S  S&S    S&S  S&S    S&S  S&S       S&S  S&S     S&S        S&S  S&S    S&S  S&S       S&S  
  `S*S  S&S    S&S  S&S    S&S  S&S    S&S  S&S       S&S  S&S     S&S        S&S  S&S    S&S  S&S       S&S  
   l*S  S*S    S*S  S*S    S&S  S*S    d*S  S*b       d*S  S*S     S*S        S*S  S*S    S*S  S*b       d*S  
  .S*P  S*S    S*S  S*S    S*S  S*S   .S*S  S*S.     .S*S  S*S  .  S*S        S*S  S*S    S*S  S*S.     .S*S  
sSS*S   S*S    S*S  S*S    S*S  S*S_sdSSS    SSSbs_sdSSS   S*S_sSs_S*S        S*S  S*S    S*S   SSSbs_sdSSS   
YSS'    SSS    S*S  SSS    S*S  DONT~FADE      DONT~FADE    SSS~SSS~S*S        S*S  S*S    SSS    DONT~FADE    
               SP          SP                                                 SP   SP                         
               Y           Y                                                  Y    Y                          
                                                                                                              
 https://t.me/ShadowInuOfficial
*/

pragma solidity ^0.8.17;
// SPDX-License-Identifier: Unlicensed
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }
}

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

contract Ownable is Context {
    address private _owner;
    address private _previousOwner;
    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 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;
    }
}

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

interface IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;

    function factory() external pure returns (address);

    function WETH() external pure returns (address);

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

contract SHADOWINU is Context, IERC20, Ownable {

    using SafeMath for uint256;

    string private constant _name = "Shadow Inu";
    string private constant _symbol = "SHADOW INU";
    uint8 private constant _decimals = 9;

    mapping(address => uint256) private _rOwned;
    mapping(address => uint256) private _tOwned;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFee;
    uint256 private constant MAX = ~uint256(0);
    uint256 private constant _tTotal = 100000000 * 10**_decimals;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    uint256 private _redisFeeOnBuy = 0;
    uint256 private _taxFeeOnBuy = 3;
    uint256 private _redisFeeOnSell = 0;
    uint256 private _taxFeeOnSell = 3;

    //Original Fee
    uint256 private _redisFee = _redisFeeOnSell;
    uint256 private _taxFee = _taxFeeOnSell;

    uint256 private _previousredisFee = _redisFee;
    uint256 private _previoustaxFee = _taxFee;

    mapping(address => bool) public bots; 
    mapping (address => uint256) public _buyMap;
    mapping (address => bool) public preTrader;
    address private developmentAddress;
    address private marketingAddress;
    address private devFeeAddress1;
    address private devFeeAddress2;

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;

    bool private tradingOpen;
    bool private inSwap = false;
    bool private swapEnabled = true;

    uint256 public _maxTxAmount = 1000000 * 10**_decimals;
    uint256 public _maxWalletSize = 1000000 * 10**_decimals;
    uint256 public _swapTokensAtAmount = 150000 * 10**_decimals;

    struct Distribution {
        uint256 development;
        uint256 marketing;
        uint256 devFee;
    }

    Distribution public distribution;

    event MaxTxAmountUpdated(uint256 _maxTxAmount);
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor(address developmentAddr, address marketingAddr, address devFeeAddr1, address devFeeAddr2) {
        developmentAddress = developmentAddr;
        marketingAddress = marketingAddr;
        devFeeAddress1 = devFeeAddr1;
        devFeeAddress2 = devFeeAddr2;
        _rOwned[_msgSender()] = _rTotal;

        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);//
        uniswapV2Router = _uniswapV2Router;
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());

        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[devFeeAddress1] = true;
        _isExcludedFromFee[devFeeAddress2] = true;
        _isExcludedFromFee[marketingAddress] = true;
        _isExcludedFromFee[developmentAddress] = true;

        distribution = Distribution(32, 32, 36);

        emit Transfer(address(0), _msgSender(), _tTotal);
    }

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

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

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

    function totalSupply() public pure override returns (uint256) {
        return _tTotal;
    }

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

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

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

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

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

    function tokenFromReflection(uint256 rAmount)
        private
        view
        returns (uint256)
    {
        require(
            rAmount <= _rTotal,
            "Amount must be less than total reflections"
        );
        uint256 currentRate = _getRate();
        return rAmount.div(currentRate);
    }

    function removeAllFee() private {
        if (_redisFee == 0 && _taxFee == 0) return;

        _previousredisFee = _redisFee;
        _previoustaxFee = _taxFee;

        _redisFee = 0;
        _taxFee = 0;
    }

    function restoreAllFee() private {
        _redisFee = _previousredisFee;
        _taxFee = _previoustaxFee;
    }

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

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");

        if (from != owner() && to != owner() && !preTrader[from] && !preTrader[to]) {

            //Trade start check
            if (!tradingOpen) {
                require(preTrader[from], "TOKEN: This account cannot send tokens until trading is enabled");
            }

            require(amount <= _maxTxAmount, "TOKEN: Max Transaction Limit");
            require(!bots[from] && !bots[to], "TOKEN: Your account is blacklisted!");

            if(to != uniswapV2Pair) {
                require(balanceOf(to) + amount < _maxWalletSize, "TOKEN: Balance exceeds wallet size!");
            }

            uint256 contractTokenBalance = balanceOf(address(this));
            bool canSwap = contractTokenBalance >= _swapTokensAtAmount;

            if(contractTokenBalance >= _maxTxAmount)
            {
                contractTokenBalance = _maxTxAmount;
            }

            if (canSwap && !inSwap && from != uniswapV2Pair && swapEnabled && !_isExcludedFromFee[from] && !_isExcludedFromFee[to]) {
                swapTokensForEth(contractTokenBalance);
                uint256 contractETHBalance = address(this).balance;
                if (contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
            }
        }

        bool takeFee = true;

        //Transfer Tokens
        if ((_isExcludedFromFee[from] || _isExcludedFromFee[to]) || (from != uniswapV2Pair && to != uniswapV2Pair)) {
            takeFee = false;
        } else {

            //Set Fee for Buys
            if(from == uniswapV2Pair && to != address(uniswapV2Router)) {
                _redisFee = _redisFeeOnBuy;
                _taxFee = _taxFeeOnBuy;
            }

            //Set Fee for Sells
            if (to == uniswapV2Pair && from != address(uniswapV2Router)) {
                _redisFee = _redisFeeOnSell;
                _taxFee = _taxFeeOnSell;
            }

        }

        _tokenTransfer(from, to, amount, takeFee);
    }

    function swapTokensForEth(uint256 tokenAmount) private lockTheSwap {
        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 sendETHToFee(uint256 amount) private lockTheSwap {
        uint256 distributionEth = amount;
        uint256 marketingShare = distributionEth.mul(distribution.marketing).div(100);
        uint256 devFeeShare = distributionEth.mul(distribution.devFee).div(100).div(2);
        uint256 developmentShare = distributionEth.mul(distribution.development).div(100);
        payable(marketingAddress).transfer(marketingShare);
        payable(devFeeAddress1).transfer(devFeeShare);
        payable(devFeeAddress2).transfer(devFeeShare);
        payable(developmentAddress).transfer(developmentShare);
    }

    function setTrading(bool _tradingOpen) public onlyOwner {
        tradingOpen = _tradingOpen;
    }

    function manualswap() external {
        require(_msgSender() == developmentAddress || _msgSender() == marketingAddress || _msgSender() == devFeeAddress1 || _msgSender() == devFeeAddress2);
        uint256 contractBalance = balanceOf(address(this));
        swapTokensForEth(contractBalance);
    }

    function manualsend() external {
        require(_msgSender() == developmentAddress || _msgSender() == marketingAddress || _msgSender() == devFeeAddress1 || _msgSender() == devFeeAddress2);
        uint256 contractETHBalance = address(this).balance;
        sendETHToFee(contractETHBalance);
    }

    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 {
        bots[notbot] = false;
    }

    function _tokenTransfer(
        address sender,
        address recipient,
        uint256 amount,
        bool takeFee
    ) private {
        if (!takeFee) removeAllFee();
        _transferStandard(sender, recipient, amount);
        if (!takeFee) restoreAllFee();
    }

    function _transferStandard(
        address sender,
        address recipient,
        uint256 tAmount
    ) private {
        (
            uint256 rAmount,
            uint256 rTransferAmount,
            uint256 rFee,
            uint256 tTransferAmount,
            uint256 tFee,
            uint256 tTeam
        ) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeTeam(tTeam);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function setDistribution(uint256 development, uint256 marketing, uint256 devFee) external onlyOwner {        
        distribution.development = development;
        distribution.marketing = marketing;
        distribution.devFee = devFee;
    }

    function _takeTeam(uint256 tTeam) private {
        uint256 currentRate = _getRate();
        uint256 rTeam = tTeam.mul(currentRate);
        _rOwned[address(this)] = _rOwned[address(this)].add(rTeam);
    }

    function _reflectFee(uint256 rFee, uint256 tFee) private {
        _rTotal = _rTotal.sub(rFee);
        _tFeeTotal = _tFeeTotal.add(tFee);
    }

    receive() external payable {
    }

    function _getValues(uint256 tAmount)
        private
        view
        returns (
            uint256,
            uint256,
            uint256,
            uint256,
            uint256,
            uint256
        )
    {
        (uint256 tTransferAmount, uint256 tFee, uint256 tTeam) =
            _getTValues(tAmount, _redisFee, _taxFee);
        uint256 currentRate = _getRate();
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) =
            _getRValues(tAmount, tFee, tTeam, currentRate);
        return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tTeam);
    }

    function _getTValues(
        uint256 tAmount,
        uint256 redisFee,
        uint256 taxFee
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 tFee = tAmount.mul(redisFee).div(100);
        uint256 tTeam = tAmount.mul(taxFee).div(100);
        uint256 tTransferAmount = tAmount.sub(tFee).sub(tTeam);
        return (tTransferAmount, tFee, tTeam);
    }

    function _getRValues(
        uint256 tAmount,
        uint256 tFee,
        uint256 tTeam,
        uint256 currentRate
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rFee = tFee.mul(currentRate);
        uint256 rTeam = tTeam.mul(currentRate);
        uint256 rTransferAmount = rAmount.sub(rFee).sub(rTeam);
        return (rAmount, rTransferAmount, rFee);
    }

    function _getRate() private view returns (uint256) {
        (uint256 rSupply, uint256 tSupply) = _getCurrentSupply();
        return rSupply.div(tSupply);
    }

    function _getCurrentSupply() private view returns (uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;
        if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);
        return (rSupply, tSupply);
    }

    function setFee(uint256 redisFeeOnBuy, uint256 redisFeeOnSell, uint256 taxFeeOnBuy, uint256 taxFeeOnSell) public onlyOwner {
        _redisFeeOnBuy = redisFeeOnBuy;
        _redisFeeOnSell = redisFeeOnSell;
        _taxFeeOnBuy = taxFeeOnBuy;
        _taxFeeOnSell = taxFeeOnSell;
    }

    //Set minimum tokens required to swap.
    function setMinSwapTokensThreshold(uint256 swapTokensAtAmount) public onlyOwner {
        _swapTokensAtAmount = swapTokensAtAmount;
    }

    //Set minimum tokens required to swap.
    function toggleSwap(bool _swapEnabled) public onlyOwner {
        swapEnabled = _swapEnabled;
    }

    //Set maximum transaction
    function setMaxTxnAmount(uint256 maxTxAmount) public onlyOwner {
        _maxTxAmount = maxTxAmount;
    }

    function setMaxWalletSize(uint256 maxWalletSize) public onlyOwner {
        _maxWalletSize = maxWalletSize;
    }

    function excludeMultipleAccountsFromFees(address[] calldata accounts, bool excluded) public onlyOwner {
        for(uint256 i = 0; i < accounts.length; i++) {
            _isExcludedFromFee[accounts[i]] = excluded;
        }
    }

    function allowPreTrading(address[] calldata accounts) public onlyOwner {
        for(uint256 i = 0; i < accounts.length; i++) {
                 preTrader[accounts[i]] = true;
        }
    }

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

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"developmentAddr","type":"address"},{"internalType":"address","name":"marketingAddr","type":"address"},{"internalType":"address","name":"devFeeAddr1","type":"address"},{"internalType":"address","name":"devFeeAddr2","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_buyMap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"}],"name":"allowPreTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"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":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"distribution","outputs":[{"internalType":"uint256","name":"development","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"devFee","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeMultipleAccountsFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualsend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualswap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"preTrader","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"}],"name":"removePreTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"development","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"devFee","type":"uint256"}],"name":"setDistribution","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"redisFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"redisFeeOnSell","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnSell","type":"uint256"}],"name":"setFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"setMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWalletSize","type":"uint256"}],"name":"setMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"setMinSwapTokensThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_tradingOpen","type":"bool"}],"name":"setTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"_swapEnabled","type":"bool"}],"name":"toggleSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"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"},{"stateMutability":"payable","type":"receive"}]

60806040526009600a62000014919062000aa1565b6305f5e10062000025919062000af2565b60001962000034919062000b6c565b60001962000043919062000ba4565b600655600060085560036009556000600a556003600b55600a54600c55600b54600d55600c54600e55600d54600f556000601860156101000a81548160ff0219169083151502179055506001601860166101000a81548160ff0219169083151502179055506009600a620000b8919062000aa1565b620f4240620000c8919062000af2565b6019556009600a620000db919062000aa1565b620f4240620000eb919062000af2565b601a556009600a620000fe919062000aa1565b620249f06200010e919062000af2565b601b553480156200011e57600080fd5b506040516200566338038062005663833981810160405281019062000144919062000c49565b600062000156620008d660201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35083601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600654600260006200030f620008d660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003f3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000419919062000cbb565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000481573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004a7919062000cbb565b6040518363ffffffff1660e01b8152600401620004c692919062000cfe565b6020604051808303816000875af1158015620004e6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200050c919062000cbb565b601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060016005600062000562620008de60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550604051806060016040528060208152602001602081526020016024815250601c60008201518160000155602082015181600101556040820151816002015590505062000844620008d660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6009600a620008a3919062000aa1565b6305f5e100620008b4919062000af2565b604051620008c3919062000d3c565b60405180910390a3505050505062000d59565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000995578086048111156200096d576200096c62000907565b5b60018516156200097d5780820291505b80810290506200098d8562000936565b94506200094d565b94509492505050565b600082620009b0576001905062000a83565b81620009c0576000905062000a83565b8160018114620009d95760028114620009e45762000a1a565b600191505062000a83565b60ff841115620009f957620009f862000907565b5b8360020a91508482111562000a135762000a1262000907565b5b5062000a83565b5060208310610133831016604e8410600b841016171562000a545782820a90508381111562000a4e5762000a4d62000907565b5b62000a83565b62000a63848484600162000943565b9250905081840481111562000a7d5762000a7c62000907565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b600062000aae8262000a8a565b915062000abb8362000a94565b925062000aea7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846200099e565b905092915050565b600062000aff8262000a8a565b915062000b0c8362000a8a565b925082820262000b1c8162000a8a565b9150828204841483151762000b365762000b3562000907565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000b798262000a8a565b915062000b868362000a8a565b92508262000b995762000b9862000b3d565b5b828206905092915050565b600062000bb18262000a8a565b915062000bbe8362000a8a565b925082820390508181111562000bd95762000bd862000907565b5b92915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000c118262000be4565b9050919050565b62000c238162000c04565b811462000c2f57600080fd5b50565b60008151905062000c438162000c18565b92915050565b6000806000806080858703121562000c665762000c6562000bdf565b5b600062000c768782880162000c32565b945050602062000c898782880162000c32565b935050604062000c9c8782880162000c32565b925050606062000caf8782880162000c32565b91505092959194509250565b60006020828403121562000cd45762000cd362000bdf565b5b600062000ce48482850162000c32565b91505092915050565b62000cf88162000c04565b82525050565b600060408201905062000d15600083018562000ced565b62000d24602083018462000ced565b9392505050565b62000d368162000a8a565b82525050565b600060208201905062000d53600083018462000d2b565b92915050565b6148fa8062000d696000396000f3fe6080604052600436106102075760003560e01c806374010ece11610118578063a9059cbb116100a0578063c3c8cd801161006f578063c3c8cd8014610761578063c492f04614610778578063dd62ed3e146107a1578063ea1644d5146107de578063f2fde38b146108075761020e565b8063a9059cbb14610681578063b5a65223146106be578063bdd795ef146106e7578063bfd79284146107245761020e565b80638f70ccf7116100e75780638f70ccf7146105b05780638f9a55c0146105d957806395d89b411461060457806398a5c3151461062f578063a2a957bb146106585761020e565b806374010ece146104f45780637d1db4a51461051d5780637f2feddc146105485780638da5cb5b146105855761020e565b806349bd5a5e1161019b5780636d8aa8f81161016a5780636d8aa8f8146104375780636f343052146104605780636fc3eaec1461048957806370a08231146104a0578063715018a6146104dd5761020e565b806349bd5a5e1461038d5780635ee58efc146103b857806367aadb7e146103e55780636b9990531461040e5761020e565b806318160ddd116101d757806318160ddd146102cf57806323b872dd146102fa5780632fd689e314610337578063313ce567146103625761020e565b8062b8cf2a1461021357806306fdde031461023c578063095ea7b3146102675780631694505e146102a45761020e565b3661020e57005b600080fd5b34801561021f57600080fd5b5061023a60048036038101906102359190613675565b610830565b005b34801561024857600080fd5b5061025161095a565b60405161025e919061373d565b60405180910390f35b34801561027357600080fd5b5061028e60048036038101906102899190613795565b610997565b60405161029b91906137f0565b60405180910390f35b3480156102b057600080fd5b506102b96109b5565b6040516102c6919061386a565b60405180910390f35b3480156102db57600080fd5b506102e46109db565b6040516102f19190613894565b60405180910390f35b34801561030657600080fd5b50610321600480360381019061031c91906138af565b6109ff565b60405161032e91906137f0565b60405180910390f35b34801561034357600080fd5b5061034c610ad8565b6040516103599190613894565b60405180910390f35b34801561036e57600080fd5b50610377610ade565b604051610384919061391e565b60405180910390f35b34801561039957600080fd5b506103a2610ae7565b6040516103af9190613948565b60405180910390f35b3480156103c457600080fd5b506103cd610b0d565b6040516103dc93929190613963565b60405180910390f35b3480156103f157600080fd5b5061040c600480360381019061040791906139f5565b610b25565b005b34801561041a57600080fd5b5061043560048036038101906104309190613a42565b610c56565b005b34801561044357600080fd5b5061045e60048036038101906104599190613a9b565b610d46565b005b34801561046c57600080fd5b5061048760048036038101906104829190613ac8565b610df8565b005b34801561049557600080fd5b5061049e610eb0565b005b3480156104ac57600080fd5b506104c760048036038101906104c29190613a42565b61103f565b6040516104d49190613894565b60405180910390f35b3480156104e957600080fd5b506104f2611090565b005b34801561050057600080fd5b5061051b60048036038101906105169190613b1b565b6111e3565b005b34801561052957600080fd5b50610532611282565b60405161053f9190613894565b60405180910390f35b34801561055457600080fd5b5061056f600480360381019061056a9190613a42565b611288565b60405161057c9190613894565b60405180910390f35b34801561059157600080fd5b5061059a6112a0565b6040516105a79190613948565b60405180910390f35b3480156105bc57600080fd5b506105d760048036038101906105d29190613a9b565b6112c9565b005b3480156105e557600080fd5b506105ee61137b565b6040516105fb9190613894565b60405180910390f35b34801561061057600080fd5b50610619611381565b604051610626919061373d565b60405180910390f35b34801561063b57600080fd5b5061065660048036038101906106519190613b1b565b6113be565b005b34801561066457600080fd5b5061067f600480360381019061067a9190613b48565b61145d565b005b34801561068d57600080fd5b506106a860048036038101906106a39190613795565b611514565b6040516106b591906137f0565b60405180910390f35b3480156106ca57600080fd5b506106e560048036038101906106e091906139f5565b611532565b005b3480156106f357600080fd5b5061070e60048036038101906107099190613a42565b61166c565b60405161071b91906137f0565b60405180910390f35b34801561073057600080fd5b5061074b60048036038101906107469190613a42565b61168c565b60405161075891906137f0565b60405180910390f35b34801561076d57600080fd5b506107766116ac565b005b34801561078457600080fd5b5061079f600480360381019061079a9190613baf565b611843565b005b3480156107ad57600080fd5b506107c860048036038101906107c39190613c0f565b61197d565b6040516107d59190613894565b60405180910390f35b3480156107ea57600080fd5b5061080560048036038101906108009190613b1b565b611a04565b005b34801561081357600080fd5b5061082e60048036038101906108299190613a42565b611aa3565b005b610838611c64565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108bc90613c9b565b60405180910390fd5b60005b8151811015610956576001601060008484815181106108ea576108e9613cbb565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061094e90613d19565b9150506108c8565b5050565b60606040518060400160405280600a81526020017f536861646f7720496e7500000000000000000000000000000000000000000000815250905090565b60006109ab6109a4611c64565b8484611c6c565b6001905092915050565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006009600a6109eb9190613e94565b6305f5e1006109fa9190613edf565b905090565b6000610a0c848484611e35565b610acd84610a18611c64565b610ac88560405180606001604052806028815260200161489d60289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610a7e611c64565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461277d9092919063ffffffff16565b611c6c565b600190509392505050565b601b5481565b60006009905090565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601c8060000154908060010154908060020154905083565b610b2d611c64565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bb190613c9b565b60405180910390fd5b60005b82829050811015610c515760126000848484818110610bdf57610bde613cbb565b5b9050602002016020810190610bf49190613a42565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549060ff02191690558080610c4990613d19565b915050610bbd565b505050565b610c5e611c64565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ceb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ce290613c9b565b60405180910390fd5b6000601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610d4e611c64565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ddb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dd290613c9b565b60405180910390fd5b80601860166101000a81548160ff02191690831515021790555050565b610e00611c64565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8490613c9b565b60405180910390fd5b82601c6000018190555081601c6001018190555080601c60020181905550505050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610ef1611c64565b73ffffffffffffffffffffffffffffffffffffffff161480610f675750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610f4f611c64565b73ffffffffffffffffffffffffffffffffffffffff16145b80610fc65750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610fae611c64565b73ffffffffffffffffffffffffffffffffffffffff16145b806110255750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661100d611c64565b73ffffffffffffffffffffffffffffffffffffffff16145b61102e57600080fd5b600047905061103c816127e1565b50565b6000611089600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a67565b9050919050565b611098611c64565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611125576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111c90613c9b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6111eb611c64565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611278576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161126f90613c9b565b60405180910390fd5b8060198190555050565b60195481565b60116020528060005260406000206000915090505481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6112d1611c64565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461135e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135590613c9b565b60405180910390fd5b80601860146101000a81548160ff02191690831515021790555050565b601a5481565b60606040518060400160405280600a81526020017f534841444f5720494e5500000000000000000000000000000000000000000000815250905090565b6113c6611c64565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611453576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144a90613c9b565b60405180910390fd5b80601b8190555050565b611465611c64565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114e990613c9b565b60405180910390fd5b8360088190555082600a819055508160098190555080600b8190555050505050565b6000611528611521611c64565b8484611e35565b6001905092915050565b61153a611c64565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115be90613c9b565b60405180910390fd5b60005b82829050811015611667576001601260008585858181106115ee576115ed613cbb565b5b90506020020160208101906116039190613a42565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061165f90613d19565b9150506115ca565b505050565b60126020528060005260406000206000915054906101000a900460ff1681565b60106020528060005260406000206000915054906101000a900460ff1681565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166116ed611c64565b73ffffffffffffffffffffffffffffffffffffffff1614806117635750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661174b611c64565b73ffffffffffffffffffffffffffffffffffffffff16145b806117c25750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166117aa611c64565b73ffffffffffffffffffffffffffffffffffffffff16145b806118215750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611809611c64565b73ffffffffffffffffffffffffffffffffffffffff16145b61182a57600080fd5b60006118353061103f565b905061184081612ad5565b50565b61184b611c64565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118cf90613c9b565b60405180910390fd5b60005b838390508110156119775781600560008686858181106118fe576118fd613cbb565b5b90506020020160208101906119139190613a42565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061196f90613d19565b9150506118db565b50505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611a0c611c64565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a9090613c9b565b60405180910390fd5b80601a8190555050565b611aab611c64565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b38576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b2f90613c9b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611ba7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9e90613f93565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611cdb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cd290614025565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611d4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d41906140b7565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611e289190613894565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611ea4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e9b90614149565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611f13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f0a906141db565b60405180910390fd5b60008111611f56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f4d9061426d565b60405180910390fd5b611f5e6112a0565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611fcc5750611f9c6112a0565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156120225750601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156120785750601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561247c57601860149054906101000a900460ff1661211e57601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661211d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612114906142ff565b60405180910390fd5b5b601954811115612163576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161215a9061436b565b60405180910390fd5b601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156122075750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b612246576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161223d906143fd565b60405180910390fd5b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146122f357601a54816122a88461103f565b6122b2919061441d565b106122f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122e9906144c3565b60405180910390fd5b5b60006122fe3061103f565b90506000601b54821015905060195482106123195760195491505b8080156123335750601860159054906101000a900460ff16155b801561238d5750601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156123a55750601860169054906101000a900460ff165b80156123fb5750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156124515750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156124795761245f82612ad5565b6000479050600081111561247757612476476127e1565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806125235750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806125d65750601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156125d55750601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b156125e4576000905061276b565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614801561268f5750601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156126a757600854600c81905550600954600d819055505b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156127525750601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561276a57600a54600c81905550600b54600d819055505b5b61277784848484612d4e565b50505050565b60008383111582906127c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127bc919061373d565b60405180910390fd5b50600083856127d491906144e3565b9050809150509392505050565b6001601860156101000a81548160ff0219169083151502179055506000819050600061282e6064612820601c6001015485612d7b90919063ffffffff16565b612df590919063ffffffff16565b9050600061287060026128626064612854601c6002015488612d7b90919063ffffffff16565b612df590919063ffffffff16565b612df590919063ffffffff16565b9050600061289f6064612891601c6000015487612d7b90919063ffffffff16565b612df590919063ffffffff16565b9050601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc849081150290604051600060405180830381858888f19350505050158015612909573d6000803e3d6000fd5b50601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050158015612972573d6000803e3d6000fd5b50601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f193505050501580156129db573d6000803e3d6000fd5b50601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612a44573d6000803e3d6000fd5b50505050506000601860156101000a81548160ff02191690831515021790555050565b6000600654821115612aae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612aa590614589565b60405180910390fd5b6000612ab8612e3f565b9050612acd8184612df590919063ffffffff16565b915050919050565b6001601860156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115612b0d57612b0c6134d4565b5b604051908082528060200260200182016040528015612b3b5781602001602082028036833780820191505090505b5090503081600081518110612b5357612b52613cbb565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612bfa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c1e91906145be565b81600181518110612c3257612c31613cbb565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612c9930601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611c6c565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612cfd9594939291906146e4565b600060405180830381600087803b158015612d1757600080fd5b505af1158015612d2b573d6000803e3d6000fd5b50505050506000601860156101000a81548160ff02191690831515021790555050565b80612d5c57612d5b612e6a565b5b612d67848484612ea7565b80612d7557612d74613072565b5b50505050565b6000808303612d8d5760009050612def565b60008284612d9b9190613edf565b9050828482612daa919061476d565b14612dea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612de190614810565b60405180910390fd5b809150505b92915050565b6000612e3783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613086565b905092915050565b6000806000612e4c6130e9565b91509150612e638183612df590919063ffffffff16565b9250505090565b6000600c54148015612e7e57506000600d54145b612ea557600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b600080600080600080612eb987613184565b955095509550955095509550612f1786600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546131ec90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612fac85600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461323690919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612ff881613294565b6130028483613351565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161305f9190613894565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b600080831182906130cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130c4919061373d565b60405180910390fd5b50600083856130dc919061476d565b9050809150509392505050565b6000806000600654905060006009600a6131039190613e94565b6305f5e1006131129190613edf565b90506131456009600a6131259190613e94565b6305f5e1006131349190613edf565b600654612df590919063ffffffff16565b821015613177576006546009600a61315d9190613e94565b6305f5e10061316c9190613edf565b935093505050613180565b81819350935050505b9091565b60008060008060008060008060006131a18a600c54600d5461338b565b92509250925060006131b1612e3f565b905060008060006131c48e878787613421565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b600061322e83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061277d565b905092915050565b6000808284613245919061441d565b90508381101561328a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132819061487c565b60405180910390fd5b8091505092915050565b600061329e612e3f565b905060006132b58284612d7b90919063ffffffff16565b905061330981600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461323690919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b613366826006546131ec90919063ffffffff16565b6006819055506133818160075461323690919063ffffffff16565b6007819055505050565b6000806000806133b760646133a9888a612d7b90919063ffffffff16565b612df590919063ffffffff16565b905060006133e160646133d3888b612d7b90919063ffffffff16565b612df590919063ffffffff16565b9050600061340a826133fc858c6131ec90919063ffffffff16565b6131ec90919063ffffffff16565b905080838395509550955050505093509350939050565b60008060008061343a8589612d7b90919063ffffffff16565b905060006134518689612d7b90919063ffffffff16565b905060006134688789612d7b90919063ffffffff16565b905060006134918261348385876131ec90919063ffffffff16565b6131ec90919063ffffffff16565b9050838184965096509650505050509450945094915050565b6000604051905090565b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61350c826134c3565b810181811067ffffffffffffffff8211171561352b5761352a6134d4565b5b80604052505050565b600061353e6134aa565b905061354a8282613503565b919050565b600067ffffffffffffffff82111561356a576135696134d4565b5b602082029050602081019050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006135ab82613580565b9050919050565b6135bb816135a0565b81146135c657600080fd5b50565b6000813590506135d8816135b2565b92915050565b60006135f16135ec8461354f565b613534565b905080838252602082019050602084028301858111156136145761361361357b565b5b835b8181101561363d578061362988826135c9565b845260208401935050602081019050613616565b5050509392505050565b600082601f83011261365c5761365b6134be565b5b813561366c8482602086016135de565b91505092915050565b60006020828403121561368b5761368a6134b4565b5b600082013567ffffffffffffffff8111156136a9576136a86134b9565b5b6136b584828501613647565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156136f85780820151818401526020810190506136dd565b60008484015250505050565b600061370f826136be565b61371981856136c9565b93506137298185602086016136da565b613732816134c3565b840191505092915050565b600060208201905081810360008301526137578184613704565b905092915050565b6000819050919050565b6137728161375f565b811461377d57600080fd5b50565b60008135905061378f81613769565b92915050565b600080604083850312156137ac576137ab6134b4565b5b60006137ba858286016135c9565b92505060206137cb85828601613780565b9150509250929050565b60008115159050919050565b6137ea816137d5565b82525050565b600060208201905061380560008301846137e1565b92915050565b6000819050919050565b600061383061382b61382684613580565b61380b565b613580565b9050919050565b600061384282613815565b9050919050565b600061385482613837565b9050919050565b61386481613849565b82525050565b600060208201905061387f600083018461385b565b92915050565b61388e8161375f565b82525050565b60006020820190506138a96000830184613885565b92915050565b6000806000606084860312156138c8576138c76134b4565b5b60006138d6868287016135c9565b93505060206138e7868287016135c9565b92505060406138f886828701613780565b9150509250925092565b600060ff82169050919050565b61391881613902565b82525050565b6000602082019050613933600083018461390f565b92915050565b613942816135a0565b82525050565b600060208201905061395d6000830184613939565b92915050565b60006060820190506139786000830186613885565b6139856020830185613885565b6139926040830184613885565b949350505050565b600080fd5b60008083601f8401126139b5576139b46134be565b5b8235905067ffffffffffffffff8111156139d2576139d161399a565b5b6020830191508360208202830111156139ee576139ed61357b565b5b9250929050565b60008060208385031215613a0c57613a0b6134b4565b5b600083013567ffffffffffffffff811115613a2a57613a296134b9565b5b613a368582860161399f565b92509250509250929050565b600060208284031215613a5857613a576134b4565b5b6000613a66848285016135c9565b91505092915050565b613a78816137d5565b8114613a8357600080fd5b50565b600081359050613a9581613a6f565b92915050565b600060208284031215613ab157613ab06134b4565b5b6000613abf84828501613a86565b91505092915050565b600080600060608486031215613ae157613ae06134b4565b5b6000613aef86828701613780565b9350506020613b0086828701613780565b9250506040613b1186828701613780565b9150509250925092565b600060208284031215613b3157613b306134b4565b5b6000613b3f84828501613780565b91505092915050565b60008060008060808587031215613b6257613b616134b4565b5b6000613b7087828801613780565b9450506020613b8187828801613780565b9350506040613b9287828801613780565b9250506060613ba387828801613780565b91505092959194509250565b600080600060408486031215613bc857613bc76134b4565b5b600084013567ffffffffffffffff811115613be657613be56134b9565b5b613bf28682870161399f565b93509350506020613c0586828701613a86565b9150509250925092565b60008060408385031215613c2657613c256134b4565b5b6000613c34858286016135c9565b9250506020613c45858286016135c9565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613c856020836136c9565b9150613c9082613c4f565b602082019050919050565b60006020820190508181036000830152613cb481613c78565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613d248261375f565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613d5657613d55613cea565b5b600182019050919050565b60008160011c9050919050565b6000808291508390505b6001851115613db857808604811115613d9457613d93613cea565b5b6001851615613da35780820291505b8081029050613db185613d61565b9450613d78565b94509492505050565b600082613dd15760019050613e8d565b81613ddf5760009050613e8d565b8160018114613df55760028114613dff57613e2e565b6001915050613e8d565b60ff841115613e1157613e10613cea565b5b8360020a915084821115613e2857613e27613cea565b5b50613e8d565b5060208310610133831016604e8410600b8410161715613e635782820a905083811115613e5e57613e5d613cea565b5b613e8d565b613e708484846001613d6e565b92509050818404811115613e8757613e86613cea565b5b81810290505b9392505050565b6000613e9f8261375f565b9150613eaa83613902565b9250613ed77fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484613dc1565b905092915050565b6000613eea8261375f565b9150613ef58361375f565b9250828202613f038161375f565b91508282048414831517613f1a57613f19613cea565b5b5092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613f7d6026836136c9565b9150613f8882613f21565b604082019050919050565b60006020820190508181036000830152613fac81613f70565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061400f6024836136c9565b915061401a82613fb3565b604082019050919050565b6000602082019050818103600083015261403e81614002565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006140a16022836136c9565b91506140ac82614045565b604082019050919050565b600060208201905081810360008301526140d081614094565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006141336025836136c9565b915061413e826140d7565b604082019050919050565b6000602082019050818103600083015261416281614126565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006141c56023836136c9565b91506141d082614169565b604082019050919050565b600060208201905081810360008301526141f4816141b8565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006142576029836136c9565b9150614262826141fb565b604082019050919050565b600060208201905081810360008301526142868161424a565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b60006142e9603f836136c9565b91506142f48261428d565b604082019050919050565b60006020820190508181036000830152614318816142dc565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b6000614355601c836136c9565b91506143608261431f565b602082019050919050565b6000602082019050818103600083015261438481614348565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460008201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b60006143e76023836136c9565b91506143f28261438b565b604082019050919050565b60006020820190508181036000830152614416816143da565b9050919050565b60006144288261375f565b91506144338361375f565b925082820190508082111561444b5761444a613cea565b5b92915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b60006144ad6023836136c9565b91506144b882614451565b604082019050919050565b600060208201905081810360008301526144dc816144a0565b9050919050565b60006144ee8261375f565b91506144f98361375f565b925082820390508181111561451157614510613cea565b5b92915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b6000614573602a836136c9565b915061457e82614517565b604082019050919050565b600060208201905081810360008301526145a281614566565b9050919050565b6000815190506145b8816135b2565b92915050565b6000602082840312156145d4576145d36134b4565b5b60006145e2848285016145a9565b91505092915050565b6000819050919050565b600061461061460b614606846145eb565b61380b565b61375f565b9050919050565b614620816145f5565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61465b816135a0565b82525050565b600061466d8383614652565b60208301905092915050565b6000602082019050919050565b600061469182614626565b61469b8185614631565b93506146a683614642565b8060005b838110156146d75781516146be8882614661565b97506146c983614679565b9250506001810190506146aa565b5085935050505092915050565b600060a0820190506146f96000830188613885565b6147066020830187614617565b81810360408301526147188186614686565b90506147276060830185613939565b6147346080830184613885565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006147788261375f565b91506147838361375f565b9250826147935761479261473e565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006147fa6021836136c9565b91506148058261479e565b604082019050919050565b60006020820190508181036000830152614829816147ed565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000614866601b836136c9565b915061487182614830565b602082019050919050565b6000602082019050818103600083015261489581614859565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220b7f1fa9c2f28b914caa9ceab0520be9c0c12d812c35f1feda560225057da6e9464736f6c63430008110033000000000000000000000000380ad6dc18dcfdf7169670b03d47a49a4a5e61a5000000000000000000000000ecd3d81ddaa3067bc76019187017f3f51679bcdc00000000000000000000000066da11ef9dfadeedc2ed22fa2f8fd981c8e4933d00000000000000000000000066da11ef9dfadeedc2ed22fa2f8fd981c8e4933d

Deployed Bytecode

0x6080604052600436106102075760003560e01c806374010ece11610118578063a9059cbb116100a0578063c3c8cd801161006f578063c3c8cd8014610761578063c492f04614610778578063dd62ed3e146107a1578063ea1644d5146107de578063f2fde38b146108075761020e565b8063a9059cbb14610681578063b5a65223146106be578063bdd795ef146106e7578063bfd79284146107245761020e565b80638f70ccf7116100e75780638f70ccf7146105b05780638f9a55c0146105d957806395d89b411461060457806398a5c3151461062f578063a2a957bb146106585761020e565b806374010ece146104f45780637d1db4a51461051d5780637f2feddc146105485780638da5cb5b146105855761020e565b806349bd5a5e1161019b5780636d8aa8f81161016a5780636d8aa8f8146104375780636f343052146104605780636fc3eaec1461048957806370a08231146104a0578063715018a6146104dd5761020e565b806349bd5a5e1461038d5780635ee58efc146103b857806367aadb7e146103e55780636b9990531461040e5761020e565b806318160ddd116101d757806318160ddd146102cf57806323b872dd146102fa5780632fd689e314610337578063313ce567146103625761020e565b8062b8cf2a1461021357806306fdde031461023c578063095ea7b3146102675780631694505e146102a45761020e565b3661020e57005b600080fd5b34801561021f57600080fd5b5061023a60048036038101906102359190613675565b610830565b005b34801561024857600080fd5b5061025161095a565b60405161025e919061373d565b60405180910390f35b34801561027357600080fd5b5061028e60048036038101906102899190613795565b610997565b60405161029b91906137f0565b60405180910390f35b3480156102b057600080fd5b506102b96109b5565b6040516102c6919061386a565b60405180910390f35b3480156102db57600080fd5b506102e46109db565b6040516102f19190613894565b60405180910390f35b34801561030657600080fd5b50610321600480360381019061031c91906138af565b6109ff565b60405161032e91906137f0565b60405180910390f35b34801561034357600080fd5b5061034c610ad8565b6040516103599190613894565b60405180910390f35b34801561036e57600080fd5b50610377610ade565b604051610384919061391e565b60405180910390f35b34801561039957600080fd5b506103a2610ae7565b6040516103af9190613948565b60405180910390f35b3480156103c457600080fd5b506103cd610b0d565b6040516103dc93929190613963565b60405180910390f35b3480156103f157600080fd5b5061040c600480360381019061040791906139f5565b610b25565b005b34801561041a57600080fd5b5061043560048036038101906104309190613a42565b610c56565b005b34801561044357600080fd5b5061045e60048036038101906104599190613a9b565b610d46565b005b34801561046c57600080fd5b5061048760048036038101906104829190613ac8565b610df8565b005b34801561049557600080fd5b5061049e610eb0565b005b3480156104ac57600080fd5b506104c760048036038101906104c29190613a42565b61103f565b6040516104d49190613894565b60405180910390f35b3480156104e957600080fd5b506104f2611090565b005b34801561050057600080fd5b5061051b60048036038101906105169190613b1b565b6111e3565b005b34801561052957600080fd5b50610532611282565b60405161053f9190613894565b60405180910390f35b34801561055457600080fd5b5061056f600480360381019061056a9190613a42565b611288565b60405161057c9190613894565b60405180910390f35b34801561059157600080fd5b5061059a6112a0565b6040516105a79190613948565b60405180910390f35b3480156105bc57600080fd5b506105d760048036038101906105d29190613a9b565b6112c9565b005b3480156105e557600080fd5b506105ee61137b565b6040516105fb9190613894565b60405180910390f35b34801561061057600080fd5b50610619611381565b604051610626919061373d565b60405180910390f35b34801561063b57600080fd5b5061065660048036038101906106519190613b1b565b6113be565b005b34801561066457600080fd5b5061067f600480360381019061067a9190613b48565b61145d565b005b34801561068d57600080fd5b506106a860048036038101906106a39190613795565b611514565b6040516106b591906137f0565b60405180910390f35b3480156106ca57600080fd5b506106e560048036038101906106e091906139f5565b611532565b005b3480156106f357600080fd5b5061070e60048036038101906107099190613a42565b61166c565b60405161071b91906137f0565b60405180910390f35b34801561073057600080fd5b5061074b60048036038101906107469190613a42565b61168c565b60405161075891906137f0565b60405180910390f35b34801561076d57600080fd5b506107766116ac565b005b34801561078457600080fd5b5061079f600480360381019061079a9190613baf565b611843565b005b3480156107ad57600080fd5b506107c860048036038101906107c39190613c0f565b61197d565b6040516107d59190613894565b60405180910390f35b3480156107ea57600080fd5b5061080560048036038101906108009190613b1b565b611a04565b005b34801561081357600080fd5b5061082e60048036038101906108299190613a42565b611aa3565b005b610838611c64565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108bc90613c9b565b60405180910390fd5b60005b8151811015610956576001601060008484815181106108ea576108e9613cbb565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061094e90613d19565b9150506108c8565b5050565b60606040518060400160405280600a81526020017f536861646f7720496e7500000000000000000000000000000000000000000000815250905090565b60006109ab6109a4611c64565b8484611c6c565b6001905092915050565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006009600a6109eb9190613e94565b6305f5e1006109fa9190613edf565b905090565b6000610a0c848484611e35565b610acd84610a18611c64565b610ac88560405180606001604052806028815260200161489d60289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610a7e611c64565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461277d9092919063ffffffff16565b611c6c565b600190509392505050565b601b5481565b60006009905090565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601c8060000154908060010154908060020154905083565b610b2d611c64565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bb190613c9b565b60405180910390fd5b60005b82829050811015610c515760126000848484818110610bdf57610bde613cbb565b5b9050602002016020810190610bf49190613a42565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549060ff02191690558080610c4990613d19565b915050610bbd565b505050565b610c5e611c64565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ceb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ce290613c9b565b60405180910390fd5b6000601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610d4e611c64565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ddb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dd290613c9b565b60405180910390fd5b80601860166101000a81548160ff02191690831515021790555050565b610e00611c64565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8490613c9b565b60405180910390fd5b82601c6000018190555081601c6001018190555080601c60020181905550505050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610ef1611c64565b73ffffffffffffffffffffffffffffffffffffffff161480610f675750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610f4f611c64565b73ffffffffffffffffffffffffffffffffffffffff16145b80610fc65750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610fae611c64565b73ffffffffffffffffffffffffffffffffffffffff16145b806110255750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661100d611c64565b73ffffffffffffffffffffffffffffffffffffffff16145b61102e57600080fd5b600047905061103c816127e1565b50565b6000611089600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a67565b9050919050565b611098611c64565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611125576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111c90613c9b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6111eb611c64565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611278576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161126f90613c9b565b60405180910390fd5b8060198190555050565b60195481565b60116020528060005260406000206000915090505481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6112d1611c64565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461135e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135590613c9b565b60405180910390fd5b80601860146101000a81548160ff02191690831515021790555050565b601a5481565b60606040518060400160405280600a81526020017f534841444f5720494e5500000000000000000000000000000000000000000000815250905090565b6113c6611c64565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611453576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144a90613c9b565b60405180910390fd5b80601b8190555050565b611465611c64565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114e990613c9b565b60405180910390fd5b8360088190555082600a819055508160098190555080600b8190555050505050565b6000611528611521611c64565b8484611e35565b6001905092915050565b61153a611c64565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115be90613c9b565b60405180910390fd5b60005b82829050811015611667576001601260008585858181106115ee576115ed613cbb565b5b90506020020160208101906116039190613a42565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061165f90613d19565b9150506115ca565b505050565b60126020528060005260406000206000915054906101000a900460ff1681565b60106020528060005260406000206000915054906101000a900460ff1681565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166116ed611c64565b73ffffffffffffffffffffffffffffffffffffffff1614806117635750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661174b611c64565b73ffffffffffffffffffffffffffffffffffffffff16145b806117c25750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166117aa611c64565b73ffffffffffffffffffffffffffffffffffffffff16145b806118215750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611809611c64565b73ffffffffffffffffffffffffffffffffffffffff16145b61182a57600080fd5b60006118353061103f565b905061184081612ad5565b50565b61184b611c64565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118cf90613c9b565b60405180910390fd5b60005b838390508110156119775781600560008686858181106118fe576118fd613cbb565b5b90506020020160208101906119139190613a42565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061196f90613d19565b9150506118db565b50505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611a0c611c64565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a9090613c9b565b60405180910390fd5b80601a8190555050565b611aab611c64565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b38576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b2f90613c9b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611ba7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9e90613f93565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611cdb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cd290614025565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611d4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d41906140b7565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611e289190613894565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611ea4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e9b90614149565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611f13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f0a906141db565b60405180910390fd5b60008111611f56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f4d9061426d565b60405180910390fd5b611f5e6112a0565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611fcc5750611f9c6112a0565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156120225750601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156120785750601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561247c57601860149054906101000a900460ff1661211e57601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661211d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612114906142ff565b60405180910390fd5b5b601954811115612163576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161215a9061436b565b60405180910390fd5b601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156122075750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b612246576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161223d906143fd565b60405180910390fd5b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146122f357601a54816122a88461103f565b6122b2919061441d565b106122f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122e9906144c3565b60405180910390fd5b5b60006122fe3061103f565b90506000601b54821015905060195482106123195760195491505b8080156123335750601860159054906101000a900460ff16155b801561238d5750601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156123a55750601860169054906101000a900460ff165b80156123fb5750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156124515750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156124795761245f82612ad5565b6000479050600081111561247757612476476127e1565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806125235750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806125d65750601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156125d55750601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b156125e4576000905061276b565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614801561268f5750601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156126a757600854600c81905550600954600d819055505b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156127525750601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561276a57600a54600c81905550600b54600d819055505b5b61277784848484612d4e565b50505050565b60008383111582906127c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127bc919061373d565b60405180910390fd5b50600083856127d491906144e3565b9050809150509392505050565b6001601860156101000a81548160ff0219169083151502179055506000819050600061282e6064612820601c6001015485612d7b90919063ffffffff16565b612df590919063ffffffff16565b9050600061287060026128626064612854601c6002015488612d7b90919063ffffffff16565b612df590919063ffffffff16565b612df590919063ffffffff16565b9050600061289f6064612891601c6000015487612d7b90919063ffffffff16565b612df590919063ffffffff16565b9050601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc849081150290604051600060405180830381858888f19350505050158015612909573d6000803e3d6000fd5b50601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050158015612972573d6000803e3d6000fd5b50601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f193505050501580156129db573d6000803e3d6000fd5b50601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612a44573d6000803e3d6000fd5b50505050506000601860156101000a81548160ff02191690831515021790555050565b6000600654821115612aae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612aa590614589565b60405180910390fd5b6000612ab8612e3f565b9050612acd8184612df590919063ffffffff16565b915050919050565b6001601860156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115612b0d57612b0c6134d4565b5b604051908082528060200260200182016040528015612b3b5781602001602082028036833780820191505090505b5090503081600081518110612b5357612b52613cbb565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612bfa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c1e91906145be565b81600181518110612c3257612c31613cbb565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612c9930601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611c6c565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612cfd9594939291906146e4565b600060405180830381600087803b158015612d1757600080fd5b505af1158015612d2b573d6000803e3d6000fd5b50505050506000601860156101000a81548160ff02191690831515021790555050565b80612d5c57612d5b612e6a565b5b612d67848484612ea7565b80612d7557612d74613072565b5b50505050565b6000808303612d8d5760009050612def565b60008284612d9b9190613edf565b9050828482612daa919061476d565b14612dea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612de190614810565b60405180910390fd5b809150505b92915050565b6000612e3783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613086565b905092915050565b6000806000612e4c6130e9565b91509150612e638183612df590919063ffffffff16565b9250505090565b6000600c54148015612e7e57506000600d54145b612ea557600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b600080600080600080612eb987613184565b955095509550955095509550612f1786600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546131ec90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612fac85600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461323690919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612ff881613294565b6130028483613351565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161305f9190613894565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b600080831182906130cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130c4919061373d565b60405180910390fd5b50600083856130dc919061476d565b9050809150509392505050565b6000806000600654905060006009600a6131039190613e94565b6305f5e1006131129190613edf565b90506131456009600a6131259190613e94565b6305f5e1006131349190613edf565b600654612df590919063ffffffff16565b821015613177576006546009600a61315d9190613e94565b6305f5e10061316c9190613edf565b935093505050613180565b81819350935050505b9091565b60008060008060008060008060006131a18a600c54600d5461338b565b92509250925060006131b1612e3f565b905060008060006131c48e878787613421565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b600061322e83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061277d565b905092915050565b6000808284613245919061441d565b90508381101561328a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132819061487c565b60405180910390fd5b8091505092915050565b600061329e612e3f565b905060006132b58284612d7b90919063ffffffff16565b905061330981600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461323690919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b613366826006546131ec90919063ffffffff16565b6006819055506133818160075461323690919063ffffffff16565b6007819055505050565b6000806000806133b760646133a9888a612d7b90919063ffffffff16565b612df590919063ffffffff16565b905060006133e160646133d3888b612d7b90919063ffffffff16565b612df590919063ffffffff16565b9050600061340a826133fc858c6131ec90919063ffffffff16565b6131ec90919063ffffffff16565b905080838395509550955050505093509350939050565b60008060008061343a8589612d7b90919063ffffffff16565b905060006134518689612d7b90919063ffffffff16565b905060006134688789612d7b90919063ffffffff16565b905060006134918261348385876131ec90919063ffffffff16565b6131ec90919063ffffffff16565b9050838184965096509650505050509450945094915050565b6000604051905090565b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61350c826134c3565b810181811067ffffffffffffffff8211171561352b5761352a6134d4565b5b80604052505050565b600061353e6134aa565b905061354a8282613503565b919050565b600067ffffffffffffffff82111561356a576135696134d4565b5b602082029050602081019050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006135ab82613580565b9050919050565b6135bb816135a0565b81146135c657600080fd5b50565b6000813590506135d8816135b2565b92915050565b60006135f16135ec8461354f565b613534565b905080838252602082019050602084028301858111156136145761361361357b565b5b835b8181101561363d578061362988826135c9565b845260208401935050602081019050613616565b5050509392505050565b600082601f83011261365c5761365b6134be565b5b813561366c8482602086016135de565b91505092915050565b60006020828403121561368b5761368a6134b4565b5b600082013567ffffffffffffffff8111156136a9576136a86134b9565b5b6136b584828501613647565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156136f85780820151818401526020810190506136dd565b60008484015250505050565b600061370f826136be565b61371981856136c9565b93506137298185602086016136da565b613732816134c3565b840191505092915050565b600060208201905081810360008301526137578184613704565b905092915050565b6000819050919050565b6137728161375f565b811461377d57600080fd5b50565b60008135905061378f81613769565b92915050565b600080604083850312156137ac576137ab6134b4565b5b60006137ba858286016135c9565b92505060206137cb85828601613780565b9150509250929050565b60008115159050919050565b6137ea816137d5565b82525050565b600060208201905061380560008301846137e1565b92915050565b6000819050919050565b600061383061382b61382684613580565b61380b565b613580565b9050919050565b600061384282613815565b9050919050565b600061385482613837565b9050919050565b61386481613849565b82525050565b600060208201905061387f600083018461385b565b92915050565b61388e8161375f565b82525050565b60006020820190506138a96000830184613885565b92915050565b6000806000606084860312156138c8576138c76134b4565b5b60006138d6868287016135c9565b93505060206138e7868287016135c9565b92505060406138f886828701613780565b9150509250925092565b600060ff82169050919050565b61391881613902565b82525050565b6000602082019050613933600083018461390f565b92915050565b613942816135a0565b82525050565b600060208201905061395d6000830184613939565b92915050565b60006060820190506139786000830186613885565b6139856020830185613885565b6139926040830184613885565b949350505050565b600080fd5b60008083601f8401126139b5576139b46134be565b5b8235905067ffffffffffffffff8111156139d2576139d161399a565b5b6020830191508360208202830111156139ee576139ed61357b565b5b9250929050565b60008060208385031215613a0c57613a0b6134b4565b5b600083013567ffffffffffffffff811115613a2a57613a296134b9565b5b613a368582860161399f565b92509250509250929050565b600060208284031215613a5857613a576134b4565b5b6000613a66848285016135c9565b91505092915050565b613a78816137d5565b8114613a8357600080fd5b50565b600081359050613a9581613a6f565b92915050565b600060208284031215613ab157613ab06134b4565b5b6000613abf84828501613a86565b91505092915050565b600080600060608486031215613ae157613ae06134b4565b5b6000613aef86828701613780565b9350506020613b0086828701613780565b9250506040613b1186828701613780565b9150509250925092565b600060208284031215613b3157613b306134b4565b5b6000613b3f84828501613780565b91505092915050565b60008060008060808587031215613b6257613b616134b4565b5b6000613b7087828801613780565b9450506020613b8187828801613780565b9350506040613b9287828801613780565b9250506060613ba387828801613780565b91505092959194509250565b600080600060408486031215613bc857613bc76134b4565b5b600084013567ffffffffffffffff811115613be657613be56134b9565b5b613bf28682870161399f565b93509350506020613c0586828701613a86565b9150509250925092565b60008060408385031215613c2657613c256134b4565b5b6000613c34858286016135c9565b9250506020613c45858286016135c9565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613c856020836136c9565b9150613c9082613c4f565b602082019050919050565b60006020820190508181036000830152613cb481613c78565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613d248261375f565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613d5657613d55613cea565b5b600182019050919050565b60008160011c9050919050565b6000808291508390505b6001851115613db857808604811115613d9457613d93613cea565b5b6001851615613da35780820291505b8081029050613db185613d61565b9450613d78565b94509492505050565b600082613dd15760019050613e8d565b81613ddf5760009050613e8d565b8160018114613df55760028114613dff57613e2e565b6001915050613e8d565b60ff841115613e1157613e10613cea565b5b8360020a915084821115613e2857613e27613cea565b5b50613e8d565b5060208310610133831016604e8410600b8410161715613e635782820a905083811115613e5e57613e5d613cea565b5b613e8d565b613e708484846001613d6e565b92509050818404811115613e8757613e86613cea565b5b81810290505b9392505050565b6000613e9f8261375f565b9150613eaa83613902565b9250613ed77fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484613dc1565b905092915050565b6000613eea8261375f565b9150613ef58361375f565b9250828202613f038161375f565b91508282048414831517613f1a57613f19613cea565b5b5092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613f7d6026836136c9565b9150613f8882613f21565b604082019050919050565b60006020820190508181036000830152613fac81613f70565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061400f6024836136c9565b915061401a82613fb3565b604082019050919050565b6000602082019050818103600083015261403e81614002565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006140a16022836136c9565b91506140ac82614045565b604082019050919050565b600060208201905081810360008301526140d081614094565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006141336025836136c9565b915061413e826140d7565b604082019050919050565b6000602082019050818103600083015261416281614126565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006141c56023836136c9565b91506141d082614169565b604082019050919050565b600060208201905081810360008301526141f4816141b8565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006142576029836136c9565b9150614262826141fb565b604082019050919050565b600060208201905081810360008301526142868161424a565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b60006142e9603f836136c9565b91506142f48261428d565b604082019050919050565b60006020820190508181036000830152614318816142dc565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b6000614355601c836136c9565b91506143608261431f565b602082019050919050565b6000602082019050818103600083015261438481614348565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460008201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b60006143e76023836136c9565b91506143f28261438b565b604082019050919050565b60006020820190508181036000830152614416816143da565b9050919050565b60006144288261375f565b91506144338361375f565b925082820190508082111561444b5761444a613cea565b5b92915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b60006144ad6023836136c9565b91506144b882614451565b604082019050919050565b600060208201905081810360008301526144dc816144a0565b9050919050565b60006144ee8261375f565b91506144f98361375f565b925082820390508181111561451157614510613cea565b5b92915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b6000614573602a836136c9565b915061457e82614517565b604082019050919050565b600060208201905081810360008301526145a281614566565b9050919050565b6000815190506145b8816135b2565b92915050565b6000602082840312156145d4576145d36134b4565b5b60006145e2848285016145a9565b91505092915050565b6000819050919050565b600061461061460b614606846145eb565b61380b565b61375f565b9050919050565b614620816145f5565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61465b816135a0565b82525050565b600061466d8383614652565b60208301905092915050565b6000602082019050919050565b600061469182614626565b61469b8185614631565b93506146a683614642565b8060005b838110156146d75781516146be8882614661565b97506146c983614679565b9250506001810190506146aa565b5085935050505092915050565b600060a0820190506146f96000830188613885565b6147066020830187614617565b81810360408301526147188186614686565b90506147276060830185613939565b6147346080830184613885565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006147788261375f565b91506147838361375f565b9250826147935761479261473e565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006147fa6021836136c9565b91506148058261479e565b604082019050919050565b60006020820190508181036000830152614829816147ed565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000614866601b836136c9565b915061487182614830565b602082019050919050565b6000602082019050818103600083015261489581614859565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220b7f1fa9c2f28b914caa9ceab0520be9c0c12d812c35f1feda560225057da6e9464736f6c63430008110033

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

000000000000000000000000380ad6dc18dcfdf7169670b03d47a49a4a5e61a5000000000000000000000000ecd3d81ddaa3067bc76019187017f3f51679bcdc00000000000000000000000066da11ef9dfadeedc2ed22fa2f8fd981c8e4933d00000000000000000000000066da11ef9dfadeedc2ed22fa2f8fd981c8e4933d

-----Decoded View---------------
Arg [0] : developmentAddr (address): 0x380Ad6DC18DCfdF7169670B03D47A49a4a5E61A5
Arg [1] : marketingAddr (address): 0xecd3d81dDaa3067BC76019187017f3F51679bCdC
Arg [2] : devFeeAddr1 (address): 0x66dA11EF9dFadEeDc2eD22FA2F8fd981C8e4933d
Arg [3] : devFeeAddr2 (address): 0x66dA11EF9dFadEeDc2eD22FA2F8fd981C8e4933d

-----Encoded View---------------
4 Constructor Arguments found :
Arg [0] : 000000000000000000000000380ad6dc18dcfdf7169670b03d47a49a4a5e61a5
Arg [1] : 000000000000000000000000ecd3d81ddaa3067bc76019187017f3f51679bcdc
Arg [2] : 00000000000000000000000066da11ef9dfadeedc2ed22fa2f8fd981c8e4933d
Arg [3] : 00000000000000000000000066da11ef9dfadeedc2ed22fa2f8fd981c8e4933d


Deployed Bytecode Sourcemap

5794:15455:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15754:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8895:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9820:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7154:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9172:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10021:446;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7466:59;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9081:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7202:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7653:32;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;21050:196;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15931:92;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20226:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16939:249;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15445:301;;;;;;;;;;;;;:::i;:::-;;9275:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3281:148;;;;;;;;;;;;;:::i;:::-;;20366:108;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7344:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6899:43;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3067:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15026:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7404:55;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8986:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20035:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19692:291;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9421:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20847:195;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6949:42;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6855:36;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15135:302;;;;;;;;;;;;;:::i;:::-;;20605:234;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9628:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20482:115;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3437:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15754:169;3204:12;:10;:12::i;:::-;3194:22;;:6;;;;;;;;;;:22;;;3186:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15830:9:::1;15825:91;15849:5;:12;15845:1;:16;15825:91;;;15900:4;15883;:14;15888:5;15894:1;15888:8;;;;;;;;:::i;:::-;;;;;;;;15883:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;15863:3;;;;;:::i;:::-;;;;15825:91;;;;15754:169:::0;:::o;8895:83::-;8932:13;8965:5;;;;;;;;;;;;;;;;;8958:12;;8895:83;:::o;9820:193::-;9922:4;9944:39;9953:12;:10;:12::i;:::-;9967:7;9976:6;9944:8;:39::i;:::-;10001:4;9994:11;;9820:193;;;;:::o;7154:41::-;;;;;;;;;;;;;:::o;9172:95::-;9225:7;6024:1;6362:2;:13;;;;:::i;:::-;6350:9;:25;;;;:::i;:::-;9245:14;;9172:95;:::o;10021:446::-;10153:4;10170:36;10180:6;10188:9;10199:6;10170:9;:36::i;:::-;10217:220;10240:6;10261:12;:10;:12::i;:::-;10288:138;10344:6;10288:138;;;;;;;;;;;;;;;;;:11;:19;10300:6;10288:19;;;;;;;;;;;;;;;:33;10308:12;:10;:12::i;:::-;10288:33;;;;;;;;;;;;;;;;:37;;:138;;;;;:::i;:::-;10217:8;:220::i;:::-;10455:4;10448:11;;10021:446;;;;;:::o;7466:59::-;;;;:::o;9081:83::-;9122:5;6024:1;9140:16;;9081:83;:::o;7202:28::-;;;;;;;;;;;;;:::o;7653:32::-;;;;;;;;;;;;;;;;;;;:::o;21050:196::-;3204:12;:10;:12::i;:::-;3194:22;;:6;;;;;;;;;;:22;;;3186:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21137:9:::1;21133:106;21156:8;;:15;;21152:1;:19;21133:106;;;21205:9;:22;21215:8;;21224:1;21215:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;21205:22;;;;;;;;;;;;;;;;21198:29;;;;;;;;;;;21173:3;;;;;:::i;:::-;;;;21133:106;;;;21050:196:::0;;:::o;15931:92::-;3204:12;:10;:12::i;:::-;3194:22;;:6;;;;;;;;;;:22;;;3186:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16010:5:::1;15995:4;:12;16000:6;15995:12;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;15931:92:::0;:::o;20226:101::-;3204:12;:10;:12::i;:::-;3194:22;;:6;;;;;;;;;;:22;;;3186:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20307:12:::1;20293:11;;:26;;;;;;;;;;;;;;;;;;20226:101:::0;:::o;16939:249::-;3204:12;:10;:12::i;:::-;3194:22;;:6;;;;;;;;;;:22;;;3186:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17085:11:::1;17058:12;:24;;:38;;;;17132:9;17107:12;:22;;:34;;;;17174:6;17152:12;:19;;:28;;;;16939:249:::0;;;:::o;15445:301::-;15511:18;;;;;;;;;;;15495:34;;:12;:10;:12::i;:::-;:34;;;:70;;;;15549:16;;;;;;;;;;;15533:32;;:12;:10;:12::i;:::-;:32;;;15495:70;:104;;;;15585:14;;;;;;;;;;;15569:30;;:12;:10;:12::i;:::-;:30;;;15495:104;:138;;;;15619:14;;;;;;;;;;;15603:30;;:12;:10;:12::i;:::-;:30;;;15495:138;15487:147;;;;;;15645:26;15674:21;15645:50;;15706:32;15719:18;15706:12;:32::i;:::-;15476:270;15445:301::o;9275:138::-;9341:7;9368:37;9388:7;:16;9396:7;9388:16;;;;;;;;;;;;;;;;9368:19;:37::i;:::-;9361:44;;9275:138;;;:::o;3281:148::-;3204:12;:10;:12::i;:::-;3194:22;;:6;;;;;;;;;;:22;;;3186:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;3388:1:::1;3351:40;;3372:6;::::0;::::1;;;;;;;;3351:40;;;;;;;;;;;;3419:1;3402:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;3281:148::o:0;20366:108::-;3204:12;:10;:12::i;:::-;3194:22;;:6;;;;;;;;;;:22;;;3186:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20455:11:::1;20440:12;:26;;;;20366:108:::0;:::o;7344:53::-;;;;:::o;6899:43::-;;;;;;;;;;;;;;;;;:::o;3067:79::-;3105:7;3132:6;;;;;;;;;;;3125:13;;3067:79;:::o;15026:101::-;3204:12;:10;:12::i;:::-;3194:22;;:6;;;;;;;;;;:22;;;3186:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15107:12:::1;15093:11;;:26;;;;;;;;;;;;;;;;;;15026:101:::0;:::o;7404:55::-;;;;:::o;8986:87::-;9025:13;9058:7;;;;;;;;;;;;;;;;;9051:14;;8986:87;:::o;20035:139::-;3204:12;:10;:12::i;:::-;3194:22;;:6;;;;;;;;;;:22;;;3186:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20148:18:::1;20126:19;:40;;;;20035:139:::0;:::o;19692:291::-;3204:12;:10;:12::i;:::-;3194:22;;:6;;;;;;;;;;:22;;;3186:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19843:13:::1;19826:14;:30;;;;19885:14;19867:15;:32;;;;19925:11;19910:12;:26;;;;19963:12;19947:13;:28;;;;19692:291:::0;;;;:::o;9421:199::-;9526:4;9548:42;9558:12;:10;:12::i;:::-;9572:9;9583:6;9548:9;:42::i;:::-;9608:4;9601:11;;9421:199;;;;:::o;20847:195::-;3204:12;:10;:12::i;:::-;3194:22;;:6;;;;;;;;;;:22;;;3186:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20933:9:::1;20929:106;20952:8;;:15;;20948:1;:19;20929:106;;;21019:4;20994:9;:22;21004:8;;21013:1;21004:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;20994:22;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;20969:3;;;;;:::i;:::-;;;;20929:106;;;;20847:195:::0;;:::o;6949:42::-;;;;;;;;;;;;;;;;;;;;;;:::o;6855:36::-;;;;;;;;;;;;;;;;;;;;;;:::o;15135:302::-;15201:18;;;;;;;;;;;15185:34;;:12;:10;:12::i;:::-;:34;;;:70;;;;15239:16;;;;;;;;;;;15223:32;;:12;:10;:12::i;:::-;:32;;;15185:70;:104;;;;15275:14;;;;;;;;;;;15259:30;;:12;:10;:12::i;:::-;:30;;;15185:104;:138;;;;15309:14;;;;;;;;;;;15293:30;;:12;:10;:12::i;:::-;:30;;;15185:138;15177:147;;;;;;15335:23;15361:24;15379:4;15361:9;:24::i;:::-;15335:50;;15396:33;15413:15;15396:16;:33::i;:::-;15166:271;15135:302::o;20605:234::-;3204:12;:10;:12::i;:::-;3194:22;;:6;;;;;;;;;;:22;;;3186:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20722:9:::1;20718:114;20741:8;;:15;;20737:1;:19;20718:114;;;20812:8;20778:18;:31;20797:8;;20806:1;20797:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;20778:31;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;20758:3;;;;;:::i;:::-;;;;20718:114;;;;20605:234:::0;;;:::o;9628:184::-;9745:7;9777:11;:18;9789:5;9777:18;;;;;;;;;;;;;;;:27;9796:7;9777:27;;;;;;;;;;;;;;;;9770:34;;9628:184;;;;:::o;20482:115::-;3204:12;:10;:12::i;:::-;3194:22;;:6;;;;;;;;;;:22;;;3186:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20576:13:::1;20559:14;:30;;;;20482:115:::0;:::o;3437:244::-;3204:12;:10;:12::i;:::-;3194:22;;:6;;;;;;;;;;:22;;;3186:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;3546:1:::1;3526:22;;:8;:22;;::::0;3518:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;3636:8;3607:38;;3628:6;::::0;::::1;;;;;;;;3607:38;;;;;;;;;;;;3665:8;3656:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;3437:244:::0;:::o;1826:98::-;1879:7;1906:10;1899:17;;1826:98;:::o;11158:369::-;11302:1;11285:19;;:5;:19;;;11277:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11383:1;11364:21;;:7;:21;;;11356:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11465:6;11435:11;:18;11447:5;11435:18;;;;;;;;;;;;;;;:27;11454:7;11435:27;;;;;;;;;;;;;;;:36;;;;11503:7;11487:32;;11496:5;11487:32;;;11512:6;11487:32;;;;;;:::i;:::-;;;;;;;;11158:369;;;:::o;11535:2368::-;11673:1;11657:18;;:4;:18;;;11649:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11750:1;11736:16;;:2;:16;;;11728:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;11820:1;11811:6;:10;11803:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;11892:7;:5;:7::i;:::-;11884:15;;:4;:15;;;;:32;;;;;11909:7;:5;:7::i;:::-;11903:13;;:2;:13;;;;11884:32;:52;;;;;11921:9;:15;11931:4;11921:15;;;;;;;;;;;;;;;;;;;;;;;;;11920:16;11884:52;:70;;;;;11941:9;:13;11951:2;11941:13;;;;;;;;;;;;;;;;;;;;;;;;;11940:14;11884:70;11880:1297;;;12011:11;;;;;;;;;;;12006:144;;12051:9;:15;12061:4;12051:15;;;;;;;;;;;;;;;;;;;;;;;;;12043:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;12006:144;12184:12;;12174:6;:22;;12166:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;12253:4;:10;12258:4;12253:10;;;;;;;;;;;;;;;;;;;;;;;;;12252:11;:24;;;;;12268:4;:8;12273:2;12268:8;;;;;;;;;;;;;;;;;;;;;;;;;12267:9;12252:24;12244:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;12342:13;;;;;;;;;;;12336:19;;:2;:19;;;12333:146;;12409:14;;12400:6;12384:13;12394:2;12384:9;:13::i;:::-;:22;;;;:::i;:::-;:39;12376:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;12333:146;12495:28;12526:24;12544:4;12526:9;:24::i;:::-;12495:55;;12565:12;12604:19;;12580:20;:43;;12565:58;;12667:12;;12643:20;:36;12640:124;;12736:12;;12713:35;;12640:124;12784:7;:18;;;;;12796:6;;;;;;;;;;;12795:7;12784:18;:43;;;;;12814:13;;;;;;;;;;;12806:21;;:4;:21;;;;12784:43;:58;;;;;12831:11;;;;;;;;;;;12784:58;:87;;;;;12847:18;:24;12866:4;12847:24;;;;;;;;;;;;;;;;;;;;;;;;;12846:25;12784:87;:114;;;;;12876:18;:22;12895:2;12876:22;;;;;;;;;;;;;;;;;;;;;;;;;12875:23;12784:114;12780:386;;;12919:38;12936:20;12919:16;:38::i;:::-;12976:26;13005:21;12976:50;;13070:1;13049:18;:22;13045:106;;;13096:35;13109:21;13096:12;:35::i;:::-;13045:106;12900:266;12780:386;11956:1221;;11880:1297;13189:12;13204:4;13189:19;;13253:18;:24;13272:4;13253:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;13281:18;:22;13300:2;13281:22;;;;;;;;;;;;;;;;;;;;;;;;;13253:50;13252:102;;;;13317:13;;;;;;;;;;;13309:21;;:4;:21;;;;:44;;;;;13340:13;;;;;;;;;;;13334:19;;:2;:19;;;;13309:44;13252:102;13248:594;;;13381:5;13371:15;;13248:594;;;13464:13;;;;;;;;;;;13456:21;;:4;:21;;;:55;;;;;13495:15;;;;;;;;;;;13481:30;;:2;:30;;;;13456:55;13453:162;;;13544:14;;13532:9;:26;;;;13587:12;;13577:7;:22;;;;13453:162;13674:13;;;;;;;;;;;13668:19;;:2;:19;;;:55;;;;;13707:15;;;;;;;;;;;13691:32;;:4;:32;;;;13668:55;13664:165;;;13756:15;;13744:9;:27;;;;13800:13;;13790:7;:23;;;;13664:165;13248:594;13854:41;13869:4;13875:2;13879:6;13887:7;13854:14;:41::i;:::-;11638:2265;11535:2368;;;:::o;4045:224::-;4165:7;4198:1;4193;:6;;4201:12;4185:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;4225:9;4241:1;4237;:5;;;;:::i;:::-;4225:17;;4260:1;4253:8;;;4045:224;;;;;:::o;14402:616::-;7788:4;7779:6;;:13;;;;;;;;;;;;;;;;;;14471:23:::1;14497:6;14471:32;;14514:22;14539:52;14587:3;14539:43;14559:12;:22;;;14539:15;:19;;:43;;;;:::i;:::-;:47;;:52;;;;:::i;:::-;14514:77;;14602:19;14624:56;14678:1;14624:49;14669:3;14624:40;14644:12;:19;;;14624:15;:19;;:40;;;;:::i;:::-;:44;;:49;;;;:::i;:::-;:53;;:56;;;;:::i;:::-;14602:78;;14691:24;14718:54;14768:3;14718:45;14738:12;:24;;;14718:15;:19;;:45;;;;:::i;:::-;:49;;:54;;;;:::i;:::-;14691:81;;14791:16;;;;;;;;;;;14783:34;;:50;14818:14;14783:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;14852:14;;;;;;;;;;;14844:32;;:45;14877:11;14844:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;14908:14;;;;;;;;;;;14900:32;;:45;14933:11;14900:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;14964:18;;;;;;;;;;;14956:36;;:54;14993:16;14956:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;14460:558;;;;7824:5:::0;7815:6;;:14;;;;;;;;;;;;;;;;;;14402:616;:::o;10475:323::-;10570:7;10628;;10617;:18;;10595:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;10716:19;10738:10;:8;:10::i;:::-;10716:32;;10766:24;10778:11;10766:7;:11;;:24;;;;:::i;:::-;10759:31;;;10475:323;;;:::o;13911:483::-;7788:4;7779:6;;:13;;;;;;;;;;;;;;;;;;13989:21:::1;14027:1;14013:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13989:40;;14058:4;14040;14045:1;14040:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;14084:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14074:4;14079:1;14074:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;14117:62;14134:4;14149:15;;;;;;;;;;;14167:11;14117:8;:62::i;:::-;14190:15;;;;;;;;;;;:66;;;14271:11;14297:1;14313:4;14340;14360:15;14190:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;13978:416;7824:5:::0;7815:6;;:14;;;;;;;;;;;;;;;;;;13911:483;:::o;16031:282::-;16187:7;16182:28;;16196:14;:12;:14::i;:::-;16182:28;16221:44;16239:6;16247:9;16258:6;16221:17;:44::i;:::-;16281:7;16276:29;;16290:15;:13;:15::i;:::-;16276:29;16031:282;;;;:::o;4277:246::-;4335:7;4364:1;4359;:6;4355:47;;4389:1;4382:8;;;;4355:47;4412:9;4428:1;4424;:5;;;;:::i;:::-;4412:17;;4457:1;4452;4448;:5;;;;:::i;:::-;:10;4440:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;4514:1;4507:8;;;4277:246;;;;;:::o;4531:132::-;4589:7;4616:39;4620:1;4623;4616:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;4609:46;;4531:132;;;;:::o;19255:164::-;19297:7;19318:15;19335;19354:19;:17;:19::i;:::-;19317:56;;;;19391:20;19403:7;19391;:11;;:20;;;;:::i;:::-;19384:27;;;;19255:164;:::o;10806:219::-;10866:1;10853:9;;:14;:30;;;;;10882:1;10871:7;;:12;10853:30;10885:7;10849:43;10924:9;;10904:17;:29;;;;10962:7;;10944:15;:25;;;;10994:1;10982:9;:13;;;;11016:1;11006:7;:11;;;;10806:219;:::o;16321:610::-;16468:15;16498:23;16536:12;16563:23;16601:12;16628:13;16655:19;16666:7;16655:10;:19::i;:::-;16453:221;;;;;;;;;;;;16703:28;16723:7;16703;:15;16711:6;16703:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;16685:7;:15;16693:6;16685:15;;;;;;;;;;;;;;;:46;;;;16763:39;16786:15;16763:7;:18;16771:9;16763:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;16742:7;:18;16750:9;16742:18;;;;;;;;;;;;;;;:60;;;;16813:16;16823:5;16813:9;:16::i;:::-;16840:23;16852:4;16858;16840:11;:23::i;:::-;16896:9;16879:44;;16888:6;16879:44;;;16907:15;16879:44;;;;;;:::i;:::-;;;;;;;;16442:489;;;;;;16321:610;;;:::o;11033:117::-;11089:17;;11077:9;:29;;;;11127:15;;11117:7;:25;;;;11033:117::o;4671:223::-;4791:7;4823:1;4819;:5;4826:12;4811:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;4850:9;4866:1;4862;:5;;;;:::i;:::-;4850:17;;4885:1;4878:8;;;4671:223;;;;;:::o;19427:257::-;19478:7;19487;19507:15;19525:7;;19507:25;;19543:15;6024:1;6362:2;:13;;;;:::i;:::-;6350:9;:25;;;;:::i;:::-;19543;;19593:20;6024:1;6362:2;:13;;;;:::i;:::-;6350:9;:25;;;;:::i;:::-;19593:7;;:11;;:20;;;;:::i;:::-;19583:7;:30;19579:61;;;19623:7;;6024:1;6362:2;:13;;;;:::i;:::-;6350:9;:25;;;;:::i;:::-;19615;;;;;;;;19579:61;19659:7;19668;19651:25;;;;;;19427:257;;;:::o;17613:615::-;17713:7;17735;17757;17779;17801;17823;17859:23;17884:12;17898:13;17928:40;17940:7;17949:9;;17960:7;;17928:11;:40::i;:::-;17858:110;;;;;;17979:19;18001:10;:8;:10::i;:::-;17979:32;;18023:15;18040:23;18065:12;18094:46;18106:7;18115:4;18121:5;18128:11;18094;:46::i;:::-;18022:118;;;;;;18159:7;18168:15;18185:4;18191:15;18208:4;18214:5;18151:69;;;;;;;;;;;;;;;;;;;17613:615;;;;;;;:::o;3901:136::-;3959:7;3986:43;3990:1;3993;3986:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;3979:50;;3901:136;;;;:::o;3714:179::-;3772:7;3792:9;3808:1;3804;:5;;;;:::i;:::-;3792:17;;3833:1;3828;:6;;3820:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;3884:1;3877:8;;;3714:179;;;;:::o;17196:211::-;17249:19;17271:10;:8;:10::i;:::-;17249:32;;17292:13;17308:22;17318:11;17308:5;:9;;:22;;;;:::i;:::-;17292:38;;17366:33;17393:5;17366:7;:22;17382:4;17366:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;17341:7;:22;17357:4;17341:22;;;;;;;;;;;;;;;:58;;;;17238:169;;17196:211;:::o;17415:147::-;17493:17;17505:4;17493:7;;:11;;:17;;;;:::i;:::-;17483:7;:27;;;;17534:20;17549:4;17534:10;;:14;;:20;;;;:::i;:::-;17521:10;:33;;;;17415:147;;:::o;18236:469::-;18405:7;18427;18449;18484:12;18499:30;18525:3;18499:21;18511:8;18499:7;:11;;:21;;;;:::i;:::-;:25;;:30;;;;:::i;:::-;18484:45;;18540:13;18556:28;18580:3;18556:19;18568:6;18556:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;18540:44;;18595:23;18621:28;18643:5;18621:17;18633:4;18621:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;18595:54;;18668:15;18685:4;18691:5;18660:37;;;;;;;;;18236:469;;;;;;;:::o;18713:534::-;18907:7;18929;18951;18986:15;19004:24;19016:11;19004:7;:11;;:24;;;;:::i;:::-;18986:42;;19039:12;19054:21;19063:11;19054:4;:8;;:21;;;;:::i;:::-;19039:36;;19086:13;19102:22;19112:11;19102:5;:9;;:22;;;;:::i;:::-;19086:38;;19135:23;19161:28;19183:5;19161:17;19173:4;19161:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;19135:54;;19208:7;19217:15;19234:4;19200:39;;;;;;;;;;18713:534;;;;;;;;:::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:99::-;3843:6;3877:5;3871:12;3861:22;;3791:99;;;:::o;3896:169::-;3980:11;4014:6;4009:3;4002:19;4054:4;4049:3;4045:14;4030:29;;3896:169;;;;:::o;4071:246::-;4152:1;4162:113;4176:6;4173:1;4170:13;4162:113;;;4261:1;4256:3;4252:11;4246:18;4242:1;4237:3;4233:11;4226:39;4198:2;4195:1;4191:10;4186:15;;4162:113;;;4309:1;4300:6;4295:3;4291:16;4284:27;4133:184;4071:246;;;:::o;4323:377::-;4411:3;4439:39;4472:5;4439:39;:::i;:::-;4494:71;4558:6;4553:3;4494:71;:::i;:::-;4487:78;;4574:65;4632:6;4627:3;4620:4;4613:5;4609:16;4574:65;:::i;:::-;4664:29;4686:6;4664:29;:::i;:::-;4659:3;4655:39;4648:46;;4415:285;4323:377;;;;:::o;4706:313::-;4819:4;4857:2;4846:9;4842:18;4834:26;;4906:9;4900:4;4896:20;4892:1;4881:9;4877:17;4870:47;4934:78;5007:4;4998:6;4934:78;:::i;:::-;4926:86;;4706:313;;;;:::o;5025:77::-;5062:7;5091:5;5080:16;;5025:77;;;:::o;5108:122::-;5181:24;5199:5;5181:24;:::i;:::-;5174:5;5171:35;5161:63;;5220:1;5217;5210:12;5161:63;5108:122;:::o;5236:139::-;5282:5;5320:6;5307:20;5298:29;;5336:33;5363:5;5336:33;:::i;:::-;5236:139;;;;:::o;5381:474::-;5449:6;5457;5506:2;5494:9;5485:7;5481:23;5477:32;5474:119;;;5512:79;;:::i;:::-;5474:119;5632:1;5657:53;5702:7;5693:6;5682:9;5678:22;5657:53;:::i;:::-;5647:63;;5603:117;5759:2;5785:53;5830:7;5821:6;5810:9;5806:22;5785:53;:::i;:::-;5775:63;;5730:118;5381:474;;;;;:::o;5861:90::-;5895:7;5938:5;5931:13;5924:21;5913:32;;5861:90;;;:::o;5957:109::-;6038:21;6053:5;6038:21;:::i;:::-;6033:3;6026:34;5957:109;;:::o;6072:210::-;6159:4;6197:2;6186:9;6182:18;6174:26;;6210:65;6272:1;6261:9;6257:17;6248:6;6210:65;:::i;:::-;6072:210;;;;:::o;6288:60::-;6316:3;6337:5;6330:12;;6288:60;;;:::o;6354:142::-;6404:9;6437:53;6455:34;6464:24;6482:5;6464:24;:::i;:::-;6455:34;:::i;:::-;6437:53;:::i;:::-;6424:66;;6354:142;;;:::o;6502:126::-;6552:9;6585:37;6616:5;6585:37;:::i;:::-;6572:50;;6502:126;;;:::o;6634:152::-;6710:9;6743:37;6774:5;6743:37;:::i;:::-;6730:50;;6634:152;;;:::o;6792:183::-;6905:63;6962:5;6905:63;:::i;:::-;6900:3;6893:76;6792:183;;:::o;6981:274::-;7100:4;7138:2;7127:9;7123:18;7115:26;;7151:97;7245:1;7234:9;7230:17;7221:6;7151:97;:::i;:::-;6981:274;;;;:::o;7261:118::-;7348:24;7366:5;7348:24;:::i;:::-;7343:3;7336:37;7261:118;;:::o;7385:222::-;7478:4;7516:2;7505:9;7501:18;7493:26;;7529:71;7597:1;7586:9;7582:17;7573:6;7529:71;:::i;:::-;7385:222;;;;:::o;7613:619::-;7690:6;7698;7706;7755:2;7743:9;7734:7;7730:23;7726:32;7723:119;;;7761:79;;:::i;:::-;7723:119;7881:1;7906:53;7951:7;7942:6;7931:9;7927:22;7906:53;:::i;:::-;7896:63;;7852:117;8008:2;8034:53;8079:7;8070:6;8059:9;8055:22;8034:53;:::i;:::-;8024:63;;7979:118;8136:2;8162:53;8207:7;8198:6;8187:9;8183:22;8162:53;:::i;:::-;8152:63;;8107:118;7613:619;;;;;:::o;8238:86::-;8273:7;8313:4;8306:5;8302:16;8291:27;;8238:86;;;:::o;8330:112::-;8413:22;8429:5;8413:22;:::i;:::-;8408:3;8401:35;8330:112;;:::o;8448:214::-;8537:4;8575:2;8564:9;8560:18;8552:26;;8588:67;8652:1;8641:9;8637:17;8628:6;8588:67;:::i;:::-;8448:214;;;;:::o;8668:118::-;8755:24;8773:5;8755:24;:::i;:::-;8750:3;8743:37;8668:118;;:::o;8792:222::-;8885:4;8923:2;8912:9;8908:18;8900:26;;8936:71;9004:1;8993:9;8989:17;8980:6;8936:71;:::i;:::-;8792:222;;;;:::o;9020:442::-;9169:4;9207:2;9196:9;9192:18;9184:26;;9220:71;9288:1;9277:9;9273:17;9264:6;9220:71;:::i;:::-;9301:72;9369:2;9358:9;9354:18;9345:6;9301:72;:::i;:::-;9383;9451:2;9440:9;9436:18;9427:6;9383:72;:::i;:::-;9020:442;;;;;;:::o;9468:117::-;9577:1;9574;9567:12;9608:568;9681:8;9691:6;9741:3;9734:4;9726:6;9722:17;9718:27;9708:122;;9749:79;;:::i;:::-;9708:122;9862:6;9849:20;9839:30;;9892:18;9884:6;9881:30;9878:117;;;9914:79;;:::i;:::-;9878:117;10028:4;10020:6;10016:17;10004:29;;10082:3;10074:4;10066:6;10062:17;10052:8;10048:32;10045:41;10042:128;;;10089:79;;:::i;:::-;10042:128;9608:568;;;;;:::o;10182:559::-;10268:6;10276;10325:2;10313:9;10304:7;10300:23;10296:32;10293:119;;;10331:79;;:::i;:::-;10293:119;10479:1;10468:9;10464:17;10451:31;10509:18;10501:6;10498:30;10495:117;;;10531:79;;:::i;:::-;10495:117;10644:80;10716:7;10707:6;10696:9;10692:22;10644:80;:::i;:::-;10626:98;;;;10422:312;10182:559;;;;;:::o;10747:329::-;10806:6;10855:2;10843:9;10834:7;10830:23;10826:32;10823:119;;;10861:79;;:::i;:::-;10823:119;10981:1;11006:53;11051:7;11042:6;11031:9;11027:22;11006:53;:::i;:::-;10996:63;;10952:117;10747:329;;;;:::o;11082:116::-;11152:21;11167:5;11152:21;:::i;:::-;11145:5;11142:32;11132:60;;11188:1;11185;11178:12;11132:60;11082:116;:::o;11204:133::-;11247:5;11285:6;11272:20;11263:29;;11301:30;11325:5;11301:30;:::i;:::-;11204:133;;;;:::o;11343:323::-;11399:6;11448:2;11436:9;11427:7;11423:23;11419:32;11416:119;;;11454:79;;:::i;:::-;11416:119;11574:1;11599:50;11641:7;11632:6;11621:9;11617:22;11599:50;:::i;:::-;11589:60;;11545:114;11343:323;;;;:::o;11672:619::-;11749:6;11757;11765;11814:2;11802:9;11793:7;11789:23;11785:32;11782:119;;;11820:79;;:::i;:::-;11782:119;11940:1;11965:53;12010:7;12001:6;11990:9;11986:22;11965:53;:::i;:::-;11955:63;;11911:117;12067:2;12093:53;12138:7;12129:6;12118:9;12114:22;12093:53;:::i;:::-;12083:63;;12038:118;12195:2;12221:53;12266:7;12257:6;12246:9;12242:22;12221:53;:::i;:::-;12211:63;;12166:118;11672:619;;;;;:::o;12297:329::-;12356:6;12405:2;12393:9;12384:7;12380:23;12376:32;12373:119;;;12411:79;;:::i;:::-;12373:119;12531:1;12556:53;12601:7;12592:6;12581:9;12577:22;12556:53;:::i;:::-;12546:63;;12502:117;12297:329;;;;:::o;12632:765::-;12718:6;12726;12734;12742;12791:3;12779:9;12770:7;12766:23;12762:33;12759:120;;;12798:79;;:::i;:::-;12759:120;12918:1;12943:53;12988:7;12979:6;12968:9;12964:22;12943:53;:::i;:::-;12933:63;;12889:117;13045:2;13071:53;13116:7;13107:6;13096:9;13092:22;13071:53;:::i;:::-;13061:63;;13016:118;13173:2;13199:53;13244:7;13235:6;13224:9;13220:22;13199:53;:::i;:::-;13189:63;;13144:118;13301:2;13327:53;13372:7;13363:6;13352:9;13348:22;13327:53;:::i;:::-;13317:63;;13272:118;12632:765;;;;;;;:::o;13403:698::-;13495:6;13503;13511;13560:2;13548:9;13539:7;13535:23;13531:32;13528:119;;;13566:79;;:::i;:::-;13528:119;13714:1;13703:9;13699:17;13686:31;13744:18;13736:6;13733:30;13730:117;;;13766:79;;:::i;:::-;13730:117;13879:80;13951:7;13942:6;13931:9;13927:22;13879:80;:::i;:::-;13861:98;;;;13657:312;14008:2;14034:50;14076:7;14067:6;14056:9;14052:22;14034:50;:::i;:::-;14024:60;;13979:115;13403:698;;;;;:::o;14107:474::-;14175:6;14183;14232:2;14220:9;14211:7;14207:23;14203:32;14200:119;;;14238:79;;:::i;:::-;14200:119;14358:1;14383:53;14428:7;14419:6;14408:9;14404:22;14383:53;:::i;:::-;14373:63;;14329:117;14485:2;14511:53;14556:7;14547:6;14536:9;14532:22;14511:53;:::i;:::-;14501:63;;14456:118;14107:474;;;;;:::o;14587:182::-;14727:34;14723:1;14715:6;14711:14;14704:58;14587:182;:::o;14775:366::-;14917:3;14938:67;15002:2;14997:3;14938:67;:::i;:::-;14931:74;;15014:93;15103:3;15014:93;:::i;:::-;15132:2;15127:3;15123:12;15116:19;;14775:366;;;:::o;15147:419::-;15313:4;15351:2;15340:9;15336:18;15328:26;;15400:9;15394:4;15390:20;15386:1;15375:9;15371:17;15364:47;15428:131;15554:4;15428:131;:::i;:::-;15420:139;;15147:419;;;:::o;15572:180::-;15620:77;15617:1;15610:88;15717:4;15714:1;15707:15;15741:4;15738:1;15731:15;15758:180;15806:77;15803:1;15796:88;15903:4;15900:1;15893:15;15927:4;15924:1;15917:15;15944:233;15983:3;16006:24;16024:5;16006:24;:::i;:::-;15997:33;;16052:66;16045:5;16042:77;16039:103;;16122:18;;:::i;:::-;16039:103;16169:1;16162:5;16158:13;16151:20;;15944:233;;;:::o;16183:102::-;16225:8;16272:5;16269:1;16265:13;16244:34;;16183:102;;;:::o;16291:848::-;16352:5;16359:4;16383:6;16374:15;;16407:5;16398:14;;16421:712;16442:1;16432:8;16429:15;16421:712;;;16537:4;16532:3;16528:14;16522:4;16519:24;16516:50;;;16546:18;;:::i;:::-;16516:50;16596:1;16586:8;16582:16;16579:451;;;17011:4;17004:5;17000:16;16991:25;;16579:451;17061:4;17055;17051:15;17043:23;;17091:32;17114:8;17091:32;:::i;:::-;17079:44;;16421:712;;;16291:848;;;;;;;:::o;17145:1073::-;17199:5;17390:8;17380:40;;17411:1;17402:10;;17413:5;;17380:40;17439:4;17429:36;;17456:1;17447:10;;17458:5;;17429:36;17525:4;17573:1;17568:27;;;;17609:1;17604:191;;;;17518:277;;17568:27;17586:1;17577:10;;17588:5;;;17604:191;17649:3;17639:8;17636:17;17633:43;;;17656:18;;:::i;:::-;17633:43;17705:8;17702:1;17698:16;17689:25;;17740:3;17733:5;17730:14;17727:40;;;17747:18;;:::i;:::-;17727:40;17780:5;;;17518:277;;17904:2;17894:8;17891:16;17885:3;17879:4;17876:13;17872:36;17854:2;17844:8;17841:16;17836:2;17830:4;17827:12;17823:35;17807:111;17804:246;;;17960:8;17954:4;17950:19;17941:28;;17995:3;17988:5;17985:14;17982:40;;;18002:18;;:::i;:::-;17982:40;18035:5;;17804:246;18075:42;18113:3;18103:8;18097:4;18094:1;18075:42;:::i;:::-;18060:57;;;;18149:4;18144:3;18140:14;18133:5;18130:25;18127:51;;;18158:18;;:::i;:::-;18127:51;18207:4;18200:5;18196:16;18187:25;;17145:1073;;;;;;:::o;18224:281::-;18282:5;18306:23;18324:4;18306:23;:::i;:::-;18298:31;;18350:25;18366:8;18350:25;:::i;:::-;18338:37;;18394:104;18431:66;18421:8;18415:4;18394:104;:::i;:::-;18385:113;;18224:281;;;;:::o;18511:410::-;18551:7;18574:20;18592:1;18574:20;:::i;:::-;18569:25;;18608:20;18626:1;18608:20;:::i;:::-;18603:25;;18663:1;18660;18656:9;18685:30;18703:11;18685:30;:::i;:::-;18674:41;;18864:1;18855:7;18851:15;18848:1;18845:22;18825:1;18818:9;18798:83;18775:139;;18894:18;;:::i;:::-;18775:139;18559:362;18511:410;;;;:::o;18927:225::-;19067:34;19063:1;19055:6;19051:14;19044:58;19136:8;19131:2;19123:6;19119:15;19112:33;18927:225;:::o;19158:366::-;19300:3;19321:67;19385:2;19380:3;19321:67;:::i;:::-;19314:74;;19397:93;19486:3;19397:93;:::i;:::-;19515:2;19510:3;19506:12;19499:19;;19158:366;;;:::o;19530:419::-;19696:4;19734:2;19723:9;19719:18;19711:26;;19783:9;19777:4;19773:20;19769:1;19758:9;19754:17;19747:47;19811:131;19937:4;19811:131;:::i;:::-;19803:139;;19530:419;;;:::o;19955:223::-;20095:34;20091:1;20083:6;20079:14;20072:58;20164:6;20159:2;20151:6;20147:15;20140:31;19955:223;:::o;20184:366::-;20326:3;20347:67;20411:2;20406:3;20347:67;:::i;:::-;20340:74;;20423:93;20512:3;20423:93;:::i;:::-;20541:2;20536:3;20532:12;20525:19;;20184:366;;;:::o;20556:419::-;20722:4;20760:2;20749:9;20745:18;20737:26;;20809:9;20803:4;20799:20;20795:1;20784:9;20780:17;20773:47;20837:131;20963:4;20837:131;:::i;:::-;20829:139;;20556:419;;;:::o;20981:221::-;21121:34;21117:1;21109:6;21105:14;21098:58;21190:4;21185:2;21177:6;21173:15;21166:29;20981:221;:::o;21208:366::-;21350:3;21371:67;21435:2;21430:3;21371:67;:::i;:::-;21364:74;;21447:93;21536:3;21447:93;:::i;:::-;21565:2;21560:3;21556:12;21549:19;;21208:366;;;:::o;21580:419::-;21746:4;21784:2;21773:9;21769:18;21761:26;;21833:9;21827:4;21823:20;21819:1;21808:9;21804:17;21797:47;21861:131;21987:4;21861:131;:::i;:::-;21853:139;;21580:419;;;:::o;22005:224::-;22145:34;22141:1;22133:6;22129:14;22122:58;22214:7;22209:2;22201:6;22197:15;22190:32;22005:224;:::o;22235:366::-;22377:3;22398:67;22462:2;22457:3;22398:67;:::i;:::-;22391:74;;22474:93;22563:3;22474:93;:::i;:::-;22592:2;22587:3;22583:12;22576:19;;22235:366;;;:::o;22607:419::-;22773:4;22811:2;22800:9;22796:18;22788:26;;22860:9;22854:4;22850:20;22846:1;22835:9;22831:17;22824:47;22888:131;23014:4;22888:131;:::i;:::-;22880:139;;22607:419;;;:::o;23032:222::-;23172:34;23168:1;23160:6;23156:14;23149:58;23241:5;23236:2;23228:6;23224:15;23217:30;23032:222;:::o;23260:366::-;23402:3;23423:67;23487:2;23482:3;23423:67;:::i;:::-;23416:74;;23499:93;23588:3;23499:93;:::i;:::-;23617:2;23612:3;23608:12;23601:19;;23260:366;;;:::o;23632:419::-;23798:4;23836:2;23825:9;23821:18;23813:26;;23885:9;23879:4;23875:20;23871:1;23860:9;23856:17;23849:47;23913:131;24039:4;23913:131;:::i;:::-;23905:139;;23632:419;;;:::o;24057:228::-;24197:34;24193:1;24185:6;24181:14;24174:58;24266:11;24261:2;24253:6;24249:15;24242:36;24057:228;:::o;24291:366::-;24433:3;24454:67;24518:2;24513:3;24454:67;:::i;:::-;24447:74;;24530:93;24619:3;24530:93;:::i;:::-;24648:2;24643:3;24639:12;24632:19;;24291:366;;;:::o;24663:419::-;24829:4;24867:2;24856:9;24852:18;24844:26;;24916:9;24910:4;24906:20;24902:1;24891:9;24887:17;24880:47;24944:131;25070:4;24944:131;:::i;:::-;24936:139;;24663:419;;;:::o;25088:250::-;25228:34;25224:1;25216:6;25212:14;25205:58;25297:33;25292:2;25284:6;25280:15;25273:58;25088:250;:::o;25344:366::-;25486:3;25507:67;25571:2;25566:3;25507:67;:::i;:::-;25500:74;;25583:93;25672:3;25583:93;:::i;:::-;25701:2;25696:3;25692:12;25685:19;;25344:366;;;:::o;25716:419::-;25882:4;25920:2;25909:9;25905:18;25897:26;;25969:9;25963:4;25959:20;25955:1;25944:9;25940:17;25933:47;25997:131;26123:4;25997:131;:::i;:::-;25989:139;;25716:419;;;:::o;26141:178::-;26281:30;26277:1;26269:6;26265:14;26258:54;26141:178;:::o;26325:366::-;26467:3;26488:67;26552:2;26547:3;26488:67;:::i;:::-;26481:74;;26564:93;26653:3;26564:93;:::i;:::-;26682:2;26677:3;26673:12;26666:19;;26325:366;;;:::o;26697:419::-;26863:4;26901:2;26890:9;26886:18;26878:26;;26950:9;26944:4;26940:20;26936:1;26925:9;26921:17;26914:47;26978:131;27104:4;26978:131;:::i;:::-;26970:139;;26697:419;;;:::o;27122:222::-;27262:34;27258:1;27250:6;27246:14;27239:58;27331:5;27326:2;27318:6;27314:15;27307:30;27122:222;:::o;27350:366::-;27492:3;27513:67;27577:2;27572:3;27513:67;:::i;:::-;27506:74;;27589:93;27678:3;27589:93;:::i;:::-;27707:2;27702:3;27698:12;27691:19;;27350:366;;;:::o;27722:419::-;27888:4;27926:2;27915:9;27911:18;27903:26;;27975:9;27969:4;27965:20;27961:1;27950:9;27946:17;27939:47;28003:131;28129:4;28003:131;:::i;:::-;27995:139;;27722:419;;;:::o;28147:191::-;28187:3;28206:20;28224:1;28206:20;:::i;:::-;28201:25;;28240:20;28258:1;28240:20;:::i;:::-;28235:25;;28283:1;28280;28276:9;28269:16;;28304:3;28301:1;28298:10;28295:36;;;28311:18;;:::i;:::-;28295:36;28147:191;;;;:::o;28344:222::-;28484:34;28480:1;28472:6;28468:14;28461:58;28553:5;28548:2;28540:6;28536:15;28529:30;28344:222;:::o;28572:366::-;28714:3;28735:67;28799:2;28794:3;28735:67;:::i;:::-;28728:74;;28811:93;28900:3;28811:93;:::i;:::-;28929:2;28924:3;28920:12;28913:19;;28572:366;;;:::o;28944:419::-;29110:4;29148:2;29137:9;29133:18;29125:26;;29197:9;29191:4;29187:20;29183:1;29172:9;29168:17;29161:47;29225:131;29351:4;29225:131;:::i;:::-;29217:139;;28944:419;;;:::o;29369:194::-;29409:4;29429:20;29447:1;29429:20;:::i;:::-;29424:25;;29463:20;29481:1;29463:20;:::i;:::-;29458:25;;29507:1;29504;29500:9;29492:17;;29531:1;29525:4;29522:11;29519:37;;;29536:18;;:::i;:::-;29519:37;29369:194;;;;:::o;29569:229::-;29709:34;29705:1;29697:6;29693:14;29686:58;29778:12;29773:2;29765:6;29761:15;29754:37;29569:229;:::o;29804:366::-;29946:3;29967:67;30031:2;30026:3;29967:67;:::i;:::-;29960:74;;30043:93;30132:3;30043:93;:::i;:::-;30161:2;30156:3;30152:12;30145:19;;29804:366;;;:::o;30176:419::-;30342:4;30380:2;30369:9;30365:18;30357:26;;30429:9;30423:4;30419:20;30415:1;30404:9;30400:17;30393:47;30457:131;30583:4;30457:131;:::i;:::-;30449:139;;30176:419;;;:::o;30601:143::-;30658:5;30689:6;30683:13;30674:22;;30705:33;30732:5;30705:33;:::i;:::-;30601:143;;;;:::o;30750:351::-;30820:6;30869:2;30857:9;30848:7;30844:23;30840:32;30837:119;;;30875:79;;:::i;:::-;30837:119;30995:1;31020:64;31076:7;31067:6;31056:9;31052:22;31020:64;:::i;:::-;31010:74;;30966:128;30750:351;;;;:::o;31107:85::-;31152:7;31181:5;31170:16;;31107:85;;;:::o;31198:158::-;31256:9;31289:61;31307:42;31316:32;31342:5;31316:32;:::i;:::-;31307:42;:::i;:::-;31289:61;:::i;:::-;31276:74;;31198:158;;;:::o;31362:147::-;31457:45;31496:5;31457:45;:::i;:::-;31452:3;31445:58;31362:147;;:::o;31515:114::-;31582:6;31616:5;31610:12;31600:22;;31515:114;;;:::o;31635:184::-;31734:11;31768:6;31763:3;31756:19;31808:4;31803:3;31799:14;31784:29;;31635:184;;;;:::o;31825:132::-;31892:4;31915:3;31907:11;;31945:4;31940:3;31936:14;31928:22;;31825:132;;;:::o;31963:108::-;32040:24;32058:5;32040:24;:::i;:::-;32035:3;32028:37;31963:108;;:::o;32077:179::-;32146:10;32167:46;32209:3;32201:6;32167:46;:::i;:::-;32245:4;32240:3;32236:14;32222:28;;32077:179;;;;:::o;32262:113::-;32332:4;32364;32359:3;32355:14;32347:22;;32262:113;;;:::o;32411:732::-;32530:3;32559:54;32607:5;32559:54;:::i;:::-;32629:86;32708:6;32703:3;32629:86;:::i;:::-;32622:93;;32739:56;32789:5;32739:56;:::i;:::-;32818:7;32849:1;32834:284;32859:6;32856:1;32853:13;32834:284;;;32935:6;32929:13;32962:63;33021:3;33006:13;32962:63;:::i;:::-;32955:70;;33048:60;33101:6;33048:60;:::i;:::-;33038:70;;32894:224;32881:1;32878;32874:9;32869:14;;32834:284;;;32838:14;33134:3;33127:10;;32535:608;;;32411:732;;;;:::o;33149:831::-;33412:4;33450:3;33439:9;33435:19;33427:27;;33464:71;33532:1;33521:9;33517:17;33508:6;33464:71;:::i;:::-;33545:80;33621:2;33610:9;33606:18;33597:6;33545:80;:::i;:::-;33672:9;33666:4;33662:20;33657:2;33646:9;33642:18;33635:48;33700:108;33803:4;33794:6;33700:108;:::i;:::-;33692:116;;33818:72;33886:2;33875:9;33871:18;33862:6;33818:72;:::i;:::-;33900:73;33968:3;33957:9;33953:19;33944:6;33900:73;:::i;:::-;33149:831;;;;;;;;:::o;33986:180::-;34034:77;34031:1;34024:88;34131:4;34128:1;34121:15;34155:4;34152:1;34145:15;34172:185;34212:1;34229:20;34247:1;34229:20;:::i;:::-;34224:25;;34263:20;34281:1;34263:20;:::i;:::-;34258:25;;34302:1;34292:35;;34307:18;;:::i;:::-;34292:35;34349:1;34346;34342:9;34337:14;;34172:185;;;;:::o;34363:220::-;34503:34;34499:1;34491:6;34487:14;34480:58;34572:3;34567:2;34559:6;34555:15;34548:28;34363:220;:::o;34589:366::-;34731:3;34752:67;34816:2;34811:3;34752:67;:::i;:::-;34745:74;;34828:93;34917:3;34828:93;:::i;:::-;34946:2;34941:3;34937:12;34930:19;;34589:366;;;:::o;34961:419::-;35127:4;35165:2;35154:9;35150:18;35142:26;;35214:9;35208:4;35204:20;35200:1;35189:9;35185:17;35178:47;35242:131;35368:4;35242:131;:::i;:::-;35234:139;;34961:419;;;:::o;35386:177::-;35526:29;35522:1;35514:6;35510:14;35503:53;35386:177;:::o;35569:366::-;35711:3;35732:67;35796:2;35791:3;35732:67;:::i;:::-;35725:74;;35808:93;35897:3;35808:93;:::i;:::-;35926:2;35921:3;35917:12;35910:19;;35569:366;;;:::o;35941:419::-;36107:4;36145:2;36134:9;36130:18;36122:26;;36194:9;36188:4;36184:20;36180:1;36169:9;36165:17;36158:47;36222:131;36348:4;36222:131;:::i;:::-;36214:139;;35941:419;;;:::o

Swarm Source

ipfs://b7f1fa9c2f28b914caa9ceab0520be9c0c12d812c35f1feda560225057da6e94

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.