ETH Price: $3,122.52 (-7.71%)

Contract

0x156DEe62A465a05Bc2138C1eb13ab2D4977BF643
 

Overview

ETH Balance

3 wei

Eth Value

Less Than $0.01 (@ $3,122.52/ETH)

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Approve152469862022-07-31 0:21:04836 days ago1659226864IN
0x156DEe62...4977BF643
0 ETH0.0002922711.71198736
Approve147295682022-05-07 11:35:03920 days ago1651923303IN
0x156DEe62...4977BF643
0 ETH0.0013412128.39208392
Approve147184942022-05-05 17:19:51922 days ago1651771191IN
0x156DEe62...4977BF643
0 ETH0.0031658867.01853079
Approve147174282022-05-05 13:09:26922 days ago1651756166IN
0x156DEe62...4977BF643
0 ETH0.0026078355.20502762
Approve147171942022-05-05 12:11:19922 days ago1651752679IN
0x156DEe62...4977BF643
0 ETH0.0042807290.618356
Approve147171802022-05-05 12:08:50922 days ago1651752530IN
0x156DEe62...4977BF643
0 ETH0.00580849122.95972132
Approve147171242022-05-05 11:55:57922 days ago1651751757IN
0x156DEe62...4977BF643
0 ETH0.0015817133.48331713
Approve147171052022-05-05 11:51:48922 days ago1651751508IN
0x156DEe62...4977BF643
0 ETH0.0014651231.01523996
Approve147170952022-05-05 11:49:40922 days ago1651751380IN
0x156DEe62...4977BF643
0 ETH0.0014608530.92467911
Approve147169822022-05-05 11:25:56922 days ago1651749956IN
0x156DEe62...4977BF643
0 ETH0.0016712435.37858674
Approve147168472022-05-05 10:53:06922 days ago1651747986IN
0x156DEe62...4977BF643
0 ETH0.0012431826.31685776
Approve147166882022-05-05 10:19:24922 days ago1651745964IN
0x156DEe62...4977BF643
0 ETH0.0021119744.70824914
Approve147166042022-05-05 9:58:14922 days ago1651744694IN
0x156DEe62...4977BF643
0 ETH0.0015468632.74541655
Approve147165712022-05-05 9:51:27922 days ago1651744287IN
0x156DEe62...4977BF643
0 ETH0.0012490726.44161633
Approve147161892022-05-05 8:27:56922 days ago1651739276IN
0x156DEe62...4977BF643
0 ETH0.0014566530.83590993
Approve147161852022-05-05 8:27:17922 days ago1651739237IN
0x156DEe62...4977BF643
0 ETH0.0017679537.42583316
Approve147161442022-05-05 8:16:56922 days ago1651738616IN
0x156DEe62...4977BF643
0 ETH0.0020210542.78358619
Approve147161132022-05-05 8:08:03922 days ago1651738083IN
0x156DEe62...4977BF643
0 ETH0.0015432532.6689923
Approve147160942022-05-05 8:04:37922 days ago1651737877IN
0x156DEe62...4977BF643
0 ETH0.0037791280
Approve147160942022-05-05 8:04:37922 days ago1651737877IN
0x156DEe62...4977BF643
0 ETH0.0037791280
Approve147160942022-05-05 8:04:37922 days ago1651737877IN
0x156DEe62...4977BF643
0 ETH0.0037791280
Approve147160942022-05-05 8:04:37922 days ago1651737877IN
0x156DEe62...4977BF643
0 ETH0.0037791280
Approve147160942022-05-05 8:04:37922 days ago1651737877IN
0x156DEe62...4977BF643
0 ETH0.0037791280
Approve147160302022-05-05 7:47:36922 days ago1651736856IN
0x156DEe62...4977BF643
0 ETH0.0016928335.83560029
Approve147160302022-05-05 7:47:36922 days ago1651736856IN
0x156DEe62...4977BF643
0 ETH0.0016928335.83560029
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
147163372022-05-05 9:01:49922 days ago1651741309
0x156DEe62...4977BF643
2 wei
147163372022-05-05 9:01:49922 days ago1651741309
0x156DEe62...4977BF643
2 wei
147163372022-05-05 9:01:49922 days ago1651741309
0x156DEe62...4977BF643
2 wei
147162772022-05-05 8:49:14922 days ago1651740554
0x156DEe62...4977BF643
249 wei
147162772022-05-05 8:49:14922 days ago1651740554
0x156DEe62...4977BF643
249 wei
147162772022-05-05 8:49:14922 days ago1651740554
0x156DEe62...4977BF643
249 wei
147162742022-05-05 8:48:22922 days ago1651740502
0x156DEe62...4977BF643
0 ETH
147162742022-05-05 8:48:22922 days ago1651740502
0x156DEe62...4977BF643
0 ETH
147162742022-05-05 8:48:22922 days ago1651740502
0x156DEe62...4977BF643
0 ETH
147162282022-05-05 8:35:56922 days ago1651739756
0x156DEe62...4977BF643
0 ETH
147162282022-05-05 8:35:56922 days ago1651739756
0x156DEe62...4977BF643
0 ETH
147162282022-05-05 8:35:56922 days ago1651739756
0x156DEe62...4977BF643
0 ETH
147160702022-05-05 7:57:03922 days ago1651737423
0x156DEe62...4977BF643
0 ETH
147160702022-05-05 7:57:03922 days ago1651737423
0x156DEe62...4977BF643
0 ETH
147160702022-05-05 7:57:03922 days ago1651737423
0x156DEe62...4977BF643
0 ETH
147160622022-05-05 7:54:33922 days ago1651737273
0x156DEe62...4977BF643
0.00000002 ETH
147160622022-05-05 7:54:33922 days ago1651737273
0x156DEe62...4977BF643
0.00000002 ETH
147160622022-05-05 7:54:33922 days ago1651737273
0x156DEe62...4977BF643
0.00000002 ETH
147160272022-05-05 7:46:45922 days ago1651736805
0x156DEe62...4977BF643
0.00000249 ETH
147160272022-05-05 7:46:45922 days ago1651736805
0x156DEe62...4977BF643
0.00000249 ETH
147160272022-05-05 7:46:45922 days ago1651736805
0x156DEe62...4977BF643
0.00000249 ETH
147159982022-05-05 7:40:50922 days ago1651736450
0x156DEe62...4977BF643
0.00000249 ETH
147159982022-05-05 7:40:50922 days ago1651736450
0x156DEe62...4977BF643
0.00000249 ETH
147159982022-05-05 7:40:50922 days ago1651736450
0x156DEe62...4977BF643
0.00000249 ETH
147159982022-05-05 7:40:50922 days ago1651736450
0x156DEe62...4977BF643
0.00024901 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
berserk

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-04-19
*/

/**
 *Submitted for verification at Etherscan.io on 2021-08-31
*/

/**
 
 * BERSERK - $BERSRK
 * TELEGRAM: https://t.me/berserketh
 * WEBSITE: https://www.berserketh.com/
 * TWITTER: https://twitter.com/BerserkETH
 
 * BERSERK - Welcome to the beginning of a new meta ! 
 
SPDX-License-Identifier: UNLICENSED 
*/
pragma solidity ^0.8.4;

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

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

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

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

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if(a == 0) {
            return 0;
        }
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }

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

    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        return c;
    }

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

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

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

}  

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

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

contract berserk is Context, IERC20, Ownable {
    using SafeMath for uint256;
    mapping (address => uint256) private _rOwned;
    mapping (address => uint256) private _tOwned;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _isExcludedFromFee;
    mapping (address => bool) private _isExcluded;
    address[] private _excluded;
    mapping (address => bool) private _isBlackListedBot;
    address[] private _blackListedBots;
    
    mapping (address => User) private cooldown;
    uint256 private constant MAX = ~uint256(0);
    uint256 private constant _tTotal = 1e12 * 10**9;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    string private constant _name = unicode"BERSERK";
    string private constant _symbol = unicode"BERSRK";
    uint8 private constant _decimals = 9;
    uint256 private _taxFee = 1;
    uint256 private _teamFee = 7;
	uint256 private _totalFees;
    uint256 private _launchTime;
    uint256 private _launchedAt;
    uint256 private _previousTaxFee = _taxFee;
    uint256 private _previousteamFee = _teamFee;
    uint256 private _maxBuyAmount;
	uint256 public  _maxWallet = _tTotal * 2 / 100; //max wallet 2%
    address payable private _FeeAddress;
    address payable private _FeeAddress2;
	address payable private _FeeAddress3;
    IUniswapV2Router02 private uniswapV2Router;
    address private uniswapV2Pair;
    bool private tradingOpen;
    bool private _cooldownEnabled = true;
    bool private inSwap = false;
    uint256 private buyLimitEnd;
    struct User {
        uint256 buy;
        uint256 sell;
        bool exists;
    }

	
	

    event MaxBuyAmountUpdated(uint _maxBuyAmount);
    event CooldownEnabledUpdated(bool _cooldown);

    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }
    constructor (address payable FeeAddress, address payable FeeAddress2, address payable FeeAddress3) {
        _FeeAddress = FeeAddress;
        _FeeAddress2 = FeeAddress2;
		_FeeAddress3 = FeeAddress3;
        _rOwned[_msgSender()] = _rTotal;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        
        _isExcludedFromFee[FeeAddress] = true;
        _isExcludedFromFee[FeeAddress2] = true;
		_isExcludedFromFee[FeeAddress3] = true;
        
        _isBlackListedBot[address(0x00000000003b3cc22aF3aE1EAc0440BcEe416B40)] = true;
        _blackListedBots.push(address(0x00000000003b3cc22aF3aE1EAc0440BcEe416B40));

        _isBlackListedBot[address(0x1d6E8BAC6EA3730825bde4B005ed7B2B39A2932d)] = true;
        _blackListedBots.push(address(0x1d6E8BAC6EA3730825bde4B005ed7B2B39A2932d));

        _isBlackListedBot[address(0x000000000035B5e5ad9019092C665357240f594e)] = true;
        _blackListedBots.push(address(0x000000000035B5e5ad9019092C665357240f594e));

        _isBlackListedBot[address(0x1315c6C26123383a2Eb369a53Fb72C4B9f227EeC)] = true;
        _blackListedBots.push(address(0x1315c6C26123383a2Eb369a53Fb72C4B9f227EeC));

        _isBlackListedBot[address(0xD8E83d3d1a91dFefafd8b854511c44685a20fa3D)] = true;
        _blackListedBots.push(address(0xD8E83d3d1a91dFefafd8b854511c44685a20fa3D));

        _isBlackListedBot[address(0x5136a9A5D077aE4247C7706b577F77153C32A01C)] = true;
        _blackListedBots.push(address(0x5136a9A5D077aE4247C7706b577F77153C32A01C));

        _isBlackListedBot[address(0x0E388888309d64e97F97a4740EC9Ed3DADCA71be)] = true;
        _blackListedBots.push(address(0x0E388888309d64e97F97a4740EC9Ed3DADCA71be));
		
		_isBlackListedBot[address(0xA3b3385a4f33085bF8e3b33D010c3038D03c4F1F)] = true;
        _blackListedBots.push(address(0xA3b3385a4f33085bF8e3b33D010c3038D03c4F1F));
		
		_isBlackListedBot[address(0x9B07830d15e8d1bACAEbd001BeD122d79290286A)] = true;
        _blackListedBots.push(address(0x9B07830d15e8d1bACAEbd001BeD122d79290286A));
		
		_isBlackListedBot[address(0x28142c0Fa742a65a427bd20C7e00Cfd14BB7ca62)] = true;
        _blackListedBots.push(address(0x28142c0Fa742a65a427bd20C7e00Cfd14BB7ca62));
		
		_isBlackListedBot[address(0x276f62A8de3F74Fd5D3073B57EBb64c6d867113d)] = true;
        _blackListedBots.push(address(0x276f62A8de3F74Fd5D3073B57EBb64c6d867113d));
		
		_isBlackListedBot[address(0x97DA67882b3F727c2fab876660785a6fba3fb3B5)] = true;
        _blackListedBots.push(address(0x97DA67882b3F727c2fab876660785a6fba3fb3B5));
		
		_isBlackListedBot[address(0x9D8CF88ceD8d7BA4E1c8aD83e5cF682A063230b3)] = true;
        _blackListedBots.push(address(0x9D8CF88ceD8d7BA4E1c8aD83e5cF682A063230b3));
		
		_isBlackListedBot[address(0x3c1f60B578F3AaF06EDb594FAE223cB2AaA5bfD1)] = true;
        _blackListedBots.push(address(0x3c1f60B578F3AaF06EDb594FAE223cB2AaA5bfD1));
		
		_isBlackListedBot[address(0xbD64c242263c7Da1a188E23D99600401CadE4535)] = true;
        _blackListedBots.push(address(0xbD64c242263c7Da1a188E23D99600401CadE4535));
		
		_isBlackListedBot[address(0xe2a25184b2B0aF8D8C7c9e862324BDB5305524Ec)] = true;
        _blackListedBots.push(address(0xe2a25184b2B0aF8D8C7c9e862324BDB5305524Ec));
		
		_isBlackListedBot[address(0xB8d8c22DF766F9b4a6D79C7715e1b4e2016c4241)] = true;
        _blackListedBots.push(address(0xB8d8c22DF766F9b4a6D79C7715e1b4e2016c4241));
		
		_isBlackListedBot[address(0x8867f58ad06a682C76E5Fd72665B640c8C7D35D9)] = true;
        _blackListedBots.push(address(0x8867f58ad06a682C76E5Fd72665B640c8C7D35D9));
		
		_isBlackListedBot[address(0xC69B7BE6f93f9E2dF7b5932A3889c24244052e78)] = true;
        _blackListedBots.push(address(0xC69B7BE6f93f9E2dF7b5932A3889c24244052e78));
		
		_isBlackListedBot[address(0x98Ab02f16952f0eAd38af64c3e4935889e58d939)] = true;
        _blackListedBots.push(address(0x98Ab02f16952f0eAd38af64c3e4935889e58d939));
		
		_isBlackListedBot[address(0x58FaE51d4E10Fe34AC567429746B4612B5C5467A)] = true;
        _blackListedBots.push(address(0x58FaE51d4E10Fe34AC567429746B4612B5C5467A));
		
		_isBlackListedBot[address(0x5b3EE79BbBDb5B032eEAA65C689C119748a7192A)] = true;
        _blackListedBots.push(address(0x5b3EE79BbBDb5B032eEAA65C689C119748a7192A));
		
		_isBlackListedBot[address(0x9dda370f43567b9C757A3F946705567BcE482C42)] = true;
        _blackListedBots.push(address(0x9dda370f43567b9C757A3F946705567BcE482C42));
		
		_isBlackListedBot[address(0x065455488a97C9F59E9F4CA635a27077d0ee741F)] = true;
        _blackListedBots.push(address(0x065455488a97C9F59E9F4CA635a27077d0ee741F));
        
        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(_taxFee == 0 && _teamFee == 0) return;
        _previousTaxFee = _taxFee;
        _previousteamFee = _teamFee;
        _taxFee = 0;
        _teamFee = 0;
    }
    
    function restoreAllFee() private {
        _taxFee = _previousTaxFee;
        _teamFee = _previousteamFee;
    }

    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");
        require(!_isBlackListedBot[to], "You have no power here!");
        require(!_isBlackListedBot[msg.sender], "You have no power here!");

        if(from != owner() && to != owner()) {
            if(_cooldownEnabled) {
                if(!cooldown[msg.sender].exists) {
                    cooldown[msg.sender] = User(0,0,true);
                }
            }

            // buy
            if(from == uniswapV2Pair && to != address(uniswapV2Router) && !_isExcludedFromFee[to]) {
                require(tradingOpen, "Trading not yet enabled.");
				require(amount + balanceOf(to) <= _maxWallet, "Max wallet exceeded");
                if(_cooldownEnabled) {
                    if(_launchedAt+5 >= block.number) {
                        require(amount <= _maxBuyAmount);
                        require(cooldown[to].buy < block.timestamp, "Your buy cooldown has not expired.");
                        cooldown[to].buy = block.timestamp + (30 seconds);
                    }
                }
            }
            uint256 contractTokenBalance = balanceOf(address(this));

            // sell
            if(!inSwap && from != uniswapV2Pair && tradingOpen) {
                if(contractTokenBalance > 0) {
                    swapTokensForEth(contractTokenBalance);
                }
                uint256 contractETHBalance = address(this).balance;
                if(contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
            }
        }
        bool takeFee = true;

        if(_isExcludedFromFee[from] || _isExcludedFromFee[to]){
            takeFee = false;
        }
        
        _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 updateMaxWalletAmount(uint256 newNum) external onlyOwner {
        require(newNum >= (totalSupply() * 5 / 1000)/1e9, "Cannot set maxWallet lower than 0.5%");
        _maxWallet = newNum * (10**9);
    }
	
	
    function updateFees(uint256 taxFee, uint256 teamFee) external onlyOwner{
        _taxFee = taxFee;
        _teamFee = teamFee;
        _totalFees = taxFee+teamFee;
        require(_totalFees <= 15, "Must keep fees at 15% or less");
    }
        
    function sendETHToFee(uint256 amount) private {
        _FeeAddress.transfer(amount*33/100);
        _FeeAddress2.transfer(amount*33/100);
		_FeeAddress3.transfer(amount*33/100);
    }
    
    function _tokenTransfer(address sender, address recipient, uint256 amount, bool takeFee) private {
        if(!takeFee)
            removeAllFee();
        if (_isExcluded[sender] && !_isExcluded[recipient]) {
            _transferFromExcluded(sender, recipient, amount);
        } else if (!_isExcluded[sender] && _isExcluded[recipient]) {
            _transferToExcluded(sender, recipient, amount);
        } else if (!_isExcluded[sender] && !_isExcluded[recipient]) {
            _transferStandard(sender, recipient, amount);
        } else if (_isExcluded[sender] && _isExcluded[recipient]) {
            _transferBothExcluded(sender, recipient, amount);
        } else {
            _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 _transferToExcluded(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);
        _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);    
        _takeTeam(tTeam);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }
    function _transferFromExcluded(address sender, address recipient, uint256 tAmount) private {
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tTeam) = _getValues(tAmount);
        _tOwned[sender] = _tOwned[sender].sub(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); 
        _takeTeam(tTeam);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }
    function _transferBothExcluded(address sender, address recipient, uint256 tAmount) private {
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tTeam) = _getValues(tAmount);
        _tOwned[sender] = _tOwned[sender].sub(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);   
        _takeTeam(tTeam);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _getValues(uint256 tAmount) private view returns (uint256, uint256, uint256, uint256, uint256, uint256) {
        (uint256 tTransferAmount, uint256 tFee, uint256 tTeam) = _getTValues(tAmount, _taxFee, _teamFee);
        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 taxFee, uint256 TeamFee) private pure returns (uint256, uint256, uint256) {
        uint256 tFee = tAmount.mul(taxFee).div(100);
        uint256 tTeam = tAmount.mul(TeamFee).div(100);
        uint256 tTransferAmount = tAmount.sub(tFee).sub(tTeam);
        return (tTransferAmount, tFee, tTeam);
    }

    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;
        for (uint256 i = 0; i < _excluded.length; i++) {
            if (_rOwned[_excluded[i]] > rSupply || _tOwned[_excluded[i]] > tSupply) return (_rTotal, _tTotal);
            rSupply = rSupply.sub(_rOwned[_excluded[i]]);
            tSupply = tSupply.sub(_tOwned[_excluded[i]]);
        }
        if(rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);
        return (rSupply, tSupply);
    }

    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 _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 addLiquidity() external onlyOwner() {
        require(!tradingOpen,"trading is already open");
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Router = _uniswapV2Router;
        _approve(address(this), address(uniswapV2Router), _tTotal);
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());
        uniswapV2Router.addLiquidityETH{value: address(this).balance}(address(this),balanceOf(address(this)),0,0,owner(),block.timestamp);
        _maxBuyAmount = 1000000000 * 10**9; // 0.1% TX LIMIT 
        _launchTime = block.timestamp;
        IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);
    }

    function openTrading() public onlyOwner {
        tradingOpen = true;
        _launchedAt = block.number;
    }

    function manualswap() external {
        require(_msgSender() == _FeeAddress);
        uint256 contractBalance = balanceOf(address(this));
        swapTokensForEth(contractBalance);
    }
    
    function manualsend() external {
        require(_msgSender() == _FeeAddress);
        uint256 contractETHBalance = address(this).balance;
        sendETHToFee(contractETHBalance);
    }

    function setCooldownEnabled(bool onoff) external onlyOwner() {
        _cooldownEnabled = onoff;
        emit CooldownEnabledUpdated(_cooldownEnabled);
    }
    
    function isExcluded(address account) public view returns (bool) {
        return _isExcluded[account];
    }
    
    function excludeAccount(address account) external onlyOwner() {
        require(account != 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D, 'We can not exclude Uniswap router.');
        require(!_isExcluded[account], "Account is already excluded");
        if(_rOwned[account] > 0) {
            _tOwned[account] = tokenFromReflection(_rOwned[account]);
        }
        _isExcluded[account] = true;
        _excluded.push(account);
    }

    function includeAccount(address account) external onlyOwner() {
        require(_isExcluded[account], "Account is already excluded");
        for (uint256 i = 0; i < _excluded.length; i++) {
            if (_excluded[i] == account) {
                _excluded[i] = _excluded[_excluded.length - 1];
                _tOwned[account] = 0;
                _isExcluded[account] = false;
                _excluded.pop();
                break;
            }
        }
    }
    
    function isExcludedFromFee(address account) public view returns(bool) {
        return _isExcludedFromFee[account];
    }
    
    function isBlackListed(address account) public view returns (bool) {
        return _isBlackListedBot[account];
    }
    
    function addBot(address account) external onlyOwner() {
        require(account != 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D, 'We can not blacklist Uniswap router.');
        require(!_isBlackListedBot[account], "Account is already blacklisted");
        _isBlackListedBot[account] = true;
        _blackListedBots.push(account);
    }
    
    function remBot(address account) external onlyOwner() {
        require(_isBlackListedBot[account], "Account is not blacklisted");
        for (uint256 i = 0; i < _blackListedBots.length; i++) {
            if (_blackListedBots[i] == account) {
                _blackListedBots[i] = _blackListedBots[_blackListedBots.length - 1];
                _isBlackListedBot[account] = false;
                _blackListedBots.pop();
                break;
            }
        }
    }
    
    function setExcludeFromFee(address account, bool excluded) external onlyOwner() {
        _isExcludedFromFee[account] = excluded;
    }

    function thisBalance() public view returns (uint) {
        return balanceOf(address(this));
    }

    function cooldownEnabled() public view returns (bool) {
        return _cooldownEnabled;
    }

    function timeToBuy(address buyer) public view returns (uint) {
        return block.timestamp - cooldown[buyer].buy;
    }

    function amountInPool() public view returns (uint) {
        return balanceOf(uniswapV2Pair);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address payable","name":"FeeAddress","type":"address"},{"internalType":"address payable","name":"FeeAddress2","type":"address"},{"internalType":"address payable","name":"FeeAddress3","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":"bool","name":"_cooldown","type":"bool"}],"name":"CooldownEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxBuyAmount","type":"uint256"}],"name":"MaxBuyAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"addBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"addLiquidity","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":[],"name":"amountInPool","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"cooldownEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeAccount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeAccount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isBlackListed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcluded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"remBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"onoff","type":"bool"}],"name":"setCooldownEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"setExcludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"thisBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"buyer","type":"address"}],"name":"timeToBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":"uint256","name":"taxFee","type":"uint256"},{"internalType":"uint256","name":"teamFee","type":"uint256"}],"name":"updateFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052683635c9adc5dea000006000196200001d919062001c07565b6000196200002c919062001b8e565b600b556001600d556007600e55600d54601255600e5460135560646002683635c9adc5dea000006200005f919062001b2d565b6200006b919062001af5565b6015556001601a60156101000a81548160ff0219169083151502179055506000601a60166101000a81548160ff021916908315150217905550348015620000b157600080fd5b5060405162007777380380620077778339818101604052810190620000d7919062001a6b565b6000620000e962001a2360201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35082601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600b54600260006200026162001a2360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600160056000620002b562001a2b60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600860006e3b3cc22af3ae1eac0440bcee416b4073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060096e3b3cc22af3ae1eac0440bcee416b409080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160086000731d6e8bac6ea3730825bde4b005ed7b2b39a2932d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506009731d6e8bac6ea3730825bde4b005ed7b2b39a2932d9080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600860006e35b5e5ad9019092c665357240f594e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060096e35b5e5ad9019092c665357240f594e9080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160086000731315c6c26123383a2eb369a53fb72c4b9f227eec73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506009731315c6c26123383a2eb369a53fb72c4b9f227eec9080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060016008600073d8e83d3d1a91dfefafd8b854511c44685a20fa3d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600973d8e83d3d1a91dfefafd8b854511c44685a20fa3d9080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160086000735136a9a5d077ae4247c7706b577f77153c32a01c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506009735136a9a5d077ae4247c7706b577f77153c32a01c9080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160086000730e388888309d64e97f97a4740ec9ed3dadca71be73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506009730e388888309d64e97f97a4740ec9ed3dadca71be9080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060016008600073a3b3385a4f33085bf8e3b33d010c3038d03c4f1f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600973a3b3385a4f33085bf8e3b33d010c3038d03c4f1f9080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160086000739b07830d15e8d1bacaebd001bed122d79290286a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506009739b07830d15e8d1bacaebd001bed122d79290286a9080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600860007328142c0fa742a65a427bd20c7e00cfd14bb7ca6273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060097328142c0fa742a65a427bd20c7e00cfd14bb7ca629080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060016008600073276f62a8de3f74fd5d3073b57ebb64c6d867113d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600973276f62a8de3f74fd5d3073b57ebb64c6d867113d9080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600860007397da67882b3f727c2fab876660785a6fba3fb3b573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060097397da67882b3f727c2fab876660785a6fba3fb3b59080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160086000739d8cf88ced8d7ba4e1c8ad83e5cf682a063230b373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506009739d8cf88ced8d7ba4e1c8ad83e5cf682a063230b39080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160086000733c1f60b578f3aaf06edb594fae223cb2aaa5bfd173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506009733c1f60b578f3aaf06edb594fae223cb2aaa5bfd19080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060016008600073bd64c242263c7da1a188e23d99600401cade453573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600973bd64c242263c7da1a188e23d99600401cade45359080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060016008600073e2a25184b2b0af8d8c7c9e862324bdb5305524ec73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600973e2a25184b2b0af8d8c7c9e862324bdb5305524ec9080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060016008600073b8d8c22df766f9b4a6d79c7715e1b4e2016c424173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600973b8d8c22df766f9b4a6d79c7715e1b4e2016c42419080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160086000738867f58ad06a682c76e5fd72665b640c8c7d35d973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506009738867f58ad06a682c76e5fd72665b640c8c7d35d99080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060016008600073c69b7be6f93f9e2df7b5932a3889c24244052e7873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600973c69b7be6f93f9e2df7b5932a3889c24244052e789080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600860007398ab02f16952f0ead38af64c3e4935889e58d93973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060097398ab02f16952f0ead38af64c3e4935889e58d9399080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600860007358fae51d4e10fe34ac567429746b4612b5c5467a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060097358fae51d4e10fe34ac567429746b4612b5c5467a9080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160086000735b3ee79bbbdb5b032eeaa65c689c119748a7192a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506009735b3ee79bbbdb5b032eeaa65c689c119748a7192a9080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160086000739dda370f43567b9c757a3f946705567bce482c4273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506009739dda370f43567b9c757a3f946705567bce482c429080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060016008600073065455488a97c9f59e9f4ca635a27077d0ee741f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600973065455488a97c9f59e9f4ca635a27077d0ee741f9080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620019aa62001a2360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef683635c9adc5dea0000060405162001a12919062001ad8565b60405180910390a350505062001cbc565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008151905062001a658162001ca2565b92915050565b60008060006060848603121562001a875762001a8662001c9d565b5b600062001a978682870162001a54565b935050602062001aaa8682870162001a54565b925050604062001abd8682870162001a54565b9150509250925092565b62001ad28162001bfd565b82525050565b600060208201905062001aef600083018462001ac7565b92915050565b600062001b028262001bfd565b915062001b0f8362001bfd565b92508262001b225762001b2162001c6e565b5b828204905092915050565b600062001b3a8262001bfd565b915062001b478362001bfd565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562001b835762001b8262001c3f565b5b828202905092915050565b600062001b9b8262001bfd565b915062001ba88362001bfd565b92508282101562001bbe5762001bbd62001c3f565b5b828203905092915050565b600062001bd68262001bdd565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600062001c148262001bfd565b915062001c218362001bfd565b92508262001c345762001c3362001c6e565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600080fd5b62001cad8162001bc9565b811462001cb957600080fd5b50565b615aab8062001ccc6000396000f3fe6080604052600436106101dc5760003560e01c806395d89b4111610102578063cba0e99611610095578063e8078d9411610064578063e8078d94146106b9578063f2cc0c18146106d0578063f84354f1146106f9578063ffecf51614610722576101e3565b8063cba0e996146105d7578063db92dbb614610614578063dd62ed3e1461063f578063e47d60601461067c576101e3565b8063b79849c1116100d1578063b79849c114610557578063c18bc19514610580578063c3c8cd80146105a9578063c9567bf9146105c0576101e3565b806395d89b411461049b578063a9059cbb146104c6578063a985ceef14610503578063af9549e01461052e576101e3565b80635932ead11161017a57806370a082311161014957806370a08231146103f1578063715018a61461042e57806382247ec0146104455780638da5cb5b14610470576101e3565b80635932ead11461034b57806368a3a6a5146103745780636db79437146103b15780636fc3eaec146103da576101e3565b806323b872dd116101b657806323b872dd1461027b57806327f3a72a146102b8578063313ce567146102e35780635342acb41461030e576101e3565b806306fdde03146101e8578063095ea7b31461021357806318160ddd14610250576101e3565b366101e357005b600080fd5b3480156101f457600080fd5b506101fd61074b565b60405161020a9190614e69565b60405180910390f35b34801561021f57600080fd5b5061023a6004803603810190610235919061483e565b610788565b6040516102479190614e4e565b60405180910390f35b34801561025c57600080fd5b506102656107a6565b604051610272919061512b565b60405180910390f35b34801561028757600080fd5b506102a2600480360381019061029d91906147ab565b6107b7565b6040516102af9190614e4e565b60405180910390f35b3480156102c457600080fd5b506102cd610890565b6040516102da919061512b565b60405180910390f35b3480156102ef57600080fd5b506102f86108a0565b60405161030591906151a0565b60405180910390f35b34801561031a57600080fd5b5061033560048036038101906103309190614711565b6108a9565b6040516103429190614e4e565b60405180910390f35b34801561035757600080fd5b50610372600480360381019061036d919061487e565b6108ff565b005b34801561038057600080fd5b5061039b60048036038101906103969190614711565b6109f7565b6040516103a8919061512b565b60405180910390f35b3480156103bd57600080fd5b506103d860048036038101906103d39190614905565b610a4e565b005b3480156103e657600080fd5b506103ef610b4c565b005b3480156103fd57600080fd5b5061041860048036038101906104139190614711565b610bbe565b604051610425919061512b565b60405180910390f35b34801561043a57600080fd5b50610443610c0f565b005b34801561045157600080fd5b5061045a610d62565b604051610467919061512b565b60405180910390f35b34801561047c57600080fd5b50610485610d68565b6040516104929190614d80565b60405180910390f35b3480156104a757600080fd5b506104b0610d91565b6040516104bd9190614e69565b60405180910390f35b3480156104d257600080fd5b506104ed60048036038101906104e8919061483e565b610dce565b6040516104fa9190614e4e565b60405180910390f35b34801561050f57600080fd5b50610518610dec565b6040516105259190614e4e565b60405180910390f35b34801561053a57600080fd5b50610555600480360381019061055091906147fe565b610e03565b005b34801561056357600080fd5b5061057e60048036038101906105799190614711565b610ef3565b005b34801561058c57600080fd5b506105a760048036038101906105a291906148d8565b6111fd565b005b3480156105b557600080fd5b506105be61131d565b005b3480156105cc57600080fd5b506105d5611397565b005b3480156105e357600080fd5b506105fe60048036038101906105f99190614711565b611450565b60405161060b9190614e4e565b60405180910390f35b34801561062057600080fd5b506106296114a6565b604051610636919061512b565b60405180910390f35b34801561064b57600080fd5b506106666004803603810190610661919061476b565b6114d8565b604051610673919061512b565b60405180910390f35b34801561068857600080fd5b506106a3600480360381019061069e9190614711565b61155f565b6040516106b09190614e4e565b60405180910390f35b3480156106c557600080fd5b506106ce6115b5565b005b3480156106dc57600080fd5b506106f760048036038101906106f29190614711565b611ac7565b005b34801561070557600080fd5b50610720600480360381019061071b9190614711565b611dfe565b005b34801561072e57600080fd5b5061074960048036038101906107449190614711565b61214d565b005b60606040518060400160405280600781526020017f4245525345524b00000000000000000000000000000000000000000000000000815250905090565b600061079c6107956123b0565b84846123b8565b6001905092915050565b6000683635c9adc5dea00000905090565b60006107c4848484612583565b610885846107d06123b0565b61088085604051806060016040528060288152602001615a4e60289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006108366123b0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d839092919063ffffffff16565b6123b8565b600190509392505050565b600061089b30610bbe565b905090565b60006009905090565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6109076123b0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610994576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161098b90614fcb565b60405180910390fd5b80601a60156101000a81548160ff0219169083151502179055507f0d63187a8abb5b4d1bb562e1163897386b0a88ee72e0799dd105bd0fd6f28706601a60159054906101000a900460ff166040516109ec9190614e4e565b60405180910390a150565b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015442610a4791906152f1565b9050919050565b610a566123b0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ae3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ada90614fcb565b60405180910390fd5b81600d8190555080600e819055508082610afd9190615210565b600f81905550600f80541115610b48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3f90614eab565b60405180910390fd5b5050565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610b8d6123b0565b73ffffffffffffffffffffffffffffffffffffffff1614610bad57600080fd5b6000479050610bbb81612de7565b50565b6000610c08600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612f6d565b9050919050565b610c176123b0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ca4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9b90614fcb565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60155481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600681526020017f42455253524b0000000000000000000000000000000000000000000000000000815250905090565b6000610de2610ddb6123b0565b8484612583565b6001905092915050565b6000601a60159054906101000a900460ff16905090565b610e0b6123b0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8f90614fcb565b60405180910390fd5b80600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b610efb6123b0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f88576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7f90614fcb565b60405180910390fd5b600860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611014576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161100b9061500b565b60405180910390fd5b60005b6009805490508110156111f9578173ffffffffffffffffffffffffffffffffffffffff166009828154811061104f5761104e615495565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156111e657600960016009805490506110aa91906152f1565b815481106110bb576110ba615495565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600982815481106110fa576110f9615495565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060098054806111ac576111ab615466565b5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905590556111f9565b80806111f1906153bf565b915050611017565b5050565b6112056123b0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611292576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128990614fcb565b60405180910390fd5b633b9aca006103e860056112a46107a6565b6112ae9190615297565b6112b89190615266565b6112c29190615266565b811015611304576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112fb90614f4b565b60405180910390fd5b633b9aca00816113149190615297565b60158190555050565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661135e6123b0565b73ffffffffffffffffffffffffffffffffffffffff161461137e57600080fd5b600061138930610bbe565b905061139481612fdb565b50565b61139f6123b0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461142c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142390614fcb565b60405180910390fd5b6001601a60146101000a81548160ff02191690831515021790555043601181905550565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60006114d3601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610bbe565b905090565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6115bd6123b0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461164a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164190614fcb565b60405180910390fd5b601a60149054906101000a900460ff161561169a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116919061508b565b60405180910390fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061172a30601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16683635c9adc5dea000006123b8565b8073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561177057600080fd5b505afa158015611784573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117a8919061473e565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561180a57600080fd5b505afa15801561181e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611842919061473e565b6040518363ffffffff1660e01b815260040161185f929190614d9b565b602060405180830381600087803b15801561187957600080fd5b505af115801561188d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118b1919061473e565b601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473061193a30610bbe565b600080611945610d68565b426040518863ffffffff1660e01b815260040161196796959493929190614ded565b6060604051808303818588803b15801561198057600080fd5b505af1158015611994573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906119b99190614945565b505050670de0b6b3a764000060148190555042601081905550601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401611a71929190614dc4565b602060405180830381600087803b158015611a8b57600080fd5b505af1158015611a9f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ac391906148ab565b5050565b611acf6123b0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b5c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b5390614fcb565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611bdf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bd6906150eb565b60405180910390fd5b600660008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611c6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c6390614f6b565b60405180910390fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115611d4057611cfc600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612f6d565b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506007819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611e066123b0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e8a90614fcb565b60405180910390fd5b600660008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611f1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f1690614f6b565b60405180910390fd5b60005b600780549050811015612149578173ffffffffffffffffffffffffffffffffffffffff1660078281548110611f5a57611f59615495565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156121365760076001600780549050611fb591906152f1565b81548110611fc657611fc5615495565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166007828154811061200557612004615495565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060078054806120fc576120fb615466565b5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690559055612149565b8080612141906153bf565b915050611f22565b5050565b6121556123b0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146121e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121d990614fcb565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612265576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161225c9061502b565b60405180910390fd5b600860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156122f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122e990614f8b565b60405180910390fd5b6001600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506009819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612428576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161241f9061506b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612498576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161248f90614eeb565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612576919061512b565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156125f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125ea9061504b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612663576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161265a90614e8b565b60405180910390fd5b600081116126a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161269d90614feb565b60405180910390fd5b600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612733576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161272a9061510b565b60405180910390fd5b600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156127c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127b79061510b565b60405180910390fd5b6127c8610d68565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156128365750612806610d68565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612cc057601a60159054906101000a900460ff161561293c57600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160009054906101000a900460ff1661293b576040518060600160405280600081526020016000815260200160011515815250600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082015181600001556020820151816001015560408201518160020160006101000a81548160ff0219169083151502179055509050505b5b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156129e75750601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612a3d5750600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612bfc57601a60149054906101000a900460ff16612a91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a88906150cb565b60405180910390fd5b601554612a9d83610bbe565b82612aa89190615210565b1115612ae9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ae0906150ab565b60405180910390fd5b601a60159054906101000a900460ff1615612bfb57436005601154612b0e9190615210565b10612bfa57601454811115612b2257600080fd5b42600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015410612ba6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b9d90614f0b565b60405180910390fd5b601e42612bb39190615210565b600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055505b5b5b6000612c0730610bbe565b9050601a60169054906101000a900460ff16158015612c745750601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015612c8c5750601a60149054906101000a900460ff165b15612cbe576000811115612ca457612ca381612fdb565b5b60004790506000811115612cbc57612cbb47612de7565b5b505b505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612d675750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612d7157600090505b612d7d84848484613263565b50505050565b6000838311158290612dcb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dc29190614e69565b60405180910390fd5b5060008385612dda91906152f1565b9050809150509392505050565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6064602184612e329190615297565b612e3c9190615266565b9081150290604051600060405180830381858888f19350505050158015612e67573d6000803e3d6000fd5b50601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6064602184612eb39190615297565b612ebd9190615266565b9081150290604051600060405180830381858888f19350505050158015612ee8573d6000803e3d6000fd5b50601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6064602184612f349190615297565b612f3e9190615266565b9081150290604051600060405180830381858888f19350505050158015612f69573d6000803e3d6000fd5b5050565b6000600b54821115612fb4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fab90614ecb565b60405180910390fd5b6000612fbe613574565b9050612fd3818461359f90919063ffffffff16565b915050919050565b6001601a60166101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115613013576130126154c4565b5b6040519080825280602002602001820160405280156130415781602001602082028036833780820191505090505b509050308160008151811061305957613058615495565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156130fb57600080fd5b505afa15801561310f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613133919061473e565b8160018151811061314757613146615495565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506131ae30601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846123b8565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613212959493929190615146565b600060405180830381600087803b15801561322c57600080fd5b505af1158015613240573d6000803e3d6000fd5b50505050506000601a60166101000a81548160ff02191690831515021790555050565b80613271576132706135e9565b5b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156133145750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156133295761332484848461362c565b613560565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156133cc5750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156133e1576133dc84848461388c565b61355f565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156134855750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561349a57613495848484613aec565b61355e565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561353c5750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156135515761354c848484613cb7565b61355d565b61355c848484613aec565b5b5b5b5b8061356e5761356d613fac565b5b50505050565b6000806000613581613fc0565b91509150613598818361359f90919063ffffffff16565b9250505090565b60006135e183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061428f565b905092915050565b6000600d541480156135fd57506000600e54145b156136075761362a565b600d54601281905550600e546013819055506000600d819055506000600e819055505b565b60008060008060008061363e876142f2565b95509550955095509550955061369c87600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461435a90919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061373186600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461435a90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506137c685600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546143a490919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061381281614402565b61381c84836144bf565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051613879919061512b565b60405180910390a3505050505050505050565b60008060008060008061389e876142f2565b9550955095509550955095506138fc86600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461435a90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061399183600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546143a490919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613a2685600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546143a490919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613a7281614402565b613a7c84836144bf565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051613ad9919061512b565b60405180910390a3505050505050505050565b600080600080600080613afe876142f2565b955095509550955095509550613b5c86600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461435a90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613bf185600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546143a490919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613c3d81614402565b613c4784836144bf565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051613ca4919061512b565b60405180910390a3505050505050505050565b600080600080600080613cc9876142f2565b955095509550955095509550613d2787600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461435a90919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613dbc86600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461435a90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613e5183600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546143a490919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613ee685600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546143a490919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613f3281614402565b613f3c84836144bf565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051613f99919061512b565b60405180910390a3505050505050505050565b601254600d81905550601354600e81905550565b6000806000600b5490506000683635c9adc5dea00000905060005b6007805490508110156142445782600260006007848154811061400157614000615495565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411806140ef575081600360006007848154811061408757614086615495565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b1561410d57600b54683635c9adc5dea000009450945050505061428b565b61419d600260006007848154811061412857614127615495565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548461435a90919063ffffffff16565b925061422f60036000600784815481106141ba576141b9615495565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361435a90919063ffffffff16565b9150808061423c906153bf565b915050613fdb565b50614263683635c9adc5dea00000600b5461359f90919063ffffffff16565b82101561428257600b54683635c9adc5dea0000093509350505061428b565b81819350935050505b9091565b600080831182906142d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016142cd9190614e69565b60405180910390fd5b50600083856142e59190615266565b9050809150509392505050565b600080600080600080600080600061430f8a600d54600e546144f9565b925092509250600061431f613574565b905060008060006143328e87878761458f565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b600061439c83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612d83565b905092915050565b60008082846143b39190615210565b9050838110156143f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016143ef90614f2b565b60405180910390fd5b8091505092915050565b600061440c613574565b90506000614423828461461890919063ffffffff16565b905061447781600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546143a490919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b6144d482600b5461435a90919063ffffffff16565b600b819055506144ef81600c546143a490919063ffffffff16565b600c819055505050565b6000806000806145256064614517888a61461890919063ffffffff16565b61359f90919063ffffffff16565b9050600061454f6064614541888b61461890919063ffffffff16565b61359f90919063ffffffff16565b905060006145788261456a858c61435a90919063ffffffff16565b61435a90919063ffffffff16565b905080838395509550955050505093509350939050565b6000806000806145a8858961461890919063ffffffff16565b905060006145bf868961461890919063ffffffff16565b905060006145d6878961461890919063ffffffff16565b905060006145ff826145f1858761435a90919063ffffffff16565b61435a90919063ffffffff16565b9050838184965096509650505050509450945094915050565b60008083141561462b576000905061468d565b600082846146399190615297565b90508284826146489190615266565b14614688576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161467f90614fab565b60405180910390fd5b809150505b92915050565b6000813590506146a281615a08565b92915050565b6000815190506146b781615a08565b92915050565b6000813590506146cc81615a1f565b92915050565b6000815190506146e181615a1f565b92915050565b6000813590506146f681615a36565b92915050565b60008151905061470b81615a36565b92915050565b600060208284031215614727576147266154f3565b5b600061473584828501614693565b91505092915050565b600060208284031215614754576147536154f3565b5b6000614762848285016146a8565b91505092915050565b60008060408385031215614782576147816154f3565b5b600061479085828601614693565b92505060206147a185828601614693565b9150509250929050565b6000806000606084860312156147c4576147c36154f3565b5b60006147d286828701614693565b93505060206147e386828701614693565b92505060406147f4868287016146e7565b9150509250925092565b60008060408385031215614815576148146154f3565b5b600061482385828601614693565b9250506020614834858286016146bd565b9150509250929050565b60008060408385031215614855576148546154f3565b5b600061486385828601614693565b9250506020614874858286016146e7565b9150509250929050565b600060208284031215614894576148936154f3565b5b60006148a2848285016146bd565b91505092915050565b6000602082840312156148c1576148c06154f3565b5b60006148cf848285016146d2565b91505092915050565b6000602082840312156148ee576148ed6154f3565b5b60006148fc848285016146e7565b91505092915050565b6000806040838503121561491c5761491b6154f3565b5b600061492a858286016146e7565b925050602061493b858286016146e7565b9150509250929050565b60008060006060848603121561495e5761495d6154f3565b5b600061496c868287016146fc565b935050602061497d868287016146fc565b925050604061498e868287016146fc565b9150509250925092565b60006149a483836149b0565b60208301905092915050565b6149b981615325565b82525050565b6149c881615325565b82525050565b60006149d9826151cb565b6149e381856151ee565b93506149ee836151bb565b8060005b83811015614a1f578151614a068882614998565b9750614a11836151e1565b9250506001810190506149f2565b5085935050505092915050565b614a3581615337565b82525050565b614a448161537a565b82525050565b6000614a55826151d6565b614a5f81856151ff565b9350614a6f81856020860161538c565b614a78816154f8565b840191505092915050565b6000614a906023836151ff565b9150614a9b82615509565b604082019050919050565b6000614ab3601d836151ff565b9150614abe82615558565b602082019050919050565b6000614ad6602a836151ff565b9150614ae182615581565b604082019050919050565b6000614af96022836151ff565b9150614b04826155d0565b604082019050919050565b6000614b1c6022836151ff565b9150614b278261561f565b604082019050919050565b6000614b3f601b836151ff565b9150614b4a8261566e565b602082019050919050565b6000614b626024836151ff565b9150614b6d82615697565b604082019050919050565b6000614b85601b836151ff565b9150614b90826156e6565b602082019050919050565b6000614ba8601e836151ff565b9150614bb38261570f565b602082019050919050565b6000614bcb6021836151ff565b9150614bd682615738565b604082019050919050565b6000614bee6020836151ff565b9150614bf982615787565b602082019050919050565b6000614c116029836151ff565b9150614c1c826157b0565b604082019050919050565b6000614c34601a836151ff565b9150614c3f826157ff565b602082019050919050565b6000614c576024836151ff565b9150614c6282615828565b604082019050919050565b6000614c7a6025836151ff565b9150614c8582615877565b604082019050919050565b6000614c9d6024836151ff565b9150614ca8826158c6565b604082019050919050565b6000614cc06017836151ff565b9150614ccb82615915565b602082019050919050565b6000614ce36013836151ff565b9150614cee8261593e565b602082019050919050565b6000614d066018836151ff565b9150614d1182615967565b602082019050919050565b6000614d296022836151ff565b9150614d3482615990565b604082019050919050565b6000614d4c6017836151ff565b9150614d57826159df565b602082019050919050565b614d6b81615363565b82525050565b614d7a8161536d565b82525050565b6000602082019050614d9560008301846149bf565b92915050565b6000604082019050614db060008301856149bf565b614dbd60208301846149bf565b9392505050565b6000604082019050614dd960008301856149bf565b614de66020830184614d62565b9392505050565b600060c082019050614e0260008301896149bf565b614e0f6020830188614d62565b614e1c6040830187614a3b565b614e296060830186614a3b565b614e3660808301856149bf565b614e4360a0830184614d62565b979650505050505050565b6000602082019050614e636000830184614a2c565b92915050565b60006020820190508181036000830152614e838184614a4a565b905092915050565b60006020820190508181036000830152614ea481614a83565b9050919050565b60006020820190508181036000830152614ec481614aa6565b9050919050565b60006020820190508181036000830152614ee481614ac9565b9050919050565b60006020820190508181036000830152614f0481614aec565b9050919050565b60006020820190508181036000830152614f2481614b0f565b9050919050565b60006020820190508181036000830152614f4481614b32565b9050919050565b60006020820190508181036000830152614f6481614b55565b9050919050565b60006020820190508181036000830152614f8481614b78565b9050919050565b60006020820190508181036000830152614fa481614b9b565b9050919050565b60006020820190508181036000830152614fc481614bbe565b9050919050565b60006020820190508181036000830152614fe481614be1565b9050919050565b6000602082019050818103600083015261500481614c04565b9050919050565b6000602082019050818103600083015261502481614c27565b9050919050565b6000602082019050818103600083015261504481614c4a565b9050919050565b6000602082019050818103600083015261506481614c6d565b9050919050565b6000602082019050818103600083015261508481614c90565b9050919050565b600060208201905081810360008301526150a481614cb3565b9050919050565b600060208201905081810360008301526150c481614cd6565b9050919050565b600060208201905081810360008301526150e481614cf9565b9050919050565b6000602082019050818103600083015261510481614d1c565b9050919050565b6000602082019050818103600083015261512481614d3f565b9050919050565b60006020820190506151406000830184614d62565b92915050565b600060a08201905061515b6000830188614d62565b6151686020830187614a3b565b818103604083015261517a81866149ce565b905061518960608301856149bf565b6151966080830184614d62565b9695505050505050565b60006020820190506151b56000830184614d71565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600061521b82615363565b915061522683615363565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561525b5761525a615408565b5b828201905092915050565b600061527182615363565b915061527c83615363565b92508261528c5761528b615437565b5b828204905092915050565b60006152a282615363565b91506152ad83615363565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156152e6576152e5615408565b5b828202905092915050565b60006152fc82615363565b915061530783615363565b92508282101561531a57615319615408565b5b828203905092915050565b600061533082615343565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b600061538582615363565b9050919050565b60005b838110156153aa57808201518184015260208101905061538f565b838111156153b9576000848401525b50505050565b60006153ca82615363565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156153fd576153fc615408565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f4d757374206b656570206665657320617420313525206f72206c657373000000600082015250565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f596f75722062757920636f6f6c646f776e20686173206e6f742065787069726560008201527f642e000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b7f4163636f756e7420697320616c7265616479206578636c756465640000000000600082015250565b7f4163636f756e7420697320616c726561647920626c61636b6c69737465640000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f4163636f756e74206973206e6f7420626c61636b6c6973746564000000000000600082015250565b7f57652063616e206e6f7420626c61636b6c69737420556e697377617020726f7560008201527f7465722e00000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b7f54726164696e67206e6f742079657420656e61626c65642e0000000000000000600082015250565b7f57652063616e206e6f74206578636c75646520556e697377617020726f75746560008201527f722e000000000000000000000000000000000000000000000000000000000000602082015250565b7f596f752068617665206e6f20706f776572206865726521000000000000000000600082015250565b615a1181615325565b8114615a1c57600080fd5b50565b615a2881615337565b8114615a3357600080fd5b50565b615a3f81615363565b8114615a4a57600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212209e3f688f50f0599775ebb611a2af876a5b5c507eed2f089d8df2579d28521c8464736f6c63430008070033000000000000000000000000e16a61ed9ff468d7d51224b0fc1b026f1d40eab6000000000000000000000000001aab6e19d49056d37dbb7cfbc9bc679d5de766000000000000000000000000d1955f559c65fbd609a0cf74bd2239cf0dde38b0

Deployed Bytecode

0x6080604052600436106101dc5760003560e01c806395d89b4111610102578063cba0e99611610095578063e8078d9411610064578063e8078d94146106b9578063f2cc0c18146106d0578063f84354f1146106f9578063ffecf51614610722576101e3565b8063cba0e996146105d7578063db92dbb614610614578063dd62ed3e1461063f578063e47d60601461067c576101e3565b8063b79849c1116100d1578063b79849c114610557578063c18bc19514610580578063c3c8cd80146105a9578063c9567bf9146105c0576101e3565b806395d89b411461049b578063a9059cbb146104c6578063a985ceef14610503578063af9549e01461052e576101e3565b80635932ead11161017a57806370a082311161014957806370a08231146103f1578063715018a61461042e57806382247ec0146104455780638da5cb5b14610470576101e3565b80635932ead11461034b57806368a3a6a5146103745780636db79437146103b15780636fc3eaec146103da576101e3565b806323b872dd116101b657806323b872dd1461027b57806327f3a72a146102b8578063313ce567146102e35780635342acb41461030e576101e3565b806306fdde03146101e8578063095ea7b31461021357806318160ddd14610250576101e3565b366101e357005b600080fd5b3480156101f457600080fd5b506101fd61074b565b60405161020a9190614e69565b60405180910390f35b34801561021f57600080fd5b5061023a6004803603810190610235919061483e565b610788565b6040516102479190614e4e565b60405180910390f35b34801561025c57600080fd5b506102656107a6565b604051610272919061512b565b60405180910390f35b34801561028757600080fd5b506102a2600480360381019061029d91906147ab565b6107b7565b6040516102af9190614e4e565b60405180910390f35b3480156102c457600080fd5b506102cd610890565b6040516102da919061512b565b60405180910390f35b3480156102ef57600080fd5b506102f86108a0565b60405161030591906151a0565b60405180910390f35b34801561031a57600080fd5b5061033560048036038101906103309190614711565b6108a9565b6040516103429190614e4e565b60405180910390f35b34801561035757600080fd5b50610372600480360381019061036d919061487e565b6108ff565b005b34801561038057600080fd5b5061039b60048036038101906103969190614711565b6109f7565b6040516103a8919061512b565b60405180910390f35b3480156103bd57600080fd5b506103d860048036038101906103d39190614905565b610a4e565b005b3480156103e657600080fd5b506103ef610b4c565b005b3480156103fd57600080fd5b5061041860048036038101906104139190614711565b610bbe565b604051610425919061512b565b60405180910390f35b34801561043a57600080fd5b50610443610c0f565b005b34801561045157600080fd5b5061045a610d62565b604051610467919061512b565b60405180910390f35b34801561047c57600080fd5b50610485610d68565b6040516104929190614d80565b60405180910390f35b3480156104a757600080fd5b506104b0610d91565b6040516104bd9190614e69565b60405180910390f35b3480156104d257600080fd5b506104ed60048036038101906104e8919061483e565b610dce565b6040516104fa9190614e4e565b60405180910390f35b34801561050f57600080fd5b50610518610dec565b6040516105259190614e4e565b60405180910390f35b34801561053a57600080fd5b50610555600480360381019061055091906147fe565b610e03565b005b34801561056357600080fd5b5061057e60048036038101906105799190614711565b610ef3565b005b34801561058c57600080fd5b506105a760048036038101906105a291906148d8565b6111fd565b005b3480156105b557600080fd5b506105be61131d565b005b3480156105cc57600080fd5b506105d5611397565b005b3480156105e357600080fd5b506105fe60048036038101906105f99190614711565b611450565b60405161060b9190614e4e565b60405180910390f35b34801561062057600080fd5b506106296114a6565b604051610636919061512b565b60405180910390f35b34801561064b57600080fd5b506106666004803603810190610661919061476b565b6114d8565b604051610673919061512b565b60405180910390f35b34801561068857600080fd5b506106a3600480360381019061069e9190614711565b61155f565b6040516106b09190614e4e565b60405180910390f35b3480156106c557600080fd5b506106ce6115b5565b005b3480156106dc57600080fd5b506106f760048036038101906106f29190614711565b611ac7565b005b34801561070557600080fd5b50610720600480360381019061071b9190614711565b611dfe565b005b34801561072e57600080fd5b5061074960048036038101906107449190614711565b61214d565b005b60606040518060400160405280600781526020017f4245525345524b00000000000000000000000000000000000000000000000000815250905090565b600061079c6107956123b0565b84846123b8565b6001905092915050565b6000683635c9adc5dea00000905090565b60006107c4848484612583565b610885846107d06123b0565b61088085604051806060016040528060288152602001615a4e60289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006108366123b0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d839092919063ffffffff16565b6123b8565b600190509392505050565b600061089b30610bbe565b905090565b60006009905090565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6109076123b0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610994576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161098b90614fcb565b60405180910390fd5b80601a60156101000a81548160ff0219169083151502179055507f0d63187a8abb5b4d1bb562e1163897386b0a88ee72e0799dd105bd0fd6f28706601a60159054906101000a900460ff166040516109ec9190614e4e565b60405180910390a150565b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015442610a4791906152f1565b9050919050565b610a566123b0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ae3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ada90614fcb565b60405180910390fd5b81600d8190555080600e819055508082610afd9190615210565b600f81905550600f80541115610b48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3f90614eab565b60405180910390fd5b5050565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610b8d6123b0565b73ffffffffffffffffffffffffffffffffffffffff1614610bad57600080fd5b6000479050610bbb81612de7565b50565b6000610c08600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612f6d565b9050919050565b610c176123b0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ca4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9b90614fcb565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60155481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600681526020017f42455253524b0000000000000000000000000000000000000000000000000000815250905090565b6000610de2610ddb6123b0565b8484612583565b6001905092915050565b6000601a60159054906101000a900460ff16905090565b610e0b6123b0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8f90614fcb565b60405180910390fd5b80600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b610efb6123b0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f88576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7f90614fcb565b60405180910390fd5b600860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611014576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161100b9061500b565b60405180910390fd5b60005b6009805490508110156111f9578173ffffffffffffffffffffffffffffffffffffffff166009828154811061104f5761104e615495565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156111e657600960016009805490506110aa91906152f1565b815481106110bb576110ba615495565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600982815481106110fa576110f9615495565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060098054806111ac576111ab615466565b5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905590556111f9565b80806111f1906153bf565b915050611017565b5050565b6112056123b0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611292576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128990614fcb565b60405180910390fd5b633b9aca006103e860056112a46107a6565b6112ae9190615297565b6112b89190615266565b6112c29190615266565b811015611304576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112fb90614f4b565b60405180910390fd5b633b9aca00816113149190615297565b60158190555050565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661135e6123b0565b73ffffffffffffffffffffffffffffffffffffffff161461137e57600080fd5b600061138930610bbe565b905061139481612fdb565b50565b61139f6123b0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461142c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142390614fcb565b60405180910390fd5b6001601a60146101000a81548160ff02191690831515021790555043601181905550565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60006114d3601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610bbe565b905090565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6115bd6123b0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461164a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164190614fcb565b60405180910390fd5b601a60149054906101000a900460ff161561169a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116919061508b565b60405180910390fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061172a30601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16683635c9adc5dea000006123b8565b8073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561177057600080fd5b505afa158015611784573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117a8919061473e565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561180a57600080fd5b505afa15801561181e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611842919061473e565b6040518363ffffffff1660e01b815260040161185f929190614d9b565b602060405180830381600087803b15801561187957600080fd5b505af115801561188d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118b1919061473e565b601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473061193a30610bbe565b600080611945610d68565b426040518863ffffffff1660e01b815260040161196796959493929190614ded565b6060604051808303818588803b15801561198057600080fd5b505af1158015611994573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906119b99190614945565b505050670de0b6b3a764000060148190555042601081905550601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401611a71929190614dc4565b602060405180830381600087803b158015611a8b57600080fd5b505af1158015611a9f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ac391906148ab565b5050565b611acf6123b0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b5c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b5390614fcb565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611bdf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bd6906150eb565b60405180910390fd5b600660008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611c6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c6390614f6b565b60405180910390fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115611d4057611cfc600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612f6d565b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506007819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611e066123b0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e8a90614fcb565b60405180910390fd5b600660008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611f1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f1690614f6b565b60405180910390fd5b60005b600780549050811015612149578173ffffffffffffffffffffffffffffffffffffffff1660078281548110611f5a57611f59615495565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156121365760076001600780549050611fb591906152f1565b81548110611fc657611fc5615495565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166007828154811061200557612004615495565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060078054806120fc576120fb615466565b5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690559055612149565b8080612141906153bf565b915050611f22565b5050565b6121556123b0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146121e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121d990614fcb565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612265576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161225c9061502b565b60405180910390fd5b600860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156122f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122e990614f8b565b60405180910390fd5b6001600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506009819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612428576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161241f9061506b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612498576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161248f90614eeb565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612576919061512b565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156125f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125ea9061504b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612663576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161265a90614e8b565b60405180910390fd5b600081116126a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161269d90614feb565b60405180910390fd5b600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612733576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161272a9061510b565b60405180910390fd5b600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156127c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127b79061510b565b60405180910390fd5b6127c8610d68565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156128365750612806610d68565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612cc057601a60159054906101000a900460ff161561293c57600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160009054906101000a900460ff1661293b576040518060600160405280600081526020016000815260200160011515815250600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082015181600001556020820151816001015560408201518160020160006101000a81548160ff0219169083151502179055509050505b5b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156129e75750601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612a3d5750600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612bfc57601a60149054906101000a900460ff16612a91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a88906150cb565b60405180910390fd5b601554612a9d83610bbe565b82612aa89190615210565b1115612ae9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ae0906150ab565b60405180910390fd5b601a60159054906101000a900460ff1615612bfb57436005601154612b0e9190615210565b10612bfa57601454811115612b2257600080fd5b42600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015410612ba6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b9d90614f0b565b60405180910390fd5b601e42612bb39190615210565b600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055505b5b5b6000612c0730610bbe565b9050601a60169054906101000a900460ff16158015612c745750601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015612c8c5750601a60149054906101000a900460ff165b15612cbe576000811115612ca457612ca381612fdb565b5b60004790506000811115612cbc57612cbb47612de7565b5b505b505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612d675750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612d7157600090505b612d7d84848484613263565b50505050565b6000838311158290612dcb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dc29190614e69565b60405180910390fd5b5060008385612dda91906152f1565b9050809150509392505050565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6064602184612e329190615297565b612e3c9190615266565b9081150290604051600060405180830381858888f19350505050158015612e67573d6000803e3d6000fd5b50601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6064602184612eb39190615297565b612ebd9190615266565b9081150290604051600060405180830381858888f19350505050158015612ee8573d6000803e3d6000fd5b50601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6064602184612f349190615297565b612f3e9190615266565b9081150290604051600060405180830381858888f19350505050158015612f69573d6000803e3d6000fd5b5050565b6000600b54821115612fb4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fab90614ecb565b60405180910390fd5b6000612fbe613574565b9050612fd3818461359f90919063ffffffff16565b915050919050565b6001601a60166101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115613013576130126154c4565b5b6040519080825280602002602001820160405280156130415781602001602082028036833780820191505090505b509050308160008151811061305957613058615495565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156130fb57600080fd5b505afa15801561310f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613133919061473e565b8160018151811061314757613146615495565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506131ae30601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846123b8565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613212959493929190615146565b600060405180830381600087803b15801561322c57600080fd5b505af1158015613240573d6000803e3d6000fd5b50505050506000601a60166101000a81548160ff02191690831515021790555050565b80613271576132706135e9565b5b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156133145750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156133295761332484848461362c565b613560565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156133cc5750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156133e1576133dc84848461388c565b61355f565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156134855750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561349a57613495848484613aec565b61355e565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561353c5750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156135515761354c848484613cb7565b61355d565b61355c848484613aec565b5b5b5b5b8061356e5761356d613fac565b5b50505050565b6000806000613581613fc0565b91509150613598818361359f90919063ffffffff16565b9250505090565b60006135e183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061428f565b905092915050565b6000600d541480156135fd57506000600e54145b156136075761362a565b600d54601281905550600e546013819055506000600d819055506000600e819055505b565b60008060008060008061363e876142f2565b95509550955095509550955061369c87600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461435a90919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061373186600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461435a90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506137c685600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546143a490919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061381281614402565b61381c84836144bf565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051613879919061512b565b60405180910390a3505050505050505050565b60008060008060008061389e876142f2565b9550955095509550955095506138fc86600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461435a90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061399183600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546143a490919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613a2685600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546143a490919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613a7281614402565b613a7c84836144bf565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051613ad9919061512b565b60405180910390a3505050505050505050565b600080600080600080613afe876142f2565b955095509550955095509550613b5c86600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461435a90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613bf185600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546143a490919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613c3d81614402565b613c4784836144bf565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051613ca4919061512b565b60405180910390a3505050505050505050565b600080600080600080613cc9876142f2565b955095509550955095509550613d2787600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461435a90919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613dbc86600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461435a90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613e5183600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546143a490919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613ee685600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546143a490919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613f3281614402565b613f3c84836144bf565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051613f99919061512b565b60405180910390a3505050505050505050565b601254600d81905550601354600e81905550565b6000806000600b5490506000683635c9adc5dea00000905060005b6007805490508110156142445782600260006007848154811061400157614000615495565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411806140ef575081600360006007848154811061408757614086615495565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b1561410d57600b54683635c9adc5dea000009450945050505061428b565b61419d600260006007848154811061412857614127615495565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548461435a90919063ffffffff16565b925061422f60036000600784815481106141ba576141b9615495565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361435a90919063ffffffff16565b9150808061423c906153bf565b915050613fdb565b50614263683635c9adc5dea00000600b5461359f90919063ffffffff16565b82101561428257600b54683635c9adc5dea0000093509350505061428b565b81819350935050505b9091565b600080831182906142d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016142cd9190614e69565b60405180910390fd5b50600083856142e59190615266565b9050809150509392505050565b600080600080600080600080600061430f8a600d54600e546144f9565b925092509250600061431f613574565b905060008060006143328e87878761458f565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b600061439c83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612d83565b905092915050565b60008082846143b39190615210565b9050838110156143f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016143ef90614f2b565b60405180910390fd5b8091505092915050565b600061440c613574565b90506000614423828461461890919063ffffffff16565b905061447781600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546143a490919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b6144d482600b5461435a90919063ffffffff16565b600b819055506144ef81600c546143a490919063ffffffff16565b600c819055505050565b6000806000806145256064614517888a61461890919063ffffffff16565b61359f90919063ffffffff16565b9050600061454f6064614541888b61461890919063ffffffff16565b61359f90919063ffffffff16565b905060006145788261456a858c61435a90919063ffffffff16565b61435a90919063ffffffff16565b905080838395509550955050505093509350939050565b6000806000806145a8858961461890919063ffffffff16565b905060006145bf868961461890919063ffffffff16565b905060006145d6878961461890919063ffffffff16565b905060006145ff826145f1858761435a90919063ffffffff16565b61435a90919063ffffffff16565b9050838184965096509650505050509450945094915050565b60008083141561462b576000905061468d565b600082846146399190615297565b90508284826146489190615266565b14614688576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161467f90614fab565b60405180910390fd5b809150505b92915050565b6000813590506146a281615a08565b92915050565b6000815190506146b781615a08565b92915050565b6000813590506146cc81615a1f565b92915050565b6000815190506146e181615a1f565b92915050565b6000813590506146f681615a36565b92915050565b60008151905061470b81615a36565b92915050565b600060208284031215614727576147266154f3565b5b600061473584828501614693565b91505092915050565b600060208284031215614754576147536154f3565b5b6000614762848285016146a8565b91505092915050565b60008060408385031215614782576147816154f3565b5b600061479085828601614693565b92505060206147a185828601614693565b9150509250929050565b6000806000606084860312156147c4576147c36154f3565b5b60006147d286828701614693565b93505060206147e386828701614693565b92505060406147f4868287016146e7565b9150509250925092565b60008060408385031215614815576148146154f3565b5b600061482385828601614693565b9250506020614834858286016146bd565b9150509250929050565b60008060408385031215614855576148546154f3565b5b600061486385828601614693565b9250506020614874858286016146e7565b9150509250929050565b600060208284031215614894576148936154f3565b5b60006148a2848285016146bd565b91505092915050565b6000602082840312156148c1576148c06154f3565b5b60006148cf848285016146d2565b91505092915050565b6000602082840312156148ee576148ed6154f3565b5b60006148fc848285016146e7565b91505092915050565b6000806040838503121561491c5761491b6154f3565b5b600061492a858286016146e7565b925050602061493b858286016146e7565b9150509250929050565b60008060006060848603121561495e5761495d6154f3565b5b600061496c868287016146fc565b935050602061497d868287016146fc565b925050604061498e868287016146fc565b9150509250925092565b60006149a483836149b0565b60208301905092915050565b6149b981615325565b82525050565b6149c881615325565b82525050565b60006149d9826151cb565b6149e381856151ee565b93506149ee836151bb565b8060005b83811015614a1f578151614a068882614998565b9750614a11836151e1565b9250506001810190506149f2565b5085935050505092915050565b614a3581615337565b82525050565b614a448161537a565b82525050565b6000614a55826151d6565b614a5f81856151ff565b9350614a6f81856020860161538c565b614a78816154f8565b840191505092915050565b6000614a906023836151ff565b9150614a9b82615509565b604082019050919050565b6000614ab3601d836151ff565b9150614abe82615558565b602082019050919050565b6000614ad6602a836151ff565b9150614ae182615581565b604082019050919050565b6000614af96022836151ff565b9150614b04826155d0565b604082019050919050565b6000614b1c6022836151ff565b9150614b278261561f565b604082019050919050565b6000614b3f601b836151ff565b9150614b4a8261566e565b602082019050919050565b6000614b626024836151ff565b9150614b6d82615697565b604082019050919050565b6000614b85601b836151ff565b9150614b90826156e6565b602082019050919050565b6000614ba8601e836151ff565b9150614bb38261570f565b602082019050919050565b6000614bcb6021836151ff565b9150614bd682615738565b604082019050919050565b6000614bee6020836151ff565b9150614bf982615787565b602082019050919050565b6000614c116029836151ff565b9150614c1c826157b0565b604082019050919050565b6000614c34601a836151ff565b9150614c3f826157ff565b602082019050919050565b6000614c576024836151ff565b9150614c6282615828565b604082019050919050565b6000614c7a6025836151ff565b9150614c8582615877565b604082019050919050565b6000614c9d6024836151ff565b9150614ca8826158c6565b604082019050919050565b6000614cc06017836151ff565b9150614ccb82615915565b602082019050919050565b6000614ce36013836151ff565b9150614cee8261593e565b602082019050919050565b6000614d066018836151ff565b9150614d1182615967565b602082019050919050565b6000614d296022836151ff565b9150614d3482615990565b604082019050919050565b6000614d4c6017836151ff565b9150614d57826159df565b602082019050919050565b614d6b81615363565b82525050565b614d7a8161536d565b82525050565b6000602082019050614d9560008301846149bf565b92915050565b6000604082019050614db060008301856149bf565b614dbd60208301846149bf565b9392505050565b6000604082019050614dd960008301856149bf565b614de66020830184614d62565b9392505050565b600060c082019050614e0260008301896149bf565b614e0f6020830188614d62565b614e1c6040830187614a3b565b614e296060830186614a3b565b614e3660808301856149bf565b614e4360a0830184614d62565b979650505050505050565b6000602082019050614e636000830184614a2c565b92915050565b60006020820190508181036000830152614e838184614a4a565b905092915050565b60006020820190508181036000830152614ea481614a83565b9050919050565b60006020820190508181036000830152614ec481614aa6565b9050919050565b60006020820190508181036000830152614ee481614ac9565b9050919050565b60006020820190508181036000830152614f0481614aec565b9050919050565b60006020820190508181036000830152614f2481614b0f565b9050919050565b60006020820190508181036000830152614f4481614b32565b9050919050565b60006020820190508181036000830152614f6481614b55565b9050919050565b60006020820190508181036000830152614f8481614b78565b9050919050565b60006020820190508181036000830152614fa481614b9b565b9050919050565b60006020820190508181036000830152614fc481614bbe565b9050919050565b60006020820190508181036000830152614fe481614be1565b9050919050565b6000602082019050818103600083015261500481614c04565b9050919050565b6000602082019050818103600083015261502481614c27565b9050919050565b6000602082019050818103600083015261504481614c4a565b9050919050565b6000602082019050818103600083015261506481614c6d565b9050919050565b6000602082019050818103600083015261508481614c90565b9050919050565b600060208201905081810360008301526150a481614cb3565b9050919050565b600060208201905081810360008301526150c481614cd6565b9050919050565b600060208201905081810360008301526150e481614cf9565b9050919050565b6000602082019050818103600083015261510481614d1c565b9050919050565b6000602082019050818103600083015261512481614d3f565b9050919050565b60006020820190506151406000830184614d62565b92915050565b600060a08201905061515b6000830188614d62565b6151686020830187614a3b565b818103604083015261517a81866149ce565b905061518960608301856149bf565b6151966080830184614d62565b9695505050505050565b60006020820190506151b56000830184614d71565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600061521b82615363565b915061522683615363565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561525b5761525a615408565b5b828201905092915050565b600061527182615363565b915061527c83615363565b92508261528c5761528b615437565b5b828204905092915050565b60006152a282615363565b91506152ad83615363565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156152e6576152e5615408565b5b828202905092915050565b60006152fc82615363565b915061530783615363565b92508282101561531a57615319615408565b5b828203905092915050565b600061533082615343565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b600061538582615363565b9050919050565b60005b838110156153aa57808201518184015260208101905061538f565b838111156153b9576000848401525b50505050565b60006153ca82615363565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156153fd576153fc615408565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f4d757374206b656570206665657320617420313525206f72206c657373000000600082015250565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f596f75722062757920636f6f6c646f776e20686173206e6f742065787069726560008201527f642e000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b7f4163636f756e7420697320616c7265616479206578636c756465640000000000600082015250565b7f4163636f756e7420697320616c726561647920626c61636b6c69737465640000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f4163636f756e74206973206e6f7420626c61636b6c6973746564000000000000600082015250565b7f57652063616e206e6f7420626c61636b6c69737420556e697377617020726f7560008201527f7465722e00000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b7f54726164696e67206e6f742079657420656e61626c65642e0000000000000000600082015250565b7f57652063616e206e6f74206578636c75646520556e697377617020726f75746560008201527f722e000000000000000000000000000000000000000000000000000000000000602082015250565b7f596f752068617665206e6f20706f776572206865726521000000000000000000600082015250565b615a1181615325565b8114615a1c57600080fd5b50565b615a2881615337565b8114615a3357600080fd5b50565b615a3f81615363565b8114615a4a57600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212209e3f688f50f0599775ebb611a2af876a5b5c507eed2f089d8df2579d28521c8464736f6c63430008070033

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

000000000000000000000000e16a61ed9ff468d7d51224b0fc1b026f1d40eab6000000000000000000000000001aab6e19d49056d37dbb7cfbc9bc679d5de766000000000000000000000000d1955f559c65fbd609a0cf74bd2239cf0dde38b0

-----Decoded View---------------
Arg [0] : FeeAddress (address): 0xe16A61Ed9fF468d7d51224b0FC1b026f1d40eab6
Arg [1] : FeeAddress2 (address): 0x001AAB6e19D49056D37dBB7cFBC9bC679D5DE766
Arg [2] : FeeAddress3 (address): 0xd1955f559C65fBd609a0CF74BD2239cF0ddE38B0

-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 000000000000000000000000e16a61ed9ff468d7d51224b0fc1b026f1d40eab6
Arg [1] : 000000000000000000000000001aab6e19d49056d37dbb7cfbc9bc679d5de766
Arg [2] : 000000000000000000000000d1955f559c65fbd609a0cf74bd2239cf0dde38b0


Deployed Bytecode Sourcemap

4114:21902:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10760:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11612:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11037:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11781:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25568:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10946:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24308:123;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23073:160;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25780:124;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15825:242;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22875:190;;;;;;;;;;;;;:::i;:::-;;11140:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3193:148;;;;;;;;;;;;;:::i;:::-;;5320:46;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2979:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10851:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11286:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25676:96;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25423:137;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24927:484;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15599:214;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22672:191;;;;;;;;;;;;;:::i;:::-;;22550:114;;;;;;;;;;;;;:::i;:::-;;23245:110;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25912:101;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11461:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24443:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21758:784;;;;;;;;;;;;;:::i;:::-;;23367:443;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23818:478;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24574:341;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10760:83;10797:13;10830:5;;;;;;;;;;;;;;;;;10823:12;;10760:83;:::o;11612:161::-;11687:4;11704:39;11713:12;:10;:12::i;:::-;11727:7;11736:6;11704:8;:39::i;:::-;11761:4;11754:11;;11612:161;;;;:::o;11037:95::-;11090:7;4760:12;11110:14;;11037:95;:::o;11781:313::-;11879:4;11896:36;11906:6;11914:9;11925:6;11896:9;:36::i;:::-;11943:121;11952:6;11960:12;:10;:12::i;:::-;11974:89;12012:6;11974:89;;;;;;;;;;;;;;;;;:11;:19;11986:6;11974:19;;;;;;;;;;;;;;;:33;11994:12;:10;:12::i;:::-;11974:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;11943:8;:121::i;:::-;12082:4;12075:11;;11781:313;;;;;:::o;25568:100::-;25612:4;25636:24;25654:4;25636:9;:24::i;:::-;25629:31;;25568:100;:::o;10946:83::-;10987:5;5014:1;11005:16;;10946:83;:::o;24308:123::-;24372:4;24396:18;:27;24415:7;24396:27;;;;;;;;;;;;;;;;;;;;;;;;;24389:34;;24308:123;;;:::o;23073:160::-;3116:12;:10;:12::i;:::-;3106:22;;:6;;;;;;;;;;:22;;;3098:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23164:5:::1;23145:16;;:24;;;;;;;;;;;;;;;;;;23185:40;23208:16;;;;;;;;;;;23185:40;;;;;;:::i;:::-;;;;;;;;23073:160:::0;:::o;25780:124::-;25835:4;25877:8;:15;25886:5;25877:15;;;;;;;;;;;;;;;:19;;;25859:15;:37;;;;:::i;:::-;25852:44;;25780:124;;;:::o;15825:242::-;3116:12;:10;:12::i;:::-;3106:22;;:6;;;;;;;;;;:22;;;3098:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15917:6:::1;15907:7;:16;;;;15945:7;15934:8;:18;;;;15983:7;15976:6;:14;;;;:::i;:::-;15963:10;:27;;;;16023:2;16009:10:::0;::::1;:16;;16001:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;15825:242:::0;;:::o;22875:190::-;22941:11;;;;;;;;;;;22925:27;;:12;:10;:12::i;:::-;:27;;;22917:36;;;;;;22964:26;22993:21;22964:50;;23025:32;23038:18;23025:12;:32::i;:::-;22906:159;22875:190::o;11140:138::-;11206:7;11233:37;11253:7;:16;11261:7;11253:16;;;;;;;;;;;;;;;;11233:19;:37::i;:::-;11226:44;;11140:138;;;:::o;3193:148::-;3116:12;:10;:12::i;:::-;3106:22;;:6;;;;;;;;;;:22;;;3098:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;3300:1:::1;3263:40;;3284:6;::::0;::::1;;;;;;;;3263:40;;;;;;;;;;;;3331:1;3314:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;3193:148::o:0;5320:46::-;;;;:::o;2979:79::-;3017:7;3044:6;;;;;;;;;;;3037:13;;2979:79;:::o;10851:87::-;10890:13;10923:7;;;;;;;;;;;;;;;;;10916:14;;10851:87;:::o;11286:167::-;11364:4;11381:42;11391:12;:10;:12::i;:::-;11405:9;11416:6;11381:9;:42::i;:::-;11441:4;11434:11;;11286:167;;;;:::o;25676:96::-;25724:4;25748:16;;;;;;;;;;;25741:23;;25676:96;:::o;25423:137::-;3116:12;:10;:12::i;:::-;3106:22;;:6;;;;;;;;;;:22;;;3098:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;25544:8:::1;25514:18;:27;25533:7;25514:27;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;25423:137:::0;;:::o;24927:484::-;3116:12;:10;:12::i;:::-;3106:22;;:6;;;;;;;;;;:22;;;3098:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;25000:17:::1;:26;25018:7;25000:26;;;;;;;;;;;;;;;;;;;;;;;;;24992:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;25073:9;25068:336;25092:16;:23;;;;25088:1;:27;25068:336;;;25164:7;25141:30;;:16;25158:1;25141:19;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:30;;;25137:256;;;25214:16;25257:1;25231:16;:23;;;;:27;;;;:::i;:::-;25214:45;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;25192:16;25209:1;25192:19;;;;;;;;:::i;:::-;;;;;;;;;;:67;;;;;;;;;;;;;;;;;;25307:5;25278:17;:26;25296:7;25278:26;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;25331:16;:22;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;25372:5;;25137:256;25117:3;;;;;:::i;:::-;;;;25068:336;;;;24927:484:::0;:::o;15599:214::-;3116:12;:10;:12::i;:::-;3106:22;;:6;;;;;;;;;;:22;;;3098:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15721:3:::1;15715:4;15711:1;15695:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;15694:30;;;;:::i;:::-;15684:6;:40;;15676:89;;;;;;;;;;;;:::i;:::-;;;;;;;;;15799:5;15789:6;:16;;;;:::i;:::-;15776:10;:29;;;;15599:214:::0;:::o;22672:191::-;22738:11;;;;;;;;;;;22722:27;;:12;:10;:12::i;:::-;:27;;;22714:36;;;;;;22761:23;22787:24;22805:4;22787:9;:24::i;:::-;22761:50;;22822:33;22839:15;22822:16;:33::i;:::-;22703:160;22672:191::o;22550:114::-;3116:12;:10;:12::i;:::-;3106:22;;:6;;;;;;;;;;:22;;;3098:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22615:4:::1;22601:11;;:18;;;;;;;;;;;;;;;;;;22644:12;22630:11;:26;;;;22550:114::o:0;23245:110::-;23303:4;23327:11;:20;23339:7;23327:20;;;;;;;;;;;;;;;;;;;;;;;;;23320:27;;23245:110;;;:::o;25912:101::-;25957:4;25981:24;25991:13;;;;;;;;;;;25981:9;:24::i;:::-;25974:31;;25912:101;:::o;11461:143::-;11542:7;11569:11;:18;11581:5;11569:18;;;;;;;;;;;;;;;:27;11588:7;11569:27;;;;;;;;;;;;;;;;11562:34;;11461:143;;;;:::o;24443:119::-;24504:4;24528:17;:26;24546:7;24528:26;;;;;;;;;;;;;;;;;;;;;;;;;24521:33;;24443:119;;;:::o;21758:784::-;3116:12;:10;:12::i;:::-;3106:22;;:6;;;;;;;;;;:22;;;3098:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21823:11:::1;;;;;;;;;;;21822:12;21814:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;21872:35;21929:42;21872:100;;22001:16;21983:15;;:34;;;;;;;;;;;;;;;;;;22028:58;22045:4;22060:15;;;;;;;;;;;4760:12;22028:8;:58::i;:::-;22131:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22113:56;;;22178:4;22185:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22113:96;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22097:13;;:112;;;;;;;;;;;;;;;;;;22220:15;;;;;;;;;;;:31;;;22259:21;22290:4;22296:24;22314:4;22296:9;:24::i;:::-;22321:1;22323::::0;22325:7:::1;:5;:7::i;:::-;22333:15;22220:129;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;22376:18;22360:13;:34;;;;22437:15;22423:11;:29;;;;22470:13;;;;;;;;;;;22463:29;;;22501:15;;;;;;;;;;;22519:14;22463:71;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;21803:739;21758:784::o:0;23367:443::-;3116:12;:10;:12::i;:::-;3106:22;;:6;;;;;;;;;;:22;;;3098:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23459:42:::1;23448:53;;:7;:53;;;;23440:100;;;;;;;;;;;;:::i;:::-;;;;;;;;;23560:11;:20;23572:7;23560:20;;;;;;;;;;;;;;;;;;;;;;;;;23559:21;23551:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;23645:1;23626:7;:16;23634:7;23626:16;;;;;;;;;;;;;;;;:20;23623:108;;;23682:37;23702:7;:16;23710:7;23702:16;;;;;;;;;;;;;;;;23682:19;:37::i;:::-;23663:7;:16;23671:7;23663:16;;;;;;;;;;;;;;;:56;;;;23623:108;23764:4;23741:11;:20;23753:7;23741:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;23779:9;23794:7;23779:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23367:443:::0;:::o;23818:478::-;3116:12;:10;:12::i;:::-;3106:22;;:6;;;;;;;;;;:22;;;3098:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23899:11:::1;:20;23911:7;23899:20;;;;;;;;;;;;;;;;;;;;;;;;;23891:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;23967:9;23962:327;23986:9;:16;;;;23982:1;:20;23962:327;;;24044:7;24028:23;;:9;24038:1;24028:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:23;;;24024:254;;;24087:9;24116:1;24097:9;:16;;;;:20;;;;:::i;:::-;24087:31;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;24072:9;24082:1;24072:12;;;;;;;;:::i;:::-;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;24156:1;24137:7;:16;24145:7;24137:16;;;;;;;;;;;;;;;:20;;;;24199:5;24176:11;:20;24188:7;24176:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;24223:9;:15;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;24257:5;;24024:254;24004:3;;;;;:::i;:::-;;;;23962:327;;;;23818:478:::0;:::o;24574:341::-;3116:12;:10;:12::i;:::-;3106:22;;:6;;;;;;;;;;:22;;;3098:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24658:42:::1;24647:53;;:7;:53;;;;24639:102;;;;;;;;;;;;:::i;:::-;;;;;;;;;24761:17;:26;24779:7;24761:26;;;;;;;;;;;;;;;;;;;;;;;;;24760:27;24752:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;24862:4;24833:17;:26;24851:7;24833:26;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;24877:16;24899:7;24877:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24574:341:::0;:::o;388:98::-;441:7;468:10;461:17;;388:98;:::o;12709:335::-;12819:1;12802:19;;:5;:19;;;;12794:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12900:1;12881:21;;:7;:21;;;;12873:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12982:6;12952:11;:18;12964:5;12952:18;;;;;;;;;;;;;;;:27;12971:7;12952:27;;;;;;;;;;;;;;;:36;;;;13020:7;13004:32;;13013:5;13004:32;;;13029:6;13004:32;;;;;;:::i;:::-;;;;;;;;12709:335;;;:::o;13052:2050::-;13156:1;13140:18;;:4;:18;;;;13132:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13233:1;13219:16;;:2;:16;;;;13211:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;13303:1;13294:6;:10;13286:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;13370:17;:21;13388:2;13370:21;;;;;;;;;;;;;;;;;;;;;;;;;13369:22;13361:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;13439:17;:29;13457:10;13439:29;;;;;;;;;;;;;;;;;;;;;;;;;13438:30;13430:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;13520:7;:5;:7::i;:::-;13512:15;;:4;:15;;;;:32;;;;;13537:7;:5;:7::i;:::-;13531:13;;:2;:13;;;;13512:32;13509:1389;;;13564:16;;;;;;;;;;;13561:168;;;13605:8;:20;13614:10;13605:20;;;;;;;;;;;;;;;:27;;;;;;;;;;;;13601:113;;13680:14;;;;;;;;13685:1;13680:14;;;;13687:1;13680:14;;;;13689:4;13680:14;;;;;13657:8;:20;13666:10;13657:20;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13601:113;13561:168;13776:13;;;;;;;;;;;13768:21;;:4;:21;;;:55;;;;;13807:15;;;;;;;;;;;13793:30;;:2;:30;;;;13768:55;:82;;;;;13828:18;:22;13847:2;13828:22;;;;;;;;;;;;;;;;;;;;;;;;;13827:23;13768:82;13765:627;;;13879:11;;;;;;;;;;;13871:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;13960:10;;13943:13;13953:2;13943:9;:13::i;:::-;13934:6;:22;;;;:::i;:::-;:36;;13926:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14016:16;;;;;;;;;;;14013:364;;;14077:12;14072:1;14060:11;;:13;;;;:::i;:::-;:29;14057:301;;14136:13;;14126:6;:23;;14118:32;;;;;;14204:15;14185:8;:12;14194:2;14185:12;;;;;;;;;;;;;;;:16;;;:34;14177:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;14323:10;14304:15;:30;;;;:::i;:::-;14285:8;:12;14294:2;14285:12;;;;;;;;;;;;;;;:16;;:49;;;;14057:301;14013:364;13765:627;14406:28;14437:24;14455:4;14437:9;:24::i;:::-;14406:55;;14503:6;;;;;;;;;;;14502:7;:32;;;;;14521:13;;;;;;;;;;;14513:21;;:4;:21;;;;14502:32;:47;;;;;14538:11;;;;;;;;;;;14502:47;14499:388;;;14596:1;14573:20;:24;14570:110;;;14622:38;14639:20;14622:16;:38::i;:::-;14570:110;14698:26;14727:21;14698:50;;14791:1;14770:18;:22;14767:105;;;14817:35;14830:21;14817:12;:35::i;:::-;14767:105;14551:336;14499:388;13546:1352;13509:1389;14908:12;14923:4;14908:19;;14943:18;:24;14962:4;14943:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;14971:18;:22;14990:2;14971:22;;;;;;;;;;;;;;;;;;;;;;;;;14943:50;14940:96;;;15019:5;15009:15;;14940:96;15056:38;15071:4;15076:2;15079:6;15086:7;15056:14;:38::i;:::-;13121:1981;13052:2050;;;:::o;1525:190::-;1611:7;1644:1;1639;:6;;1647:12;1631:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1671:9;1687:1;1683;:5;;;;:::i;:::-;1671:17;;1706:1;1699:8;;;1525:190;;;;;:::o;16083:188::-;16140:11;;;;;;;;;;;:20;;:35;16171:3;16168:2;16161:6;:9;;;;:::i;:::-;:13;;;;:::i;:::-;16140:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16186:12;;;;;;;;;;;:21;;:36;16218:3;16215:2;16208:6;:9;;;;:::i;:::-;:13;;;;:::i;:::-;16186:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16227:12;;;;;;;;;;;:21;;:36;16259:3;16256:2;16249:6;:9;;;;:::i;:::-;:13;;;;:::i;:::-;16227:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16083:188;:::o;12102:254::-;12169:7;12208;;12197;:18;;12189:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;12273:19;12296:10;:8;:10::i;:::-;12273:33;;12324:24;12336:11;12324:7;:11;;:24;;;;:::i;:::-;12317:31;;;12102:254;;;:::o;15110:483::-;5990:4;5981:6;;:13;;;;;;;;;;;;;;;;;;15188:21:::1;15226:1;15212:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15188:40;;15257:4;15239;15244:1;15239:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;15283:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15273:4;15278:1;15273:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;15316:62;15333:4;15348:15;;;;;;;;;;;15366:11;15316:8;:62::i;:::-;15389:15;;;;;;;;;;;:66;;;15470:11;15496:1;15512:4;15539;15559:15;15389:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;15177:416;6026:5:::0;6017:6;;:14;;;;;;;;;;;;;;;;;;15110:483;:::o;16283:815::-;16395:7;16391:40;;16417:14;:12;:14::i;:::-;16391:40;16446:11;:19;16458:6;16446:19;;;;;;;;;;;;;;;;;;;;;;;;;:46;;;;;16470:11;:22;16482:9;16470:22;;;;;;;;;;;;;;;;;;;;;;;;;16469:23;16446:46;16442:597;;;16509:48;16531:6;16539:9;16550:6;16509:21;:48::i;:::-;16442:597;;;16580:11;:19;16592:6;16580:19;;;;;;;;;;;;;;;;;;;;;;;;;16579:20;:46;;;;;16603:11;:22;16615:9;16603:22;;;;;;;;;;;;;;;;;;;;;;;;;16579:46;16575:464;;;16642:46;16662:6;16670:9;16681:6;16642:19;:46::i;:::-;16575:464;;;16711:11;:19;16723:6;16711:19;;;;;;;;;;;;;;;;;;;;;;;;;16710:20;:47;;;;;16735:11;:22;16747:9;16735:22;;;;;;;;;;;;;;;;;;;;;;;;;16734:23;16710:47;16706:333;;;16774:44;16792:6;16800:9;16811:6;16774:17;:44::i;:::-;16706:333;;;16840:11;:19;16852:6;16840:19;;;;;;;;;;;;;;;;;;;;;;;;;:45;;;;;16863:11;:22;16875:9;16863:22;;;;;;;;;;;;;;;;;;;;;;;;;16840:45;16836:203;;;16902:48;16924:6;16932:9;16943:6;16902:21;:48::i;:::-;16836:203;;;16983:44;17001:6;17009:9;17020:6;16983:17;:44::i;:::-;16836:203;16706:333;16575:464;16442:597;17053:7;17049:41;;17075:15;:13;:15::i;:::-;17049:41;16283:815;;;;:::o;20190:163::-;20231:7;20252:15;20269;20288:19;:17;:19::i;:::-;20251:56;;;;20325:20;20337:7;20325;:11;;:20;;;;:::i;:::-;20318:27;;;;20190:163;:::o;1976:132::-;2034:7;2061:39;2065:1;2068;2061:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2054:46;;1976:132;;;;:::o;12364:210::-;12421:1;12410:7;;:12;:29;;;;;12438:1;12426:8;;:13;12410:29;12407:41;;;12441:7;;12407:41;12476:7;;12458:15;:25;;;;12513:8;;12494:16;:27;;;;12542:1;12532:7;:11;;;;12565:1;12554:8;:12;;;;12364:210;:::o;18170:549::-;18273:15;18290:23;18315:12;18329:23;18354:12;18368:13;18385:19;18396:7;18385:10;:19::i;:::-;18272:132;;;;;;;;;;;;18433:28;18453:7;18433;:15;18441:6;18433:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;18415:7;:15;18423:6;18415:15;;;;;;;;;;;;;;;:46;;;;18490:28;18510:7;18490;:15;18498:6;18490:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;18472:7;:15;18480:6;18472:15;;;;;;;;;;;;;;;:46;;;;18550:39;18573:15;18550:7;:18;18558:9;18550:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;18529:7;:18;18537:9;18529:18;;;;;;;;;;;;;;;:60;;;;18601:16;18611:5;18601:9;:16::i;:::-;18628:23;18640:4;18646;18628:11;:23::i;:::-;18684:9;18667:44;;18676:6;18667:44;;;18695:15;18667:44;;;;;;:::i;:::-;;;;;;;;18261:458;;;;;;18170:549;;;:::o;17600:564::-;17701:15;17718:23;17743:12;17757:23;17782:12;17796:13;17813:19;17824:7;17813:10;:19::i;:::-;17700:132;;;;;;;;;;;;17861:28;17881:7;17861;:15;17869:6;17861:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;17843:7;:15;17851:6;17843:15;;;;;;;;;;;;;;;:46;;;;17921:39;17944:15;17921:7;:18;17929:9;17921:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;17900:7;:18;17908:9;17900:18;;;;;;;;;;;;;;;:60;;;;17992:39;18015:15;17992:7;:18;18000:9;17992:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;17971:7;:18;17979:9;17971:18;;;;;;;;;;;;;;;:60;;;;18046:16;18056:5;18046:9;:16::i;:::-;18073:23;18085:4;18091;18073:11;:23::i;:::-;18129:9;18112:44;;18121:6;18112:44;;;18140:15;18112:44;;;;;;:::i;:::-;;;;;;;;17689:475;;;;;;17600:564;;;:::o;17106:488::-;17205:15;17222:23;17247:12;17261:23;17286:12;17300:13;17317:19;17328:7;17317:10;:19::i;:::-;17204:132;;;;;;;;;;;;17365:28;17385:7;17365;:15;17373:6;17365:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;17347:7;:15;17355:6;17347:15;;;;;;;;;;;;;;;:46;;;;17425:39;17448:15;17425:7;:18;17433:9;17425:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;17404:7;:18;17412:9;17404:18;;;;;;;;;;;;;;;:60;;;;17476:16;17486:5;17476:9;:16::i;:::-;17503:23;17515:4;17521;17503:11;:23::i;:::-;17559:9;17542:44;;17551:6;17542:44;;;17570:15;17542:44;;;;;;:::i;:::-;;;;;;;;17193:401;;;;;;17106:488;;;:::o;18725:622::-;18828:15;18845:23;18870:12;18884:23;18909:12;18923:13;18940:19;18951:7;18940:10;:19::i;:::-;18827:132;;;;;;;;;;;;18988:28;19008:7;18988;:15;18996:6;18988:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;18970:7;:15;18978:6;18970:15;;;;;;;;;;;;;;;:46;;;;19045:28;19065:7;19045;:15;19053:6;19045:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;19027:7;:15;19035:6;19027:15;;;;;;;;;;;;;;;:46;;;;19105:39;19128:15;19105:7;:18;19113:9;19105:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;19084:7;:18;19092:9;19084:18;;;;;;;;;;;;;;;:60;;;;19176:39;19199:15;19176:7;:18;19184:9;19176:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;19155:7;:18;19163:9;19155:18;;;;;;;;;;;;;;;:60;;;;19229:16;19239:5;19229:9;:16::i;:::-;19256:23;19268:4;19274;19256:11;:23::i;:::-;19312:9;19295:44;;19304:6;19295:44;;;19323:15;19295:44;;;;;;:::i;:::-;;;;;;;;18816:531;;;;;;18725:622;;;:::o;12586:115::-;12640:15;;12630:7;:25;;;;12677:16;;12666:8;:27;;;;12586:115::o;20361:554::-;20411:7;20420;20440:15;20458:7;;20440:25;;20476:15;4760:12;20476:25;;20517:9;20512:289;20536:9;:16;;;;20532:1;:20;20512:289;;;20602:7;20578;:21;20586:9;20596:1;20586:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;20578:21;;;;;;;;;;;;;;;;:31;:66;;;;20637:7;20613;:21;20621:9;20631:1;20621:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;20613:21;;;;;;;;;;;;;;;;:31;20578:66;20574:97;;;20654:7;;4760:12;20646:25;;;;;;;;;20574:97;20696:34;20708:7;:21;20716:9;20726:1;20716:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;20708:21;;;;;;;;;;;;;;;;20696:7;:11;;:34;;;;:::i;:::-;20686:44;;20755:34;20767:7;:21;20775:9;20785:1;20775:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;20767:21;;;;;;;;;;;;;;;;20755:7;:11;;:34;;;;:::i;:::-;20745:44;;20554:3;;;;;:::i;:::-;;;;20512:289;;;;20824:20;4760:12;20824:7;;:11;;:20;;;;:::i;:::-;20814:7;:30;20811:60;;;20854:7;;4760:12;20846:25;;;;;;;;20811:60;20890:7;20899;20882:25;;;;;;20361:554;;;:::o;2116:189::-;2202:7;2234:1;2230;:5;2237:12;2222:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2261:9;2277:1;2273;:5;;;;:::i;:::-;2261:17;;2296:1;2289:8;;;2116:189;;;;;:::o;19355:468::-;19414:7;19423;19432;19441;19450;19459;19480:23;19505:12;19519:13;19536:39;19548:7;19557;;19566:8;;19536:11;:39::i;:::-;19479:96;;;;;;19586:19;19609:10;:8;:10::i;:::-;19586:33;;19631:15;19648:23;19673:12;19689:46;19701:7;19710:4;19716:5;19723:11;19689;:46::i;:::-;19630:105;;;;;;19754:7;19763:15;19780:4;19786:15;19803:4;19809:5;19746:69;;;;;;;;;;;;;;;;;;;19355:468;;;;;;;:::o;1381:136::-;1439:7;1466:43;1470:1;1473;1466:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1459:50;;1381:136;;;;:::o;1194:179::-;1252:7;1272:9;1288:1;1284;:5;;;;:::i;:::-;1272:17;;1313:1;1308;:6;;1300:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1364:1;1357:8;;;1194:179;;;;:::o;21340:214::-;21393:19;21416:10;:8;:10::i;:::-;21393:33;;21437:13;21453:22;21463:11;21453:5;:9;;:22;;;;:::i;:::-;21437:38;;21513:33;21540:5;21513:7;:22;21529:4;21513:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;21488:7;:22;21504:4;21488:22;;;;;;;;;;;;;;;:58;;;;21382:172;;21340:214;:::o;21562:147::-;21640:17;21652:4;21640:7;;:11;;:17;;;;:::i;:::-;21630:7;:27;;;;21681:20;21696:4;21681:10;;:14;;:20;;;;:::i;:::-;21668:10;:33;;;;21562:147;;:::o;19831:351::-;19924:7;19933;19942;19962:12;19977:28;20001:3;19977:19;19989:6;19977:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;19962:43;;20016:13;20032:29;20057:3;20032:20;20044:7;20032;:11;;:20;;;;:::i;:::-;:24;;:29;;;;:::i;:::-;20016:45;;20072:23;20098:28;20120:5;20098:17;20110:4;20098:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;20072:54;;20145:15;20162:4;20168:5;20137:37;;;;;;;;;19831:351;;;;;;;:::o;20923:409::-;21033:7;21042;21051;21071:15;21089:24;21101:11;21089:7;:11;;:24;;;;:::i;:::-;21071:42;;21124:12;21139:21;21148:11;21139:4;:8;;:21;;;;:::i;:::-;21124:36;;21171:13;21187:22;21197:11;21187:5;:9;;:22;;;;:::i;:::-;21171:38;;21220:23;21246:28;21268:5;21246:17;21258:4;21246:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;21220:54;;21293:7;21302:15;21319:4;21285:39;;;;;;;;;;20923:409;;;;;;;;:::o;1723:245::-;1781:7;1809:1;1804;:6;1801:46;;;1834:1;1827:8;;;;1801:46;1857:9;1873:1;1869;:5;;;;:::i;:::-;1857:17;;1902:1;1897;1893;:5;;;;:::i;:::-;:10;1885:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1959:1;1952:8;;;1723:245;;;;;:::o;7:139:1:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;7:139;;;;:::o;152:143::-;209:5;240:6;234:13;225:22;;256:33;283:5;256:33;:::i;:::-;152:143;;;;:::o;301:133::-;344:5;382:6;369:20;360:29;;398:30;422:5;398:30;:::i;:::-;301:133;;;;:::o;440:137::-;494:5;525:6;519:13;510:22;;541:30;565:5;541:30;:::i;:::-;440:137;;;;:::o;583:139::-;629:5;667:6;654:20;645:29;;683:33;710:5;683:33;:::i;:::-;583:139;;;;:::o;728:143::-;785:5;816:6;810:13;801:22;;832:33;859:5;832:33;:::i;:::-;728:143;;;;:::o;877:329::-;936:6;985:2;973:9;964:7;960:23;956:32;953:119;;;991:79;;:::i;:::-;953:119;1111:1;1136:53;1181:7;1172:6;1161:9;1157:22;1136:53;:::i;:::-;1126:63;;1082:117;877:329;;;;:::o;1212:351::-;1282:6;1331:2;1319:9;1310:7;1306:23;1302:32;1299:119;;;1337:79;;:::i;:::-;1299:119;1457:1;1482:64;1538:7;1529:6;1518:9;1514:22;1482:64;:::i;:::-;1472:74;;1428:128;1212:351;;;;:::o;1569:474::-;1637:6;1645;1694:2;1682:9;1673:7;1669:23;1665:32;1662:119;;;1700:79;;:::i;:::-;1662:119;1820:1;1845:53;1890:7;1881:6;1870:9;1866:22;1845:53;:::i;:::-;1835:63;;1791:117;1947:2;1973:53;2018:7;2009:6;1998:9;1994:22;1973:53;:::i;:::-;1963:63;;1918:118;1569:474;;;;;:::o;2049:619::-;2126:6;2134;2142;2191:2;2179:9;2170:7;2166:23;2162:32;2159:119;;;2197:79;;:::i;:::-;2159:119;2317:1;2342:53;2387:7;2378:6;2367:9;2363:22;2342:53;:::i;:::-;2332:63;;2288:117;2444:2;2470:53;2515:7;2506:6;2495:9;2491:22;2470:53;:::i;:::-;2460:63;;2415:118;2572:2;2598:53;2643:7;2634:6;2623:9;2619:22;2598:53;:::i;:::-;2588:63;;2543:118;2049:619;;;;;:::o;2674:468::-;2739:6;2747;2796:2;2784:9;2775:7;2771:23;2767:32;2764:119;;;2802:79;;:::i;:::-;2764:119;2922:1;2947:53;2992:7;2983:6;2972:9;2968:22;2947:53;:::i;:::-;2937:63;;2893:117;3049:2;3075:50;3117:7;3108:6;3097:9;3093:22;3075:50;:::i;:::-;3065:60;;3020:115;2674:468;;;;;:::o;3148:474::-;3216:6;3224;3273:2;3261:9;3252:7;3248:23;3244:32;3241:119;;;3279:79;;:::i;:::-;3241:119;3399:1;3424:53;3469:7;3460:6;3449:9;3445:22;3424:53;:::i;:::-;3414:63;;3370:117;3526:2;3552:53;3597:7;3588:6;3577:9;3573:22;3552:53;:::i;:::-;3542:63;;3497:118;3148:474;;;;;:::o;3628:323::-;3684:6;3733:2;3721:9;3712:7;3708:23;3704:32;3701:119;;;3739:79;;:::i;:::-;3701:119;3859:1;3884:50;3926:7;3917:6;3906:9;3902:22;3884:50;:::i;:::-;3874:60;;3830:114;3628:323;;;;:::o;3957:345::-;4024:6;4073:2;4061:9;4052:7;4048:23;4044:32;4041:119;;;4079:79;;:::i;:::-;4041:119;4199:1;4224:61;4277:7;4268:6;4257:9;4253:22;4224:61;:::i;:::-;4214:71;;4170:125;3957:345;;;;:::o;4308:329::-;4367:6;4416:2;4404:9;4395:7;4391:23;4387:32;4384:119;;;4422:79;;:::i;:::-;4384:119;4542:1;4567:53;4612:7;4603:6;4592:9;4588:22;4567:53;:::i;:::-;4557:63;;4513:117;4308:329;;;;:::o;4643:474::-;4711:6;4719;4768:2;4756:9;4747:7;4743:23;4739:32;4736:119;;;4774:79;;:::i;:::-;4736:119;4894:1;4919:53;4964:7;4955:6;4944:9;4940:22;4919:53;:::i;:::-;4909:63;;4865:117;5021:2;5047:53;5092:7;5083:6;5072:9;5068:22;5047:53;:::i;:::-;5037:63;;4992:118;4643:474;;;;;:::o;5123:663::-;5211:6;5219;5227;5276:2;5264:9;5255:7;5251:23;5247:32;5244:119;;;5282:79;;:::i;:::-;5244:119;5402:1;5427:64;5483:7;5474:6;5463:9;5459:22;5427:64;:::i;:::-;5417:74;;5373:128;5540:2;5566:64;5622:7;5613:6;5602:9;5598:22;5566:64;:::i;:::-;5556:74;;5511:129;5679:2;5705:64;5761:7;5752:6;5741:9;5737:22;5705:64;:::i;:::-;5695:74;;5650:129;5123:663;;;;;:::o;5792:179::-;5861:10;5882:46;5924:3;5916:6;5882:46;:::i;:::-;5960:4;5955:3;5951:14;5937:28;;5792:179;;;;:::o;5977:108::-;6054:24;6072:5;6054:24;:::i;:::-;6049:3;6042:37;5977:108;;:::o;6091:118::-;6178:24;6196:5;6178:24;:::i;:::-;6173:3;6166:37;6091:118;;:::o;6245:732::-;6364:3;6393:54;6441:5;6393:54;:::i;:::-;6463:86;6542:6;6537:3;6463:86;:::i;:::-;6456:93;;6573:56;6623:5;6573:56;:::i;:::-;6652:7;6683:1;6668:284;6693:6;6690:1;6687:13;6668:284;;;6769:6;6763:13;6796:63;6855:3;6840:13;6796:63;:::i;:::-;6789:70;;6882:60;6935:6;6882:60;:::i;:::-;6872:70;;6728:224;6715:1;6712;6708:9;6703:14;;6668:284;;;6672:14;6968:3;6961:10;;6369:608;;;6245:732;;;;:::o;6983:109::-;7064:21;7079:5;7064:21;:::i;:::-;7059:3;7052:34;6983:109;;:::o;7098:147::-;7193:45;7232:5;7193:45;:::i;:::-;7188:3;7181:58;7098:147;;:::o;7251:364::-;7339:3;7367:39;7400:5;7367:39;:::i;:::-;7422:71;7486:6;7481:3;7422:71;:::i;:::-;7415:78;;7502:52;7547:6;7542:3;7535:4;7528:5;7524:16;7502:52;:::i;:::-;7579:29;7601:6;7579:29;:::i;:::-;7574:3;7570:39;7563:46;;7343:272;7251:364;;;;:::o;7621:366::-;7763:3;7784:67;7848:2;7843:3;7784:67;:::i;:::-;7777:74;;7860:93;7949:3;7860:93;:::i;:::-;7978:2;7973:3;7969:12;7962:19;;7621:366;;;:::o;7993:::-;8135:3;8156:67;8220:2;8215:3;8156:67;:::i;:::-;8149:74;;8232:93;8321:3;8232:93;:::i;:::-;8350:2;8345:3;8341:12;8334:19;;7993:366;;;:::o;8365:::-;8507:3;8528:67;8592:2;8587:3;8528:67;:::i;:::-;8521:74;;8604:93;8693:3;8604:93;:::i;:::-;8722:2;8717:3;8713:12;8706:19;;8365:366;;;:::o;8737:::-;8879:3;8900:67;8964:2;8959:3;8900:67;:::i;:::-;8893:74;;8976:93;9065:3;8976:93;:::i;:::-;9094:2;9089:3;9085:12;9078:19;;8737:366;;;:::o;9109:::-;9251:3;9272:67;9336:2;9331:3;9272:67;:::i;:::-;9265:74;;9348:93;9437:3;9348:93;:::i;:::-;9466:2;9461:3;9457:12;9450:19;;9109:366;;;:::o;9481:::-;9623:3;9644:67;9708:2;9703:3;9644:67;:::i;:::-;9637:74;;9720:93;9809:3;9720:93;:::i;:::-;9838:2;9833:3;9829:12;9822:19;;9481:366;;;:::o;9853:::-;9995:3;10016:67;10080:2;10075:3;10016:67;:::i;:::-;10009:74;;10092:93;10181:3;10092:93;:::i;:::-;10210:2;10205:3;10201:12;10194:19;;9853:366;;;:::o;10225:::-;10367:3;10388:67;10452:2;10447:3;10388:67;:::i;:::-;10381:74;;10464:93;10553:3;10464:93;:::i;:::-;10582:2;10577:3;10573:12;10566:19;;10225:366;;;:::o;10597:::-;10739:3;10760:67;10824:2;10819:3;10760:67;:::i;:::-;10753:74;;10836:93;10925:3;10836:93;:::i;:::-;10954:2;10949:3;10945:12;10938:19;;10597:366;;;:::o;10969:::-;11111:3;11132:67;11196:2;11191:3;11132:67;:::i;:::-;11125:74;;11208:93;11297:3;11208:93;:::i;:::-;11326:2;11321:3;11317:12;11310:19;;10969:366;;;:::o;11341:::-;11483:3;11504:67;11568:2;11563:3;11504:67;:::i;:::-;11497:74;;11580:93;11669:3;11580:93;:::i;:::-;11698:2;11693:3;11689:12;11682:19;;11341:366;;;:::o;11713:::-;11855:3;11876:67;11940:2;11935:3;11876:67;:::i;:::-;11869:74;;11952:93;12041:3;11952:93;:::i;:::-;12070:2;12065:3;12061:12;12054:19;;11713:366;;;:::o;12085:::-;12227:3;12248:67;12312:2;12307:3;12248:67;:::i;:::-;12241:74;;12324:93;12413:3;12324:93;:::i;:::-;12442:2;12437:3;12433:12;12426:19;;12085:366;;;:::o;12457:::-;12599:3;12620:67;12684:2;12679:3;12620:67;:::i;:::-;12613:74;;12696:93;12785:3;12696:93;:::i;:::-;12814:2;12809:3;12805:12;12798:19;;12457:366;;;:::o;12829:::-;12971:3;12992:67;13056:2;13051:3;12992:67;:::i;:::-;12985:74;;13068:93;13157:3;13068:93;:::i;:::-;13186:2;13181:3;13177:12;13170:19;;12829:366;;;:::o;13201:::-;13343:3;13364:67;13428:2;13423:3;13364:67;:::i;:::-;13357:74;;13440:93;13529:3;13440:93;:::i;:::-;13558:2;13553:3;13549:12;13542:19;;13201:366;;;:::o;13573:::-;13715:3;13736:67;13800:2;13795:3;13736:67;:::i;:::-;13729:74;;13812:93;13901:3;13812:93;:::i;:::-;13930:2;13925:3;13921:12;13914:19;;13573:366;;;:::o;13945:::-;14087:3;14108:67;14172:2;14167:3;14108:67;:::i;:::-;14101:74;;14184:93;14273:3;14184:93;:::i;:::-;14302:2;14297:3;14293:12;14286:19;;13945:366;;;:::o;14317:::-;14459:3;14480:67;14544:2;14539:3;14480:67;:::i;:::-;14473:74;;14556:93;14645:3;14556:93;:::i;:::-;14674:2;14669:3;14665:12;14658:19;;14317:366;;;:::o;14689:::-;14831:3;14852:67;14916:2;14911:3;14852:67;:::i;:::-;14845:74;;14928:93;15017:3;14928:93;:::i;:::-;15046:2;15041:3;15037:12;15030:19;;14689:366;;;:::o;15061:::-;15203:3;15224:67;15288:2;15283:3;15224:67;:::i;:::-;15217:74;;15300:93;15389:3;15300:93;:::i;:::-;15418:2;15413:3;15409:12;15402:19;;15061:366;;;:::o;15433:118::-;15520:24;15538:5;15520:24;:::i;:::-;15515:3;15508:37;15433:118;;:::o;15557:112::-;15640:22;15656:5;15640:22;:::i;:::-;15635:3;15628:35;15557:112;;:::o;15675:222::-;15768:4;15806:2;15795:9;15791:18;15783:26;;15819:71;15887:1;15876:9;15872:17;15863:6;15819:71;:::i;:::-;15675:222;;;;:::o;15903:332::-;16024:4;16062:2;16051:9;16047:18;16039:26;;16075:71;16143:1;16132:9;16128:17;16119:6;16075:71;:::i;:::-;16156:72;16224:2;16213:9;16209:18;16200:6;16156:72;:::i;:::-;15903:332;;;;;:::o;16241:::-;16362:4;16400:2;16389:9;16385:18;16377:26;;16413:71;16481:1;16470:9;16466:17;16457:6;16413:71;:::i;:::-;16494:72;16562:2;16551:9;16547:18;16538:6;16494:72;:::i;:::-;16241:332;;;;;:::o;16579:807::-;16828:4;16866:3;16855:9;16851:19;16843:27;;16880:71;16948:1;16937:9;16933:17;16924:6;16880:71;:::i;:::-;16961:72;17029:2;17018:9;17014:18;17005:6;16961:72;:::i;:::-;17043:80;17119:2;17108:9;17104:18;17095:6;17043:80;:::i;:::-;17133;17209:2;17198:9;17194:18;17185:6;17133:80;:::i;:::-;17223:73;17291:3;17280:9;17276:19;17267:6;17223:73;:::i;:::-;17306;17374:3;17363:9;17359:19;17350:6;17306:73;:::i;:::-;16579:807;;;;;;;;;:::o;17392:210::-;17479:4;17517:2;17506:9;17502:18;17494:26;;17530:65;17592:1;17581:9;17577:17;17568:6;17530:65;:::i;:::-;17392:210;;;;:::o;17608:313::-;17721:4;17759:2;17748:9;17744:18;17736:26;;17808:9;17802:4;17798:20;17794:1;17783:9;17779:17;17772:47;17836:78;17909:4;17900:6;17836:78;:::i;:::-;17828:86;;17608:313;;;;:::o;17927:419::-;18093:4;18131:2;18120:9;18116:18;18108:26;;18180:9;18174:4;18170:20;18166:1;18155:9;18151:17;18144:47;18208:131;18334:4;18208:131;:::i;:::-;18200:139;;17927:419;;;:::o;18352:::-;18518:4;18556:2;18545:9;18541:18;18533:26;;18605:9;18599:4;18595:20;18591:1;18580:9;18576:17;18569:47;18633:131;18759:4;18633:131;:::i;:::-;18625:139;;18352:419;;;:::o;18777:::-;18943:4;18981:2;18970:9;18966:18;18958:26;;19030:9;19024:4;19020:20;19016:1;19005:9;19001:17;18994:47;19058:131;19184:4;19058:131;:::i;:::-;19050:139;;18777:419;;;:::o;19202:::-;19368:4;19406:2;19395:9;19391:18;19383:26;;19455:9;19449:4;19445:20;19441:1;19430:9;19426:17;19419:47;19483:131;19609:4;19483:131;:::i;:::-;19475:139;;19202:419;;;:::o;19627:::-;19793:4;19831:2;19820:9;19816:18;19808:26;;19880:9;19874:4;19870:20;19866:1;19855:9;19851:17;19844:47;19908:131;20034:4;19908:131;:::i;:::-;19900:139;;19627:419;;;:::o;20052:::-;20218:4;20256:2;20245:9;20241:18;20233:26;;20305:9;20299:4;20295:20;20291:1;20280:9;20276:17;20269:47;20333:131;20459:4;20333:131;:::i;:::-;20325:139;;20052:419;;;:::o;20477:::-;20643:4;20681:2;20670:9;20666:18;20658:26;;20730:9;20724:4;20720:20;20716:1;20705:9;20701:17;20694:47;20758:131;20884:4;20758:131;:::i;:::-;20750:139;;20477:419;;;:::o;20902:::-;21068:4;21106:2;21095:9;21091:18;21083:26;;21155:9;21149:4;21145:20;21141:1;21130:9;21126:17;21119:47;21183:131;21309:4;21183:131;:::i;:::-;21175:139;;20902:419;;;:::o;21327:::-;21493:4;21531:2;21520:9;21516:18;21508:26;;21580:9;21574:4;21570:20;21566:1;21555:9;21551:17;21544:47;21608:131;21734:4;21608:131;:::i;:::-;21600:139;;21327:419;;;:::o;21752:::-;21918:4;21956:2;21945:9;21941:18;21933:26;;22005:9;21999:4;21995:20;21991:1;21980:9;21976:17;21969:47;22033:131;22159:4;22033:131;:::i;:::-;22025:139;;21752:419;;;:::o;22177:::-;22343:4;22381:2;22370:9;22366:18;22358:26;;22430:9;22424:4;22420:20;22416:1;22405:9;22401:17;22394:47;22458:131;22584:4;22458:131;:::i;:::-;22450:139;;22177:419;;;:::o;22602:::-;22768:4;22806:2;22795:9;22791:18;22783:26;;22855:9;22849:4;22845:20;22841:1;22830:9;22826:17;22819:47;22883:131;23009:4;22883:131;:::i;:::-;22875:139;;22602:419;;;:::o;23027:::-;23193:4;23231:2;23220:9;23216:18;23208:26;;23280:9;23274:4;23270:20;23266:1;23255:9;23251:17;23244:47;23308:131;23434:4;23308:131;:::i;:::-;23300:139;;23027:419;;;:::o;23452:::-;23618:4;23656:2;23645:9;23641:18;23633:26;;23705:9;23699:4;23695:20;23691:1;23680:9;23676:17;23669:47;23733:131;23859:4;23733:131;:::i;:::-;23725:139;;23452:419;;;:::o;23877:::-;24043:4;24081:2;24070:9;24066:18;24058:26;;24130:9;24124:4;24120:20;24116:1;24105:9;24101:17;24094:47;24158:131;24284:4;24158:131;:::i;:::-;24150:139;;23877:419;;;:::o;24302:::-;24468:4;24506:2;24495:9;24491:18;24483:26;;24555:9;24549:4;24545:20;24541:1;24530:9;24526:17;24519:47;24583:131;24709:4;24583:131;:::i;:::-;24575:139;;24302:419;;;:::o;24727:::-;24893:4;24931:2;24920:9;24916:18;24908:26;;24980:9;24974:4;24970:20;24966:1;24955:9;24951:17;24944:47;25008:131;25134:4;25008:131;:::i;:::-;25000:139;;24727:419;;;:::o;25152:::-;25318:4;25356:2;25345:9;25341:18;25333:26;;25405:9;25399:4;25395:20;25391:1;25380:9;25376:17;25369:47;25433:131;25559:4;25433:131;:::i;:::-;25425:139;;25152:419;;;:::o;25577:::-;25743:4;25781:2;25770:9;25766:18;25758:26;;25830:9;25824:4;25820:20;25816:1;25805:9;25801:17;25794:47;25858:131;25984:4;25858:131;:::i;:::-;25850:139;;25577:419;;;:::o;26002:::-;26168:4;26206:2;26195:9;26191:18;26183:26;;26255:9;26249:4;26245:20;26241:1;26230:9;26226:17;26219:47;26283:131;26409:4;26283:131;:::i;:::-;26275:139;;26002:419;;;:::o;26427:::-;26593:4;26631:2;26620:9;26616:18;26608:26;;26680:9;26674:4;26670:20;26666:1;26655:9;26651:17;26644:47;26708:131;26834:4;26708:131;:::i;:::-;26700:139;;26427:419;;;:::o;26852:222::-;26945:4;26983:2;26972:9;26968:18;26960:26;;26996:71;27064:1;27053:9;27049:17;27040:6;26996:71;:::i;:::-;26852:222;;;;:::o;27080:831::-;27343:4;27381:3;27370:9;27366:19;27358:27;;27395:71;27463:1;27452:9;27448:17;27439:6;27395:71;:::i;:::-;27476:80;27552:2;27541:9;27537:18;27528:6;27476:80;:::i;:::-;27603:9;27597:4;27593:20;27588:2;27577:9;27573:18;27566:48;27631:108;27734:4;27725:6;27631:108;:::i;:::-;27623:116;;27749:72;27817:2;27806:9;27802:18;27793:6;27749:72;:::i;:::-;27831:73;27899:3;27888:9;27884:19;27875:6;27831:73;:::i;:::-;27080:831;;;;;;;;:::o;27917:214::-;28006:4;28044:2;28033:9;28029:18;28021:26;;28057:67;28121:1;28110:9;28106:17;28097:6;28057:67;:::i;:::-;27917:214;;;;:::o;28218:132::-;28285:4;28308:3;28300:11;;28338:4;28333:3;28329:14;28321:22;;28218:132;;;:::o;28356:114::-;28423:6;28457:5;28451:12;28441:22;;28356:114;;;:::o;28476:99::-;28528:6;28562:5;28556:12;28546:22;;28476:99;;;:::o;28581:113::-;28651:4;28683;28678:3;28674:14;28666:22;;28581:113;;;:::o;28700:184::-;28799:11;28833:6;28828:3;28821:19;28873:4;28868:3;28864:14;28849:29;;28700:184;;;;:::o;28890:169::-;28974:11;29008:6;29003:3;28996:19;29048:4;29043:3;29039:14;29024:29;;28890:169;;;;:::o;29065:305::-;29105:3;29124:20;29142:1;29124:20;:::i;:::-;29119:25;;29158:20;29176:1;29158:20;:::i;:::-;29153:25;;29312:1;29244:66;29240:74;29237:1;29234:81;29231:107;;;29318:18;;:::i;:::-;29231:107;29362:1;29359;29355:9;29348:16;;29065:305;;;;:::o;29376:185::-;29416:1;29433:20;29451:1;29433:20;:::i;:::-;29428:25;;29467:20;29485:1;29467:20;:::i;:::-;29462:25;;29506:1;29496:35;;29511:18;;:::i;:::-;29496:35;29553:1;29550;29546:9;29541:14;;29376:185;;;;:::o;29567:348::-;29607:7;29630:20;29648:1;29630:20;:::i;:::-;29625:25;;29664:20;29682:1;29664:20;:::i;:::-;29659:25;;29852:1;29784:66;29780:74;29777:1;29774:81;29769:1;29762:9;29755:17;29751:105;29748:131;;;29859:18;;:::i;:::-;29748:131;29907:1;29904;29900:9;29889:20;;29567:348;;;;:::o;29921:191::-;29961:4;29981:20;29999:1;29981:20;:::i;:::-;29976:25;;30015:20;30033:1;30015:20;:::i;:::-;30010:25;;30054:1;30051;30048:8;30045:34;;;30059:18;;:::i;:::-;30045:34;30104:1;30101;30097:9;30089:17;;29921:191;;;;:::o;30118:96::-;30155:7;30184:24;30202:5;30184:24;:::i;:::-;30173:35;;30118:96;;;:::o;30220:90::-;30254:7;30297:5;30290:13;30283:21;30272:32;;30220:90;;;:::o;30316:126::-;30353:7;30393:42;30386:5;30382:54;30371:65;;30316:126;;;:::o;30448:77::-;30485:7;30514:5;30503:16;;30448:77;;;:::o;30531:86::-;30566:7;30606:4;30599:5;30595:16;30584:27;;30531:86;;;:::o;30623:121::-;30681:9;30714:24;30732:5;30714:24;:::i;:::-;30701:37;;30623:121;;;:::o;30750:307::-;30818:1;30828:113;30842:6;30839:1;30836:13;30828:113;;;30927:1;30922:3;30918:11;30912:18;30908:1;30903:3;30899:11;30892:39;30864:2;30861:1;30857:10;30852:15;;30828:113;;;30959:6;30956:1;30953:13;30950:101;;;31039:1;31030:6;31025:3;31021:16;31014:27;30950:101;30799:258;30750:307;;;:::o;31063:233::-;31102:3;31125:24;31143:5;31125:24;:::i;:::-;31116:33;;31171:66;31164:5;31161:77;31158:103;;;31241:18;;:::i;:::-;31158:103;31288:1;31281:5;31277:13;31270:20;;31063:233;;;:::o;31302:180::-;31350:77;31347:1;31340:88;31447:4;31444:1;31437:15;31471:4;31468:1;31461:15;31488:180;31536:77;31533:1;31526:88;31633:4;31630:1;31623:15;31657:4;31654:1;31647:15;31674:180;31722:77;31719:1;31712:88;31819:4;31816:1;31809:15;31843:4;31840:1;31833:15;31860:180;31908:77;31905:1;31898:88;32005:4;32002:1;31995:15;32029:4;32026:1;32019:15;32046:180;32094:77;32091:1;32084:88;32191:4;32188:1;32181:15;32215:4;32212:1;32205:15;32355:117;32464:1;32461;32454:12;32478:102;32519:6;32570:2;32566:7;32561:2;32554:5;32550:14;32546:28;32536:38;;32478:102;;;:::o;32586:222::-;32726:34;32722:1;32714:6;32710:14;32703:58;32795:5;32790:2;32782:6;32778:15;32771:30;32586:222;:::o;32814:179::-;32954:31;32950:1;32942:6;32938:14;32931:55;32814:179;:::o;32999:229::-;33139:34;33135:1;33127:6;33123:14;33116:58;33208:12;33203:2;33195:6;33191:15;33184:37;32999:229;:::o;33234:221::-;33374:34;33370:1;33362:6;33358:14;33351:58;33443:4;33438:2;33430:6;33426:15;33419:29;33234:221;:::o;33461:::-;33601:34;33597:1;33589:6;33585:14;33578:58;33670:4;33665:2;33657:6;33653:15;33646:29;33461:221;:::o;33688:177::-;33828:29;33824:1;33816:6;33812:14;33805:53;33688:177;:::o;33871:223::-;34011:34;34007:1;33999:6;33995:14;33988:58;34080:6;34075:2;34067:6;34063:15;34056:31;33871:223;:::o;34100:177::-;34240:29;34236:1;34228:6;34224:14;34217:53;34100:177;:::o;34283:180::-;34423:32;34419:1;34411:6;34407:14;34400:56;34283:180;:::o;34469:220::-;34609:34;34605:1;34597:6;34593:14;34586:58;34678:3;34673:2;34665:6;34661:15;34654:28;34469:220;:::o;34695:182::-;34835:34;34831:1;34823:6;34819:14;34812:58;34695:182;:::o;34883:228::-;35023:34;35019:1;35011:6;35007:14;35000:58;35092:11;35087:2;35079:6;35075:15;35068:36;34883:228;:::o;35117:176::-;35257:28;35253:1;35245:6;35241:14;35234:52;35117:176;:::o;35299:223::-;35439:34;35435:1;35427:6;35423:14;35416:58;35508:6;35503:2;35495:6;35491:15;35484:31;35299:223;:::o;35528:224::-;35668:34;35664:1;35656:6;35652:14;35645:58;35737:7;35732:2;35724:6;35720:15;35713:32;35528:224;:::o;35758:223::-;35898:34;35894:1;35886:6;35882:14;35875:58;35967:6;35962:2;35954:6;35950:15;35943:31;35758:223;:::o;35987:173::-;36127:25;36123:1;36115:6;36111:14;36104:49;35987:173;:::o;36166:169::-;36306:21;36302:1;36294:6;36290:14;36283:45;36166:169;:::o;36341:174::-;36481:26;36477:1;36469:6;36465:14;36458:50;36341:174;:::o;36521:221::-;36661:34;36657:1;36649:6;36645:14;36638:58;36730:4;36725:2;36717:6;36713:15;36706:29;36521:221;:::o;36748:173::-;36888:25;36884:1;36876:6;36872:14;36865:49;36748:173;:::o;36927:122::-;37000:24;37018:5;37000:24;:::i;:::-;36993:5;36990:35;36980:63;;37039:1;37036;37029:12;36980:63;36927:122;:::o;37055:116::-;37125:21;37140:5;37125:21;:::i;:::-;37118:5;37115:32;37105:60;;37161:1;37158;37151:12;37105:60;37055:116;:::o;37177:122::-;37250:24;37268:5;37250:24;:::i;:::-;37243:5;37240:35;37230:63;;37289:1;37286;37279:12;37230:63;37177:122;:::o

Swarm Source

ipfs://9e3f688f50f0599775ebb611a2af876a5b5c507eed2f089d8df2579d28521c84

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.