Contract 0x15e50e6d2a7dfa05c38afe60d1d0c43351d55aec 1

Contract Overview

Balance:
0 HT

HT Value:
$0.00

Token:
Txn Hash Method
Block
From
To
Value [Txn Fee]
0xf20d5b4d4750b26d0ae55b9ba228cefe73994a12c8efbd8187f6d4efa64db78aTransfer(pending)2022-06-26 8:00:411 sec ago0x05a850073341a776c43f147a4d69cf8ffabdfe6a IN 0x15e50e6d2a7dfa05c38afe60d1d0c43351d55aec0 HT(Pending)
0x06640d27fdfd308ba288cb094258eee79569f9f3ac5ae95b56d8b08207a4824aTransfer164454352022-06-26 8:00:375 secs ago0xf75e022ba6428f2c81cf51cd9b245212295c26aa IN 0x15e50e6d2a7dfa05c38afe60d1d0c43351d55aec0 HT0.00044391752.5
0x81f8d0be301ddab37ede18b3a50bd8259e9b1580c5c7ede94b7527455cb48ff3Transfer164454332022-06-26 8:00:3111 secs ago0xb77fb6588d3d000a47c1118fad4d95019651bccd IN 0x15e50e6d2a7dfa05c38afe60d1d0c43351d55aec0 HT0.00040113752.5
0xc2c796647be4c8b5623535c045260ccbeec1cb43f3d6351c3ae15e65935b0d9aTransfer164454332022-06-26 8:00:3111 secs ago0x07669e47aa8fc78858c2056d37582af051d72dea IN 0x15e50e6d2a7dfa05c38afe60d1d0c43351d55aec0 HT0.00040125752.5
0x7b9e5d0d3f65673118eeb636e7b3357e176870fca690b1bb18902535fb078ff8Transfer164454322022-06-26 8:00:2814 secs ago0xdae9a833bb154fbe032602d73d09de811902a935 IN 0x15e50e6d2a7dfa05c38afe60d1d0c43351d55aec0 HT0.00044388752.5
0xc160b895ef2622000e08a8a7113224d79efe693fad48d756dcb82c4167419e3dTransfer164454312022-06-26 8:00:2517 secs ago0xeb88dfc9c5b1378434a5358e88bf2c306cd211b7 IN 0x15e50e6d2a7dfa05c38afe60d1d0c43351d55aec0 HT0.00040116752.5
0x3a9803a06cfee768c763bfbf015bc4865b0a3655893e9496e6ec995ec5f99ccbTransfer164454312022-06-26 8:00:2517 secs ago0x0302d8f549e286dca90e71ce22d4de6cfcfd78c3 IN 0x15e50e6d2a7dfa05c38afe60d1d0c43351d55aec0 HT0.00040125752.5
0x60e52117c46e98ff87602707dd969eb38a7c33bb7222a4399364498bf8fb5febTransfer164454302022-06-26 8:00:2220 secs ago0x125a8f31968ba55ba88ef4800e53b663b6046af4 IN 0x15e50e6d2a7dfa05c38afe60d1d0c43351d55aec0 HT0.00046167422.6
0x6e58cbb6e6718eb93c83a36d5162843441d3045b118190a007c7d1371df518fdTransfer164454302022-06-26 8:00:2220 secs ago0x39105bc4f4225a636e0ba2a5560db953ed5055a6 IN 0x15e50e6d2a7dfa05c38afe60d1d0c43351d55aec0 HT0.0004616432.6
0xcd60230575177fe2870196ba33c45dcf8eb3a1f0209d1b0f7f43b6149e608cccTransfer164454282022-06-26 8:00:1626 secs ago0xd1101ad9266f4dda0cfaaefefdfb94aedbd3133f IN 0x15e50e6d2a7dfa05c38afe60d1d0c43351d55aec0 HT0.00044391752.5
0x874f1566604c07407058bc0feee874501f54bb292e89b8374f0b9b34c154bcb8Transfer164454272022-06-26 8:00:1329 secs ago0xf75e022ba6428f2c81cf51cd9b245212295c26aa IN 0x15e50e6d2a7dfa05c38afe60d1d0c43351d55aec0 HT0.00044391752.5
0x6a052e30b50eaf751fadb7dd5799405821501f165d56b44b9643c9ddda304171Transfer164454262022-06-26 8:00:1032 secs ago0xbcb402404ead86d4ecd48921cafc35d72b4d35b6 IN 0x15e50e6d2a7dfa05c38afe60d1d0c43351d55aec0 HT0.00040125752.5
0x7873a71d68ca3fa58c9b38107390b375926ed61c2225e845f58314cbb9c23a14Transfer164454262022-06-26 8:00:1032 secs ago0x4ddb3f3f568a1ddb11ee28432e5ed97a956945c1 IN 0x15e50e6d2a7dfa05c38afe60d1d0c43351d55aec0 HT0.00040125752.5
0xb2cb17790a465807d15eb6b5b412ff89f53f6371ee94743ce46ed7cfb803a3a2Transfer164454252022-06-26 8:00:0735 secs ago0x25bb340bce44b155ebd53b3341397f68389cdef8 IN 0x15e50e6d2a7dfa05c38afe60d1d0c43351d55aec0 HT0.00040125752.5
0x747a12f70752a7347361a49c61da8112dee4feb5cd76abe2aa1c466cb19b4ba0Transfer164454252022-06-26 8:00:0735 secs ago0x9c006a449395c0452c7814b4cf6e306528c89ea2 IN 0x15e50e6d2a7dfa05c38afe60d1d0c43351d55aec0 HT0.00044391752.5
0x728a22fcfaf1c5b690e1d5169ee85bef0928b80e3ccae2fd33eaa6b478823b07Transfer164454252022-06-26 8:00:0735 secs ago0x3d1e1f9cfbac7e28be21e4e44e0e6f3a6b52ba48 IN 0x15e50e6d2a7dfa05c38afe60d1d0c43351d55aec0 HT0.00040125752.5
0xafd2aed051ccc2542dd29dc50efc913948e68565b66cf8b6e7cf128a778d3727Transfer164454252022-06-26 8:00:0735 secs ago0xb77fb6588d3d000a47c1118fad4d95019651bccd IN 0x15e50e6d2a7dfa05c38afe60d1d0c43351d55aec0 HT0.0002843052.5
0x159668c3681a5b2f50133bd14bab8daed6129207d0ec2f8f2b41523f58533a95Transfer164454242022-06-26 8:00:0438 secs ago0x023ae70e2ac35cef0cc8ab9545f6947978703e26 IN 0x15e50e6d2a7dfa05c38afe60d1d0c43351d55aec0 HT0.000399525752.25
0xd3ff7c4af1d4ac00f3c27ea882cdfffb46870c6f6f6ed04165e116bca969728dTransfer164454232022-06-26 8:00:0141 secs ago0xa5fc6b1f6ce3149601e3309e4a815eaddda626cd IN 0x15e50e6d2a7dfa05c38afe60d1d0c43351d55aec0 HT0.00044391752.5
0x98f9ddebea0d84be62c0485d51f3fe32616b06edd618bfd8105f69184149e2adTransfer164454222022-06-26 7:59:5844 secs ago0xb1956345cd420c50a3d30d74bd9395c50970e037 IN 0x15e50e6d2a7dfa05c38afe60d1d0c43351d55aec0 HT0.00044391752.5
0x9ab2df7b5fca5519dad6f2c14b85a8458fd64e1eec90f731d3fc86ea15ec7a33Transfer164454212022-06-26 7:59:5547 secs ago0xf75e022ba6428f2c81cf51cd9b245212295c26aa IN 0x15e50e6d2a7dfa05c38afe60d1d0c43351d55aec0 HT0.00044391752.5
0x2b4b7e2fd6f21628e99e73496bab36bf69a8857d796bb68f82505279ee6165e7Transfer164454212022-06-26 7:59:5547 secs ago0xf3c2f6ed8aa7646ac7ca5b4622b66a165485e89b IN 0x15e50e6d2a7dfa05c38afe60d1d0c43351d55aec0 HT0.00040125752.5
0x3bb35def0b33e8fa6f0e6c1aa5871ebe2245881989fca373e0e7b21a4fe3828aTransfer164454212022-06-26 7:59:5547 secs ago0xad372e591cfee7166fbf67f916a951eb6553bcee IN 0x15e50e6d2a7dfa05c38afe60d1d0c43351d55aec0 HT0.00040125752.5
0x2e428f7b28d45f0c6d3426469ce2c5c69d48d467a76c3f22abbf2cf30e2dc9d6Transfer164454212022-06-26 7:59:5547 secs ago0xa0d00212bc5c4e54784bf8d92d754bb392d47523 IN 0x15e50e6d2a7dfa05c38afe60d1d0c43351d55aec0 HT0.00040125752.5
0xd74db1b7e1df37df3af42d4d8625b08c0919c16c7e3b3987167b33045b09113fTransfer164454192022-06-26 7:59:4953 secs ago0x23e9f6ebbece8a68e31672b1c3abc2236b7e4ed4 IN 0x15e50e6d2a7dfa05c38afe60d1d0c43351d55aec0 HT0.00046167422.6
[ Download CSV Export 
Parent Txn Hash Block From To Value
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
NAGAToken

Compiler Version
v0.8.13+commit.abaa5c0e

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at hecoinfo.com on 2022-05-08
*/

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

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

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


contract Ownable is Context {
    address public owner;

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

    constructor() {
        address msgSender = _msgSender();
        owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

    modifier onlyOwner() {
        require(owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    function renounceOwnership() public onlyOwner {
        emit OwnershipTransferred(owner, address(0));
        owner = address(0);
    }

    function transferOwnership(address newOwner) public onlyOwner {
        _transferOwnership(newOwner);
    }

    function _transferOwnership(address newOwner) internal {
        require(
            newOwner != address(0),
            "Ownable: new owner is the zero address"
        );
        emit OwnershipTransferred(owner, newOwner);
        owner = newOwner;
    }
}


library SafeMath {
    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            uint256 c = a + b;
            if (c < a) return (false, 0);
            return (true, c);
        }
    }

    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b > a) return (false, 0);
            return (true, a - b);
        }
    }

    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
            // benefit is lost if 'b' is also tested.
            // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
            if (a == 0) return (true, 0);
            uint256 c = a * b;
            if (c / a != b) return (false, 0);
            return (true, c);
        }
    }

    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a / b);
        }
    }

    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a % b);
        }
    }

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        return a + b;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return a - b;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        return a * b;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return a % b;
    }

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

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

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

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


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

interface IUniswapV2Pair {
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
}

interface IUniswapV2Router01 {
    function factory() external pure returns (address);
}

interface IUniswapV2Router02 is IUniswapV2Router01 {}


contract NAGAToken is Ownable, IERC20 {
    using SafeMath for uint256;

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

    uint8 private _decimal = 18;

    string private _name = "NAGA TOKEN";
    string private _symbol = "NAGA";
    address public immutable _burnAddress = 0x000000000000000000000000000000000000dEaD;
    uint256 private constant MAX = ~uint256(0);
    uint256 private _tTotal;
    uint256 private _rTotal;
    uint256 private _tFeeTotal;

    uint256 public _burnMinLimit;
    uint256 public _maxTxAmount;

    uint256 public _tLocalRate;
    uint256 public _tBlackRate;
    uint256 public _tLPRate;

    uint256 public _sLocalRate;
    uint256 public _sBlackRate;
    uint256 public _sLPRate;

    uint256 private _tLocalPreRate;
    uint256 private _tBlackPreRate;
    uint256 private _tLPPreRate;

    uint256 private _sLocalPreRate;
    uint256 private _sBlackPreRate;
    uint256 private _sLPPreRate;

    mapping (address => uint256) private _rOwned;
    mapping (address => uint256) private _tOwned;
    mapping (address => bool) private _isExcluded;

    IERC20 public uniswapV2Pair;

    address[] private _excluded;


    struct TaxFee {
        uint256 tLocalRate;
        uint256 tBlackRate;
        uint256 tLPRate;
        uint256 sLocalRate;
        uint256 sBlackRate;
        uint256 sLPRate;
    }

    struct TaxFeeReflection {
        uint256 rtLocalRate;
        uint256 rtBlackRate;
        uint256 rtLPRate;
        uint256 rsLocalRate;
        uint256 rsBlackRate;
        uint256 rsLPRate;
    }
    
    constructor() {
        owner = msg.sender;

        _tTotal = 9555_7000_0000_0000 * 10**_decimal;
        _rTotal = (MAX - (MAX % _tTotal));

        _rOwned[owner] = _rTotal;

        _burnMinLimit = 100_0000_0000 * 10**_decimal;
        //_maxTxAmount = 1000_0000_0000 * 10**_decimal;

        _tLocalRate = 2;
        _tBlackRate = 1;
        _tLPRate = 2;

        _sLocalRate = 2;
        _sBlackRate = 3;
        _sLPRate = 3;

        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0xED7d5F38C79115ca12fe6C0041abb22F0A06C300);
        uniswapV2Pair = IERC20(IUniswapV2Factory(_uniswapV2Router.factory()).createPair(0xa71EdC38d189767582C38A3145b5873052c3e47a, address(this)));
        
        excludeFromReward(address(0));
        excludeFromReward(_burnAddress);
        excludeFromReward(address(this));
        
        excludeFromReward(address(uniswapV2Pair));
        excludeFromReward(address(owner));
        
        excludeLpProvider[address(0)] = true;
        excludeLpProvider[_burnAddress] = true;
        emit Transfer(address(0), owner, _tTotal);
    }


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

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

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

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

    function totalSupplyReflection() public view virtual returns (uint256) {
        return _rTotal;
    }

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

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

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

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

    function transferFrom(address sender, address recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
        unchecked {
            _approve(sender, _msgSender(), currentAllowance - amount);
        }
        return true;
    }

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

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        unchecked {
            _approve(_msgSender(), spender, currentAllowance - subtractedValue);
        }
        return true;
    }

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

    function isExcludedFromReward(address account) public view returns (bool) {
        return _isExcluded[account];
    }

    function totalFees() public view returns (uint256) {
        return _tFeeTotal;
    }

    function setBurnMinLimit(uint256 minLimit) external onlyOwner {
        _burnMinLimit = minLimit * 10**_decimal;
    }

    function setMaxTxAmount(uint256 maxTxAmount) public onlyOwner {
        _maxTxAmount = maxTxAmount * 10**_decimal;
    }

    function _transfer(address sender, address recipient, uint256 amount) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        //if(sender != owner && recipient != owner) 
        //    require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount.");

        if (sender == address(uniswapV2Pair) || recipient == address(uniswapV2Pair)){
            _tokenTransfer(sender, recipient, amount, 2);

            if (sender == address(uniswapV2Pair)){
                addLpProvider(recipient);
            } else {
                addLpProvider(sender);
            }
            
        } else {
            _tokenTransfer(sender, recipient, amount, 1);
        }

       
        //if (sender != address(this)) {
        //    processLP(500000);
        //}
    }

    function excludeFromReward(address account) public onlyOwner {
        require(!_isExcluded[account], "Account is already excluded");
        if(_rOwned[account] > 0) {
            _tOwned[account] = tokenFromReflection(_rOwned[account]);
        }
        _isExcluded[account] = true;
        _excluded.push(account);
    }

    function includeInReward(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 setTaxFeePercent(
        uint256 tLocalRate_, 
        uint256 tBlackRate_, 
        uint256 tLPRate_, 
        uint256 sLocalRate_, 
        uint256 sBlackRate_, 
        uint256 sLPRate_) external onlyOwner {
        _tLocalRate = tLocalRate_;
        _tBlackRate = tBlackRate_;
        _tLPRate = tLPRate_;
        _sLocalRate = sLocalRate_;
        _sBlackRate = sBlackRate_;
        _sLPRate = sLPRate_;
    }
    
    function tokenFromReflection(uint256 rAmount) public view returns(uint256) {
        require(rAmount <= _rTotal, "Amount must be less than total reflections");
        uint256 currentRate =  _getRate();
        return rAmount.div(currentRate);
    }

    function calculateTaxFee(uint256 _amount, uint256 ty) private view returns (TaxFee memory taxFee) {
        if ((_tTotal - _tOwned[_burnAddress]) > _burnMinLimit){
            if (ty == 1){
                taxFee.tLocalRate = _amount.mul(_tLocalRate).div(100);
                taxFee.tLPRate = _amount.mul(_tLPRate).div(100);
                taxFee.tBlackRate = _amount.mul(_tBlackRate).div(100);
            } else {
                taxFee.sLocalRate = _amount.mul(_sLocalRate).div(100);
                taxFee.sLPRate = _amount.mul(_sLPRate).div(100);
                taxFee.sBlackRate = _amount.mul(_sBlackRate).div(100);
            }
        }
    }

    function calculateTaxFeeReflection(uint256 _amount, uint256 currentRate, uint256 ty) private view returns (TaxFeeReflection memory feeRelection) {
        TaxFee memory taxFee = calculateTaxFee(_amount, ty);
        if (taxFee.tLocalRate > 0 || taxFee.sLocalRate > 0){
            if (ty == 1){
                feeRelection.rtLocalRate = taxFee.tLocalRate.mul(currentRate);
                feeRelection.rtBlackRate = taxFee.tBlackRate.mul(currentRate);
                feeRelection.rtLPRate = taxFee.tLPRate.mul(currentRate);
            } else {
                feeRelection.rsLocalRate = taxFee.sLocalRate.mul(currentRate);
                feeRelection.rsBlackRate = taxFee.sBlackRate.mul(currentRate);
                feeRelection.rsLPRate = taxFee.sLPRate.mul(currentRate);
            }
        }   
    }

    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); // rTotal - m * (rTotal/tTotal) >= rTotal/tTotal ==> m <= tTotal
        return (rSupply, tSupply);
    }

    function _tokenTransfer(address sender, address recipient, uint256 amount, uint256 ty) private {
        if (_isExcluded[sender] && !_isExcluded[recipient]) {
            _transferFromExcluded(sender, recipient, amount, ty);
        } else if (!_isExcluded[sender] && _isExcluded[recipient]) {
            _transferToExcluded(sender, recipient, amount, ty);
        } else if (_isExcluded[sender] && _isExcluded[recipient]) {
            _transferBothExcluded(sender, recipient, amount, ty);
        } else {
            _transferStandard(sender, recipient, amount, ty);
        }
    }

    function _reflectFee(uint256 rShareFree, uint256 tShareFree) private {
        if (rShareFree > 0){
            _rTotal = _rTotal.sub(rShareFree);
            _tFeeTotal = _tFeeTotal.add(tShareFree);
        }
    }

    function _getTValues(uint256 tAmount, uint256 ty) private view returns (uint256) {
        TaxFee memory taxFee = calculateTaxFee(tAmount, ty);
        uint256 tTransferAmount;
        if (ty == 1){
            tTransferAmount = tAmount.sub(taxFee.tLocalRate).sub(taxFee.tBlackRate).sub(taxFee.tLPRate);
        } else {
            tTransferAmount = tAmount.sub(taxFee.sLocalRate).sub(taxFee.sBlackRate).sub(taxFee.sLPRate);
        }
        return tTransferAmount;
    }

    function _getRValues(uint256 tAmount, uint256 currentRate, uint256 ty) private view returns (uint256, uint256) {
        uint256 rAmount = tAmount.mul(currentRate);
        TaxFeeReflection memory feeRelection = calculateTaxFeeReflection(tAmount, currentRate, ty);
        uint256 rTransferAmount;
        if (ty == 1){
            rTransferAmount = rAmount.sub(feeRelection.rtLocalRate).sub(feeRelection.rtBlackRate).sub(feeRelection.rtLPRate);
        } else {
            rTransferAmount = rAmount.sub(feeRelection.rsLocalRate).sub(feeRelection.rsBlackRate).sub(feeRelection.rsLPRate);
        }
        return (rAmount, rTransferAmount);
    }

    function _transferStandard(address sender, address recipient, uint256 tAmount, uint256 ty) private {
        uint256 tTransferAmount = _getTValues(tAmount, ty);
        TaxFee memory taxFee = calculateTaxFee(tAmount, ty);
        (uint256 rAmount, uint256 rTransferAmount) = _getRValues(tAmount, _getRate(), ty);
        TaxFeeReflection memory feeRelection = calculateTaxFeeReflection(tAmount,  _getRate(), ty);

        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);

        _relationShare(sender, taxFee, feeRelection, ty);
        
        if (feeRelection.rtLocalRate > 0 || feeRelection.rsLocalRate > 0){
            if (ty == 1){
                _reflectFee(feeRelection.rtLocalRate, taxFee.tLocalRate);
            } else {
                _reflectFee(feeRelection.rsLocalRate, taxFee.sLocalRate);
            }
        }
        emit Transfer(sender, recipient, tTransferAmount);
    }
    

    function _transferToExcluded(address sender, address recipient, uint256 tAmount, uint256 ty) private {
        uint256 tTransferAmount = _getTValues(tAmount, ty);
        TaxFee memory taxFee = calculateTaxFee(tAmount, ty);
        (uint256 rAmount, uint256 rTransferAmount) = _getRValues(tAmount, _getRate(), ty);
        TaxFeeReflection memory feeRelection = calculateTaxFeeReflection(tAmount,  _getRate(), ty);
        
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);

        _relationShare(sender, taxFee, feeRelection, ty);

        if (feeRelection.rtLocalRate > 0 || feeRelection.rsLocalRate > 0){
            if (ty == 1){
                _reflectFee(feeRelection.rtLocalRate, taxFee.tLocalRate);
            } else {
                _reflectFee(feeRelection.rsLocalRate, taxFee.sLocalRate);
            }
        }
        
        emit Transfer(sender, recipient, tTransferAmount);
    }


    function _transferFromExcluded(address sender, address recipient, uint256 tAmount, uint256 ty) private {
        uint256 tTransferAmount = _getTValues(tAmount, ty);
        TaxFee memory taxFee = calculateTaxFee(tAmount, ty);
        (uint256 rAmount, uint256 rTransferAmount) = _getRValues(tAmount, _getRate(), ty);
        TaxFeeReflection memory feeRelection = calculateTaxFeeReflection(tAmount,  _getRate(), ty);

        _tOwned[sender] = _tOwned[sender].sub(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        
        _relationShare(sender, taxFee, feeRelection, ty);

        if (feeRelection.rtLocalRate > 0 || feeRelection.rsLocalRate > 0){
            if (ty == 1){
                _reflectFee(feeRelection.rtLocalRate, taxFee.tLocalRate);
            } else {
                _reflectFee(feeRelection.rsLocalRate, taxFee.sLocalRate);
            }
        }
        emit Transfer(sender, recipient, tTransferAmount);
    }


    function _transferBothExcluded(address sender, address recipient, uint256 tAmount, uint256 ty) private {
        uint256 tTransferAmount = _getTValues(tAmount, ty);
        TaxFee memory taxFee = calculateTaxFee(tAmount, ty);
        (uint256 rAmount, uint256 rTransferAmount) = _getRValues(tAmount, _getRate(), ty);
        TaxFeeReflection memory feeRelection = calculateTaxFeeReflection(tAmount,  _getRate(), ty);
        
        _tOwned[sender] = _tOwned[sender].sub(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        
        _relationShare(sender, taxFee, feeRelection, ty);

        if (feeRelection.rtLocalRate > 0 || feeRelection.rsLocalRate > 0){
            if (ty == 1){
                _reflectFee(feeRelection.rtLocalRate, taxFee.tLocalRate);
            } else {
                _reflectFee(feeRelection.rsLocalRate, taxFee.sLocalRate);
            }
        }
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _relationShare(address sender, TaxFee memory taxFee, TaxFeeReflection memory feeRelection, uint ty) private {
        if (taxFee.tLPRate > 0 || taxFee.sLPRate > 0){
            if (ty == 1){
                _tOwned[address(this)] = _tOwned[address(this)].add(taxFee.tLPRate);
                _rOwned[address(this)] = _rOwned[address(this)].add(feeRelection.rtLPRate);
                _tOwned[_burnAddress] = _tOwned[_burnAddress].add(taxFee.tBlackRate);
                _rOwned[_burnAddress] = _rOwned[_burnAddress].add(feeRelection.rtBlackRate);
                emit Transfer(sender, address(this), taxFee.tLPRate);
                emit Transfer(sender, _burnAddress, taxFee.tBlackRate);
            } else {
                _tOwned[address(this)] = _tOwned[address(this)].add(taxFee.sLPRate);
                _rOwned[address(this)] = _rOwned[address(this)].add(feeRelection.rsLPRate);
                _tOwned[_burnAddress] = _tOwned[_burnAddress].add(taxFee.sBlackRate);
                _rOwned[_burnAddress] = _rOwned[_burnAddress].add(feeRelection.rsBlackRate);
                emit Transfer(sender, address(this), taxFee.sLPRate);
                emit Transfer(sender, _burnAddress, taxFee.sBlackRate);
            }
        }
    }

    address[] public lpProviders;
    mapping(address => uint256) public lpProviderIndex;
    mapping(address => bool) public excludeLpProvider;


    function addLpProvider(address adr) private {
        if (lpProviderIndex[adr] == 0) {
            lpProviderIndex[adr] = lpProviders.length;
            lpProviders.push(adr);
        }
    }

    uint256 public currentIndex;
    uint256 public lpRewardCondition = 10;
    uint256 public progressLPBlock=block.number;


    function processLP(uint256 gas) public {

        if (progressLPBlock + 200 > block.number) {
            return;
        }
  
        uint totalPair = uniswapV2Pair.totalSupply();
        if (totalPair == 0) {
            return;
        }

        uint256 balance = balanceOf(address(this));

        if (balance < lpRewardCondition) {
            return;
        }

        address shareHolder;
        uint256 pairBalance;
        uint256 amount;

        uint256 shareholderCount = lpProviders.length;

        uint256 gasUsed = 0;
        uint256 iterations = 0;

        uint256 gasLeft = gasleft();


        while (gasUsed < gas && iterations < shareholderCount) {

            if (currentIndex >= shareholderCount) {
                currentIndex = 0;
            }
            shareHolder = lpProviders[currentIndex];

            pairBalance = uniswapV2Pair.balanceOf(shareHolder);

            if (pairBalance > 0 && !excludeLpProvider[shareHolder]) {
                amount = balance * pairBalance / totalPair;

                if (amount > 0) {
                    _tokenTransfer(address(this), shareHolder, amount, 1);
                }
            }
            uint256 newGasLeft = gasleft();
            if(gasLeft > newGasLeft) {
                gasUsed = gasUsed.add(gasLeft.sub(newGasLeft));
            }

            gasLeft = newGasLeft;
            //gasUsed = gasUsed + (gasLeft - gasleft());
            //gasLeft = gasleft();
            currentIndex++;
            iterations++;
        }

        progressLPBlock = block.number;
    }


    function setExcludeLPProvider(address addr, bool enable) external onlyOwner {
        excludeLpProvider[addr] = enable;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":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":"_burnAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_burnMinLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sBlackRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sLPRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sLocalRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_tBlackRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_tLPRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_tLocalRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"excludeLpProvider","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromReward","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"lpProviderIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"lpProviders","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpRewardCondition","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"gas","type":"uint256"}],"name":"processLP","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"progressLPBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"minLimit","type":"uint256"}],"name":"setBurnMinLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bool","name":"enable","type":"bool"}],"name":"setExcludeLPProvider","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"setMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tLocalRate_","type":"uint256"},{"internalType":"uint256","name":"tBlackRate_","type":"uint256"},{"internalType":"uint256","name":"tLPRate_","type":"uint256"},{"internalType":"uint256","name":"sLocalRate_","type":"uint256"},{"internalType":"uint256","name":"sBlackRate_","type":"uint256"},{"internalType":"uint256","name":"sLPRate_","type":"uint256"}],"name":"setTaxFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupplyReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"}]

60a06040526012600260006101000a81548160ff021916908360ff1602179055506040518060400160405280600a81526020017f4e41474120544f4b454e00000000000000000000000000000000000000000000815250600390805190602001906200006d92919062000cfc565b506040518060400160405280600481526020017f4e4147410000000000000000000000000000000000000000000000000000000081525060049080519060200190620000bb92919062000cfc565b5061dead73ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff16815250600a601f55436020553480156200010757600080fd5b5060006200011a6200066260201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600260009054906101000a900460ff16600a62000216919062000f46565b6621f2dbc81488006200022a919062000f97565b60058190555060055460001962000242919062001027565b6000196200025191906200105f565b600681905550600654601660008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600260009054906101000a900460ff16600a620002dc919062000f46565b6402540be400620002ee919062000f97565b6008819055506002600a819055506001600b819055506002600c819055506002600d819055506003600e819055506003600f81905550600073ed7d5f38c79115ca12fe6c0041abb22f0a06c30090508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000389573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003af919062001104565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539673a71edc38d189767582c38a3145b5873052c3e47a306040518363ffffffff1660e01b8152600401620003ff92919062001147565b6020604051808303816000875af11580156200041f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000445919062001104565b601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200049760006200066a60201b60201c565b620004aa6080516200066a60201b60201c565b620004bb306200066a60201b60201c565b620004ee601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166200066a60201b60201c565b6200051f60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff166200066a60201b60201c565b6001601d60008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601d600060805173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60055460405162000653919062001185565b60405180910390a35062001447565b600033905090565b6200067a6200066260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146200070a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007019062001203565b60405180910390fd5b601860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156200079a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007919062001275565b60405180910390fd5b6000601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115620008775762000833601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546200093560201b60201c565b601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550601a819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60006006548211156200097f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000976906200130d565b60405180910390fd5b600062000991620009b560201b60201c565b9050620009ad8184620009ef60201b62001d8c1790919060201c565b915050919050565b6000806000620009ca62000a0760201b60201c565b91509150620009e88183620009ef60201b62001d8c1790919060201c565b9250505090565b60008183620009ff91906200132f565b905092915050565b600080600060065490506000600554905060005b601a8054905081101562000c9e578260166000601a848154811062000a455762000a4462001367565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054118062000b3757508160176000601a848154811062000acf5762000ace62001367565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b1562000b50576006546005549450945050505062000ce0565b62000bea60166000601a848154811062000b6f5762000b6e62001367565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548462000ce460201b62001da21790919060201c565b925062000c8660176000601a848154811062000c0b5762000c0a62001367565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548362000ce460201b62001da21790919060201c565b9150808062000c959062001396565b91505062000a1b565b5062000cbd600554600654620009ef60201b62001d8c1790919060201c565b82101562000cd75760065460055493509350505062000ce0565b81819350935050505b9091565b6000818362000cf491906200105f565b905092915050565b82805462000d0a9062001412565b90600052602060002090601f01602090048101928262000d2e576000855562000d7a565b82601f1062000d4957805160ff191683800117855562000d7a565b8280016001018555821562000d7a579182015b8281111562000d7957825182559160200191906001019062000d5c565b5b50905062000d89919062000d8d565b5090565b5b8082111562000da857600081600090555060010162000d8e565b5090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000e3a5780860481111562000e125762000e1162000dac565b5b600185161562000e225780820291505b808102905062000e328562000ddb565b945062000df2565b94509492505050565b60008262000e55576001905062000f28565b8162000e65576000905062000f28565b816001811462000e7e576002811462000e895762000ebf565b600191505062000f28565b60ff84111562000e9e5762000e9d62000dac565b5b8360020a91508482111562000eb85762000eb762000dac565b5b5062000f28565b5060208310610133831016604e8410600b841016171562000ef95782820a90508381111562000ef35762000ef262000dac565b5b62000f28565b62000f08848484600162000de8565b9250905081840481111562000f225762000f2162000dac565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b600062000f538262000f2f565b915062000f608362000f39565b925062000f8f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000e43565b905092915050565b600062000fa48262000f2f565b915062000fb18362000f2f565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000fed5762000fec62000dac565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620010348262000f2f565b9150620010418362000f2f565b92508262001054576200105362000ff8565b5b828206905092915050565b60006200106c8262000f2f565b9150620010798362000f2f565b9250828210156200108f576200108e62000dac565b5b828203905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620010cc826200109f565b9050919050565b620010de81620010bf565b8114620010ea57600080fd5b50565b600081519050620010fe81620010d3565b92915050565b6000602082840312156200111d576200111c6200109a565b5b60006200112d84828501620010ed565b91505092915050565b6200114181620010bf565b82525050565b60006040820190506200115e600083018562001136565b6200116d602083018462001136565b9392505050565b6200117f8162000f2f565b82525050565b60006020820190506200119c600083018462001174565b92915050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000620011eb602083620011a2565b9150620011f882620011b3565b602082019050919050565b600060208201905081810360008301526200121e81620011dc565b9050919050565b7f4163636f756e7420697320616c7265616479206578636c756465640000000000600082015250565b60006200125d601b83620011a2565b91506200126a8262001225565b602082019050919050565b6000602082019050818103600083015262001290816200124e565b9050919050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b6000620012f5602a83620011a2565b9150620013028262001297565b604082019050919050565b600060208201905081810360008301526200132881620012e6565b9050919050565b60006200133c8262000f2f565b9150620013498362000f2f565b9250826200135c576200135b62000ff8565b5b828204905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000620013a38262000f2f565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203620013d857620013d762000dac565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200142b57607f821691505b602082108103620014415762001440620013e3565b5b50919050565b60805161509f620014b060003960008181611b140152818161355901528181613a4201528181613ab001528181613b1b01528181613b8901528181613c5101528181613e1d01528181613e8b01528181613ef601528181613f64015261402c015261509f6000f3fe608060405234801561001057600080fd5b50600436106102525760003560e01c80637d1db4a511610146578063b03e63c8116100c3578063dd62ed3e11610087578063dd62ed3e146106f3578063de5c02c214610723578063e672536f14610753578063ec28438a14610771578063ef34db691461078d578063f2fde38b146107bd57610252565b8063b03e63c81461065f578063bbe492741461067b578063bd3900c014610699578063c8f0e1f8146106b7578063dd55c108146106d557610252565b806397a78ea61161010a57806397a78ea6146105a7578063a25804ad146105c5578063a457c2d7146105e3578063a9059cbb14610613578063acc0a1821461064357610252565b80637d1db4a5146104ff57806388f820201461051d5780638da5cb5b1461054d57806392f5a5321461056b57806395d89b411461058957610252565b8063313ce567116101d457806352390c021161019857806352390c021461046f57806369069bb21461048b57806370a08231146104a7578063715018a6146104d75780637a2c335e146104e157610252565b8063313ce567146103c95780633685d419146103e7578063395093511461040357806349bd5a5e1461043357806351b0d1021461045157610252565b806318160ddd1161021b57806318160ddd146102fd57806323b872dd1461031b57806326987b601461034b5780632b01fc94146103695780632d8381191461039957610252565b8062dcef9d1461025757806306fdde0314610275578063095ea7b31461029357806313114a9d146102c3578063141ae566146102e1575b600080fd5b61025f6107d9565b60405161026c919061419a565b60405180910390f35b61027d6107df565b60405161028a919061424e565b60405180910390f35b6102ad60048036038101906102a891906142ff565b610871565b6040516102ba919061435a565b60405180910390f35b6102cb61088f565b6040516102d8919061419a565b60405180910390f35b6102fb60048036038101906102f691906143a1565b610899565b005b610305610989565b604051610312919061419a565b60405180910390f35b610335600480360381019061033091906143e1565b610993565b604051610342919061435a565b60405180910390f35b610353610a8b565b604051610360919061419a565b60405180910390f35b610383600480360381019061037e9190614434565b610a91565b604051610390919061435a565b60405180910390f35b6103b360048036038101906103ae9190614461565b610ab1565b6040516103c0919061419a565b60405180910390f35b6103d1610b1f565b6040516103de91906144aa565b60405180910390f35b61040160048036038101906103fc9190614434565b610b36565b005b61041d600480360381019061041891906142ff565b610e84565b60405161042a919061435a565b60405180910390f35b61043b610f30565b6040516104489190614524565b60405180910390f35b610459610f56565b604051610466919061419a565b60405180910390f35b61048960048036038101906104849190614434565b610f5c565b005b6104a560048036038101906104a09190614461565b611210565b005b6104c160048036038101906104bc9190614434565b61150b565b6040516104ce919061419a565b60405180910390f35b6104df6115f6565b005b6104e9611749565b6040516104f6919061419a565b60405180910390f35b61050761174f565b604051610514919061419a565b60405180910390f35b61053760048036038101906105329190614434565b611755565b604051610544919061435a565b60405180910390f35b6105556117ab565b604051610562919061454e565b60405180910390f35b6105736117cf565b604051610580919061419a565b60405180910390f35b6105916117d5565b60405161059e919061424e565b60405180910390f35b6105af611867565b6040516105bc919061419a565b60405180910390f35b6105cd611871565b6040516105da919061419a565b60405180910390f35b6105fd60048036038101906105f891906142ff565b611877565b60405161060a919061435a565b60405180910390f35b61062d600480360381019061062891906142ff565b611962565b60405161063a919061435a565b60405180910390f35b61065d60048036038101906106589190614461565b611980565b005b61067960048036038101906106749190614569565b611a45565b005b610683611b0c565b604051610690919061419a565b60405180910390f35b6106a1611b12565b6040516106ae919061454e565b60405180910390f35b6106bf611b36565b6040516106cc919061419a565b60405180910390f35b6106dd611b3c565b6040516106ea919061419a565b60405180910390f35b61070d600480360381019061070891906145f6565b611b42565b60405161071a919061419a565b60405180910390f35b61073d60048036038101906107389190614461565b611bc9565b60405161074a919061454e565b60405180910390f35b61075b611c08565b604051610768919061419a565b60405180910390f35b61078b60048036038101906107869190614461565b611c0e565b005b6107a760048036038101906107a29190614434565b611cd3565b6040516107b4919061419a565b60405180910390f35b6107d760048036038101906107d29190614434565b611ceb565b005b600a5481565b6060600380546107ee90614665565b80601f016020809104026020016040519081016040528092919081815260200182805461081a90614665565b80156108675780601f1061083c57610100808354040283529160200191610867565b820191906000526020600020905b81548152906001019060200180831161084a57829003601f168201915b5050505050905090565b600061088561087e611db8565b8484611dc0565b6001905092915050565b6000600754905090565b6108a1611db8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461092e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610925906146e2565b60405180910390fd5b80601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600554905090565b60006109a0848484611f89565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006109eb611db8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610a6b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a6290614774565b60405180910390fd5b610a7f85610a77611db8565b858403611dc0565b60019150509392505050565b601e5481565b601d6020528060005260406000206000915054906101000a900460ff1681565b6000600654821115610af8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aef90614806565b60405180910390fd5b6000610b026121ea565b9050610b178184611d8c90919063ffffffff16565b915050919050565b6000600260009054906101000a900460ff16905090565b610b3e611db8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bcb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bc2906146e2565b60405180910390fd5b601860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610c57576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4e90614872565b60405180910390fd5b60005b601a80549050811015610e80578173ffffffffffffffffffffffffffffffffffffffff16601a8281548110610c9257610c91614892565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603610e6d57601a6001601a80549050610cec91906148f0565b81548110610cfd57610cfc614892565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601a8281548110610d3c57610d3b614892565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550601a805480610e3357610e32614924565b5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690559055610e80565b8080610e7890614953565b915050610c5a565b5050565b6000610f26610e91611db8565b848460016000610e9f611db8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f21919061499b565b611dc0565b6001905092915050565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60205481565b610f64611db8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ff1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe8906146e2565b60405180910390fd5b601860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561107e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161107590614872565b60405180910390fd5b6000601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411156111525761110e601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ab1565b601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550601a819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b4360c8602054611220919061499b565b11611508576000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611294573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112b89190614a06565b9050600081036112c85750611508565b60006112d33061150b565b9050601f548110156112e6575050611508565b600080600080601b80549050905060008060005a90505b898310801561130b57508382105b156114f75783601e5410611322576000601e819055505b601b601e548154811061133857611337614892565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169650601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231886040518263ffffffff1660e01b81526004016113c0919061454e565b602060405180830381865afa1580156113dd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114019190614a06565b955060008611801561145d5750601d60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156114935788868961146f9190614a33565b6114799190614abc565b94506000851115611492576114913088876001612215565b5b5b60005a9050808211156114c8576114c56114b68284611da290919063ffffffff16565b8561245490919063ffffffff16565b93505b809150601e60008154809291906114de90614953565b919050555082806114ee90614953565b935050506112fd565b436020819055505050505050505050505b50565b6000601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156115a657601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506115f1565b6115ee601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ab1565b90505b919050565b6115fe611db8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461168b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611682906146e2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600d5481565b60095481565b6000601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600c5481565b6060600480546117e490614665565b80601f016020809104026020016040519081016040528092919081815260200182805461181090614665565b801561185d5780601f106118325761010080835404028352916020019161185d565b820191906000526020600020905b81548152906001019060200180831161184057829003601f168201915b5050505050905090565b6000600654905090565b600b5481565b60008060016000611886611db8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611943576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193a90614b5f565b60405180910390fd5b61195761194e611db8565b85858403611dc0565b600191505092915050565b600061197661196f611db8565b8484611f89565b6001905092915050565b611988611db8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a15576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0c906146e2565b60405180910390fd5b600260009054906101000a900460ff16600a611a319190614cb2565b81611a3c9190614a33565b60088190555050565b611a4d611db8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ada576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ad1906146e2565b60405180910390fd5b85600a8190555084600b8190555083600c8190555082600d8190555081600e8190555080600f81905550505050505050565b600e5481565b7f000000000000000000000000000000000000000000000000000000000000000081565b60085481565b601f5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b601b8181548110611bd957600080fd5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600f5481565b611c16611db8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ca3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c9a906146e2565b60405180910390fd5b600260009054906101000a900460ff16600a611cbf9190614cb2565b81611cca9190614a33565b60098190555050565b601c6020528060005260406000206000915090505481565b611cf3611db8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d80576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d77906146e2565b60405180910390fd5b611d898161246a565b50565b60008183611d9a9190614abc565b905092915050565b60008183611db091906148f0565b905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611e2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e2690614d6f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611e9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e9590614e01565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611f7c919061419a565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611ff8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fef90614e93565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612067576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161205e90614f25565b60405180910390fd5b600081116120aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120a190614fb7565b60405180910390fd5b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614806121535750601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b156121d7576121658383836002612215565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036121c8576121c382612596565b6121d2565b6121d183612596565b5b6121e5565b6121e48383836001612215565b5b505050565b60008060006121f761268d565b9150915061220e8183611d8c90919063ffffffff16565b9250505090565b601860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156122b85750601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156122ce576122c984848484612940565b61244e565b601860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156123715750601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156123875761238284848484612c15565b61244d565b601860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156124295750601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561243f5761243a84848484612eea565b61244c565b61244b84848484613254565b5b5b5b50505050565b60008183612462919061499b565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036124d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124d090615049565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000601c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020540361268a57601b80549050601c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601b819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b50565b600080600060065490506000600554905060005b601a80549050811015612903578260166000601a84815481106126c7576126c6614892565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411806127b557508160176000601a848154811061274d5761274c614892565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b156127cc576006546005549450945050505061293c565b61285c60166000601a84815481106127e7576127e6614892565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484611da290919063ffffffff16565b92506128ee60176000601a848154811061287957612878614892565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611da290919063ffffffff16565b915080806128fb90614953565b9150506126a1565b5061291b600554600654611d8c90919063ffffffff16565b8210156129335760065460055493509350505061293c565b81819350935050505b9091565b600061294c8383613494565b9050600061295a8484613548565b90506000806129718661296b6121ea565b87613701565b915091506000612989876129836121ea565b886137d5565b90506129dd87601760008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611da290919063ffffffff16565b601760008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612a7283601660008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611da290919063ffffffff16565b601660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612b0782601660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461245490919063ffffffff16565b601660008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612b56898583896138de565b600081600001511180612b6d575060008160600151115b15612ba55760018603612b9157612b8c816000015185600001516140bb565b612ba4565b612ba3816060015185606001516140bb565b5b5b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef87604051612c02919061419a565b60405180910390a3505050505050505050565b6000612c218383613494565b90506000612c2f8484613548565b9050600080612c4686612c406121ea565b87613701565b915091506000612c5e87612c586121ea565b886137d5565b9050612cb283601660008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611da290919063ffffffff16565b601660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612d4785601760008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461245490919063ffffffff16565b601760008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612ddc82601660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461245490919063ffffffff16565b601660008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612e2b898583896138de565b600081600001511180612e42575060008160600151115b15612e7a5760018603612e6657612e61816000015185600001516140bb565b612e79565b612e78816060015185606001516140bb565b5b5b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef87604051612ed7919061419a565b60405180910390a3505050505050505050565b6000612ef68383613494565b90506000612f048484613548565b9050600080612f1b86612f156121ea565b87613701565b915091506000612f3387612f2d6121ea565b886137d5565b9050612f8787601760008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611da290919063ffffffff16565b601760008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061301c83601660008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611da290919063ffffffff16565b601660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506130b185601760008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461245490919063ffffffff16565b601760008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061314682601660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461245490919063ffffffff16565b601660008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613195898583896138de565b6000816000015111806131ac575060008160600151115b156131e457600186036131d0576131cb816000015185600001516140bb565b6131e3565b6131e2816060015185606001516140bb565b5b5b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef87604051613241919061419a565b60405180910390a3505050505050505050565b60006132608383613494565b9050600061326e8484613548565b90506000806132858661327f6121ea565b87613701565b91509150600061329d876132976121ea565b886137d5565b90506132f183601660008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611da290919063ffffffff16565b601660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061338682601660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461245490919063ffffffff16565b601660008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506133d5898583896138de565b6000816000015111806133ec575060008160600151115b1561342457600186036134105761340b816000015185600001516140bb565b613423565b613422816060015185606001516140bb565b5b5b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef87604051613481919061419a565b60405180910390a3505050505050505050565b6000806134a18484613548565b90506000600184036134f7576134f082604001516134e284602001516134d486600001518a611da290919063ffffffff16565b611da290919063ffffffff16565b611da290919063ffffffff16565b905061353d565b61353a8260a0015161352c846080015161351e86606001518a611da290919063ffffffff16565b611da290919063ffffffff16565b611da290919063ffffffff16565b90505b809250505092915050565b613550614115565b600854601760007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546005546135c091906148f0565b11156136fb5760018203613666576135f660646135e8600a54866140ff90919063ffffffff16565b611d8c90919063ffffffff16565b8160000181815250506136276064613619600c54866140ff90919063ffffffff16565b611d8c90919063ffffffff16565b816040018181525050613658606461364a600b54866140ff90919063ffffffff16565b611d8c90919063ffffffff16565b8160200181815250506136fa565b61368e6064613680600d54866140ff90919063ffffffff16565b611d8c90919063ffffffff16565b8160600181815250506136bf60646136b1600f54866140ff90919063ffffffff16565b611d8c90919063ffffffff16565b8160a00181815250506136f060646136e2600e54866140ff90919063ffffffff16565b611d8c90919063ffffffff16565b8160800181815250505b5b92915050565b600080600061371985876140ff90919063ffffffff16565b905060006137288787876137d5565b905060006001860361377e576137778260400151613769846020015161375b866000015188611da290919063ffffffff16565b611da290919063ffffffff16565b611da290919063ffffffff16565b90506137c4565b6137c18260a001516137b384608001516137a5866060015188611da290919063ffffffff16565b611da290919063ffffffff16565b611da290919063ffffffff16565b90505b828194509450505050935093915050565b6137dd61414b565b60006137e98584613548565b9050600081600001511180613802575060008160600151115b156138d65760018303613874576138268482600001516140ff90919063ffffffff16565b8260000181815250506138468482602001516140ff90919063ffffffff16565b8260200181815250506138668482604001516140ff90919063ffffffff16565b8260400181815250506138d5565b61388b8482606001516140ff90919063ffffffff16565b8260600181815250506138ab8482608001516140ff90919063ffffffff16565b8260800181815250506138cb848260a001516140ff90919063ffffffff16565b8260a00181815250505b5b509392505050565b6000836040015111806138f5575060008360a00151115b156140b55760018103613cdd576139588360400151601760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461245490919063ffffffff16565b601760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506139f18260400151601660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461245490919063ffffffff16565b601660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613aaa8360200151601760007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461245490919063ffffffff16565b601760007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613b838260200151601660007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461245490919063ffffffff16565b601660007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560400151604051613c47919061419a565b60405180910390a37f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560200151604051613cd0919061419a565b60405180910390a36140b4565b613d338360a00151601760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461245490919063ffffffff16565b601760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613dcc8260a00151601660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461245490919063ffffffff16565b601660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613e858360800151601760007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461245490919063ffffffff16565b601760007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613f5e8260800151601660007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461245490919063ffffffff16565b601660007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560a00151604051614022919061419a565b60405180910390a37f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85608001516040516140ab919061419a565b60405180910390a35b5b50505050565b60008211156140fb576140d982600654611da290919063ffffffff16565b6006819055506140f48160075461245490919063ffffffff16565b6007819055505b5050565b6000818361410d9190614a33565b905092915050565b6040518060c001604052806000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6040518060c001604052806000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6000819050919050565b61419481614181565b82525050565b60006020820190506141af600083018461418b565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156141ef5780820151818401526020810190506141d4565b838111156141fe576000848401525b50505050565b6000601f19601f8301169050919050565b6000614220826141b5565b61422a81856141c0565b935061423a8185602086016141d1565b61424381614204565b840191505092915050565b600060208201905081810360008301526142688184614215565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006142a082614275565b9050919050565b6142b081614295565b81146142bb57600080fd5b50565b6000813590506142cd816142a7565b92915050565b6142dc81614181565b81146142e757600080fd5b50565b6000813590506142f9816142d3565b92915050565b6000806040838503121561431657614315614270565b5b6000614324858286016142be565b9250506020614335858286016142ea565b9150509250929050565b60008115159050919050565b6143548161433f565b82525050565b600060208201905061436f600083018461434b565b92915050565b61437e8161433f565b811461438957600080fd5b50565b60008135905061439b81614375565b92915050565b600080604083850312156143b8576143b7614270565b5b60006143c6858286016142be565b92505060206143d78582860161438c565b9150509250929050565b6000806000606084860312156143fa576143f9614270565b5b6000614408868287016142be565b9350506020614419868287016142be565b925050604061442a868287016142ea565b9150509250925092565b60006020828403121561444a57614449614270565b5b6000614458848285016142be565b91505092915050565b60006020828403121561447757614476614270565b5b6000614485848285016142ea565b91505092915050565b600060ff82169050919050565b6144a48161448e565b82525050565b60006020820190506144bf600083018461449b565b92915050565b6000819050919050565b60006144ea6144e56144e084614275565b6144c5565b614275565b9050919050565b60006144fc826144cf565b9050919050565b600061450e826144f1565b9050919050565b61451e81614503565b82525050565b60006020820190506145396000830184614515565b92915050565b61454881614295565b82525050565b6000602082019050614563600083018461453f565b92915050565b60008060008060008060c0878903121561458657614585614270565b5b600061459489828a016142ea565b96505060206145a589828a016142ea565b95505060406145b689828a016142ea565b94505060606145c789828a016142ea565b93505060806145d889828a016142ea565b92505060a06145e989828a016142ea565b9150509295509295509295565b6000806040838503121561460d5761460c614270565b5b600061461b858286016142be565b925050602061462c858286016142be565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061467d57607f821691505b6020821081036146905761468f614636565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006146cc6020836141c0565b91506146d782614696565b602082019050919050565b600060208201905081810360008301526146fb816146bf565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b600061475e6028836141c0565b915061476982614702565b604082019050919050565b6000602082019050818103600083015261478d81614751565b9050919050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b60006147f0602a836141c0565b91506147fb82614794565b604082019050919050565b6000602082019050818103600083015261481f816147e3565b9050919050565b7f4163636f756e7420697320616c7265616479206578636c756465640000000000600082015250565b600061485c601b836141c0565b915061486782614826565b602082019050919050565b6000602082019050818103600083015261488b8161484f565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006148fb82614181565b915061490683614181565b925082821015614919576149186148c1565b5b828203905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b600061495e82614181565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036149905761498f6148c1565b5b600182019050919050565b60006149a682614181565b91506149b183614181565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156149e6576149e56148c1565b5b828201905092915050565b600081519050614a00816142d3565b92915050565b600060208284031215614a1c57614a1b614270565b5b6000614a2a848285016149f1565b91505092915050565b6000614a3e82614181565b9150614a4983614181565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614a8257614a816148c1565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614ac782614181565b9150614ad283614181565b925082614ae257614ae1614a8d565b5b828204905092915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000614b496025836141c0565b9150614b5482614aed565b604082019050919050565b60006020820190508181036000830152614b7881614b3c565b9050919050565b60008160011c9050919050565b6000808291508390505b6001851115614bd657808604811115614bb257614bb16148c1565b5b6001851615614bc15780820291505b8081029050614bcf85614b7f565b9450614b96565b94509492505050565b600082614bef5760019050614cab565b81614bfd5760009050614cab565b8160018114614c135760028114614c1d57614c4c565b6001915050614cab565b60ff841115614c2f57614c2e6148c1565b5b8360020a915084821115614c4657614c456148c1565b5b50614cab565b5060208310610133831016604e8410600b8410161715614c815782820a905083811115614c7c57614c7b6148c1565b5b614cab565b614c8e8484846001614b8c565b92509050818404811115614ca557614ca46148c1565b5b81810290505b9392505050565b6000614cbd82614181565b9150614cc88361448e565b9250614cf57fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484614bdf565b905092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614d596024836141c0565b9150614d6482614cfd565b604082019050919050565b60006020820190508181036000830152614d8881614d4c565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614deb6022836141c0565b9150614df682614d8f565b604082019050919050565b60006020820190508181036000830152614e1a81614dde565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614e7d6025836141c0565b9150614e8882614e21565b604082019050919050565b60006020820190508181036000830152614eac81614e70565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614f0f6023836141c0565b9150614f1a82614eb3565b604082019050919050565b60006020820190508181036000830152614f3e81614f02565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000614fa16029836141c0565b9150614fac82614f45565b604082019050919050565b60006020820190508181036000830152614fd081614f94565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006150336026836141c0565b915061503e82614fd7565b604082019050919050565b6000602082019050818103600083015261506281615026565b905091905056fea26469706673582212206c28b20a955c81849124de1671022c2820ef8779a6a80d72574e809174bf990364736f6c634300080d0033

Deployed ByteCode Sourcemap

5074:20590:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5650:26;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7841:92;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8923:169;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10686:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25534:127;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8144:103;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9100:456;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23770:27;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23505:49;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13323:253;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8045:91;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12389:477;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9564:215;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6222:27;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23848:43;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12050:331;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23902:1622;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8367:206;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;778:138;;;:::i;:::-;;5748:26;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5614:27;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10558:120;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;346:20;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5716:23;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7941:96;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8255:104;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5683:26;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9787:411;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8581:175;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10781:120;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12874:437;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5781:26;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5346:82;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5579:28;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23804:37;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8764:151;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23413:28;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5814:23;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10909:122;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23448:50;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;924:109;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5650:26;;;;:::o;7841:92::-;7887:13;7920:5;7913:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7841:92;:::o;8923:169::-;9006:4;9023:39;9032:12;:10;:12::i;:::-;9046:7;9055:6;9023:8;:39::i;:::-;9080:4;9073:11;;8923:169;;;;:::o;10686:87::-;10728:7;10755:10;;10748:17;;10686:87;:::o;25534:127::-;701:12;:10;:12::i;:::-;692:21;;:5;;;;;;;;;;:21;;;684:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;25647:6:::1;25621:17;:23;25639:4;25621:23;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;25534:127:::0;;:::o;8144:103::-;8205:7;8232;;8225:14;;8144:103;:::o;9100:456::-;9206:4;9223:36;9233:6;9241:9;9252:6;9223:9;:36::i;:::-;9272:24;9299:11;:19;9311:6;9299:19;;;;;;;;;;;;;;;:33;9319:12;:10;:12::i;:::-;9299:33;;;;;;;;;;;;;;;;9272:60;;9371:6;9351:16;:26;;9343:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;9458:57;9467:6;9475:12;:10;:12::i;:::-;9508:6;9489:16;:25;9458:8;:57::i;:::-;9544:4;9537:11;;;9100:456;;;;;:::o;23770:27::-;;;;:::o;23505:49::-;;;;;;;;;;;;;;;;;;;;;;:::o;13323:253::-;13389:7;13428;;13417;:18;;13409:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;13493:19;13516:10;:8;:10::i;:::-;13493:33;;13544:24;13556:11;13544:7;:11;;:24;;;;:::i;:::-;13537:31;;;13323:253;;;:::o;8045:91::-;8095:5;8120:8;;;;;;;;;;;8113:15;;8045:91;:::o;12389:477::-;701:12;:10;:12::i;:::-;692:21;;:5;;;;;;;;;;:21;;;684:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;12469:11:::1;:20;12481:7;12469:20;;;;;;;;;;;;;;;;;;;;;;;;;12461:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;12537:9;12532:327;12556:9;:16;;;;12552:1;:20;12532:327;;;12614:7;12598:23;;:9;12608:1;12598:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:23;;::::0;12594:254:::1;;12657:9;12686:1;12667:9;:16;;;;:20;;;;:::i;:::-;12657:31;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;12642:9;12652:1;12642:12;;;;;;;;:::i;:::-;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;12726:1;12707:7;:16;12715:7;12707:16;;;;;;;;;;;;;;;:20;;;;12769:5;12746:11;:20;12758:7;12746:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;12793:9;:15;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;12827:5;;12594:254;12574:3;;;;;:::i;:::-;;;;12532:327;;;;12389:477:::0;:::o;9564:215::-;9652:4;9669:80;9678:12;:10;:12::i;:::-;9692:7;9738:10;9701:11;:25;9713:12;:10;:12::i;:::-;9701:25;;;;;;;;;;;;;;;:34;9727:7;9701:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;9669:8;:80::i;:::-;9767:4;9760:11;;9564:215;;;;:::o;6222:27::-;;;;;;;;;;;;;:::o;23848:43::-;;;;:::o;12050:331::-;701:12;:10;:12::i;:::-;692:21;;:5;;;;;;;;;;:21;;;684:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;12131:11:::1;:20;12143:7;12131:20;;;;;;;;;;;;;;;;;;;;;;;;;12130:21;12122:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;12216:1;12197:7;:16;12205:7;12197:16;;;;;;;;;;;;;;;;:20;12194:108;;;12253:37;12273:7;:16;12281:7;12273:16;;;;;;;;;;;;;;;;12253:19;:37::i;:::-;12234:7;:16;12242:7;12234:16;;;;;;;;;;;;;;;:56;;;;12194:108;12335:4;12312:11;:20;12324:7;12312:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;12350:9;12365:7;12350:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12050:331:::0;:::o;23902:1622::-;23982:12;23976:3;23958:15;;:21;;;;:::i;:::-;:36;24011:7;23954:75;24043:14;24060:13;;;;;;;;;;;:25;;;:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24043:44;;24115:1;24102:9;:14;24098:53;;24133:7;;;24098:53;24163:15;24181:24;24199:4;24181:9;:24::i;:::-;24163:42;;24232:17;;24222:7;:27;24218:66;;;24266:7;;;;24218:66;24296:19;24326;24356:14;24383:24;24410:11;:18;;;;24383:45;;24441:15;24471:18;24506:15;24524:9;24506:27;;24548:926;24565:3;24555:7;:13;:46;;;;;24585:16;24572:10;:29;24555:46;24548:926;;;24640:16;24624:12;;:32;24620:89;;24692:1;24677:12;:16;;;;24620:89;24737:11;24749:12;;24737:25;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;24723:39;;24793:13;;;;;;;;;;;:23;;;24817:11;24793:36;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24779:50;;24864:1;24850:11;:15;:50;;;;;24870:17;:30;24888:11;24870:30;;;;;;;;;;;;;;;;;;;;;;;;;24869:31;24850:50;24846:265;;;24954:9;24940:11;24930:7;:21;;;;:::i;:::-;:33;;;;:::i;:::-;24921:42;;24997:1;24988:6;:10;24984:112;;;25023:53;25046:4;25053:11;25066:6;25074:1;25023:14;:53::i;:::-;24984:112;24846:265;25125:18;25146:9;25125:30;;25183:10;25173:7;:20;25170:106;;;25224:36;25236:23;25248:10;25236:7;:11;;:23;;;;:::i;:::-;25224:7;:11;;:36;;;;:::i;:::-;25214:46;;25170:106;25302:10;25292:20;;25421:12;;:14;;;;;;;;;:::i;:::-;;;;;;25450:12;;;;;:::i;:::-;;;;24603:871;24548:926;;;25504:12;25486:15;:30;;;;23941:1583;;;;;;;;;23902:1622;;:::o;8367:206::-;8441:7;8465:11;:20;8477:7;8465:20;;;;;;;;;;;;;;;;;;;;;;;;;8461:49;;;8494:7;:16;8502:7;8494:16;;;;;;;;;;;;;;;;8487:23;;;;8461:49;8528:37;8548:7;:16;8556:7;8548:16;;;;;;;;;;;;;;;;8528:19;:37::i;:::-;8521:44;;8367:206;;;;:::o;778:138::-;701:12;:10;:12::i;:::-;692:21;;:5;;;;;;;;;;:21;;;684:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;876:1:::1;840:39;;861:5;::::0;::::1;;;;;;;;840:39;;;;;;;;;;;;906:1;890:5:::0;::::1;:18;;;;;;;;;;;;;;;;;;778:138::o:0;5748:26::-;;;;:::o;5614:27::-;;;;:::o;10558:120::-;10626:4;10650:11;:20;10662:7;10650:20;;;;;;;;;;;;;;;;;;;;;;;;;10643:27;;10558:120;;;:::o;346:20::-;;;;;;;;;;;;:::o;5716:23::-;;;;:::o;7941:96::-;7989:13;8022:7;8015:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7941:96;:::o;8255:104::-;8317:7;8344;;8337:14;;8255:104;:::o;5683:26::-;;;;:::o;9787:411::-;9880:4;9897:24;9924:11;:25;9936:12;:10;:12::i;:::-;9924:25;;;;;;;;;;;;;;;:34;9950:7;9924:34;;;;;;;;;;;;;;;;9897:61;;9997:15;9977:16;:35;;9969:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;10090:67;10099:12;:10;:12::i;:::-;10113:7;10141:15;10122:16;:34;10090:8;:67::i;:::-;10186:4;10179:11;;;9787:411;;;;:::o;8581:175::-;8667:4;8684:42;8694:12;:10;:12::i;:::-;8708:9;8719:6;8684:9;:42::i;:::-;8744:4;8737:11;;8581:175;;;;:::o;10781:120::-;701:12;:10;:12::i;:::-;692:21;;:5;;;;;;;;;;:21;;;684:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;10885:8:::1;;;;;;;;;;;10881:2;:12;;;;:::i;:::-;10870:8;:23;;;;:::i;:::-;10854:13;:39;;;;10781:120:::0;:::o;12874:437::-;701:12;:10;:12::i;:::-;692:21;;:5;;;;;;;;;;:21;;;684:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;13124:11:::1;13110;:25;;;;13160:11;13146;:25;;;;13193:8;13182;:19;;;;13226:11;13212;:25;;;;13262:11;13248;:25;;;;13295:8;13284;:19;;;;12874:437:::0;;;;;;:::o;5781:26::-;;;;:::o;5346:82::-;;;:::o;5579:28::-;;;;:::o;23804:37::-;;;;:::o;8764:151::-;8853:7;8880:11;:18;8892:5;8880:18;;;;;;;;;;;;;;;:27;8899:7;8880:27;;;;;;;;;;;;;;;;8873:34;;8764:151;;;;:::o;23413:28::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5814:23::-;;;;:::o;10909:122::-;701:12;:10;:12::i;:::-;692:21;;:5;;;;;;;;;;:21;;;684:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;11015:8:::1;;;;;;;;;;;11011:2;:12;;;;:::i;:::-;10997:11;:26;;;;:::i;:::-;10982:12;:41;;;;10909:122:::0;:::o;23448:50::-;;;;;;;;;;;;;;;;;:::o;924:109::-;701:12;:10;:12::i;:::-;692:21;;:5;;;;;;;;;;:21;;;684:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;997:28:::1;1016:8;997:18;:28::i;:::-;924:109:::0;:::o;3005:98::-;3063:7;3094:1;3090;:5;;;;:::i;:::-;3083:12;;3005:98;;;;:::o;2793:::-;2851:7;2882:1;2878;:5;;;;:::i;:::-;2871:12;;2793:98;;;;:::o;95:::-;148:7;175:10;168:17;;95:98;:::o;10206:344::-;10325:1;10308:19;;:5;:19;;;10300:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10406:1;10387:21;;:7;:21;;;10379:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10488:6;10458:11;:18;10470:5;10458:18;;;;;;;;;;;;;;;:27;10477:7;10458:27;;;;;;;;;;;;;;;:36;;;;10526:7;10510:32;;10519:5;10510:32;;;10535:6;10510:32;;;;;;:::i;:::-;;;;;;;;10206:344;;;:::o;11039:1003::-;11163:1;11145:20;;:6;:20;;;11137:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;11247:1;11226:23;;:9;:23;;;11218:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;11317:1;11308:6;:10;11300:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;11545:13;;;;;;;;;;;11527:32;;:6;:32;;;:71;;;;11584:13;;;;;;;;;;;11563:35;;:9;:35;;;11527:71;11523:412;;;11614:44;11629:6;11637:9;11648:6;11656:1;11614:14;:44::i;:::-;11697:13;;;;;;;;;;;11679:32;;:6;:32;;;11675:158;;11731:24;11745:9;11731:13;:24::i;:::-;11675:158;;;11796:21;11810:6;11796:13;:21::i;:::-;11675:158;11523:412;;;11879:44;11894:6;11902:9;11913:6;11921:1;11879:14;:44::i;:::-;11523:412;11039:1003;;;:::o;15089:163::-;15130:7;15151:15;15168;15187:19;:17;:19::i;:::-;15150:56;;;;15224:20;15236:7;15224;:11;;:20;;;;:::i;:::-;15217:27;;;;15089:163;:::o;15888:596::-;15998:11;:19;16010:6;15998:19;;;;;;;;;;;;;;;;;;;;;;;;;:46;;;;;16022:11;:22;16034:9;16022:22;;;;;;;;;;;;;;;;;;;;;;;;;16021:23;15998:46;15994:483;;;16061:52;16083:6;16091:9;16102:6;16110:2;16061:21;:52::i;:::-;15994:483;;;16136:11;:19;16148:6;16136:19;;;;;;;;;;;;;;;;;;;;;;;;;16135:20;:46;;;;;16159:11;:22;16171:9;16159:22;;;;;;;;;;;;;;;;;;;;;;;;;16135:46;16131:346;;;16198:50;16218:6;16226:9;16237:6;16245:2;16198:19;:50::i;:::-;16131:346;;;16270:11;:19;16282:6;16270:19;;;;;;;;;;;;;;;;;;;;;;;;;:45;;;;;16293:11;:22;16305:9;16293:22;;;;;;;;;;;;;;;;;;;;;;;;;16270:45;16266:211;;;16332:52;16354:6;16362:9;16373:6;16381:2;16332:21;:52::i;:::-;16266:211;;;16417:48;16435:6;16443:9;16454:6;16462:2;16417:17;:48::i;:::-;16266:211;16131:346;15994:483;15888:596;;;;:::o;2687:98::-;2745:7;2776:1;2772;:5;;;;:::i;:::-;2765:12;;2687:98;;;;:::o;1041:264::-;1149:1;1129:22;;:8;:22;;;1107:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;1261:8;1233:37;;1254:5;;;;;;;;;;1233:37;;;;;;;;;;;;1289:8;1281:5;;:16;;;;;;;;;;;;;;;;;;1041:264;:::o;23565:197::-;23648:1;23624:15;:20;23640:3;23624:20;;;;;;;;;;;;;;;;:25;23620:135;;23689:11;:18;;;;23666:15;:20;23682:3;23666:20;;;;;;;;;;;;;;;:41;;;;23722:11;23739:3;23722:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23620:135;23565:197;:::o;15260:620::-;15310:7;15319;15339:15;15357:7;;15339:25;;15375:15;15393:7;;15375:25;;15416:9;15411:289;15435:9;:16;;;;15431:1;:20;15411:289;;;15501:7;15477;:21;15485:9;15495:1;15485:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;15477:21;;;;;;;;;;;;;;;;:31;:66;;;;15536:7;15512;:21;15520:9;15530:1;15520:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;15512:21;;;;;;;;;;;;;;;;:31;15477:66;15473:97;;;15553:7;;15562;;15545:25;;;;;;;;;15473:97;15595:34;15607:7;:21;15615:9;15625:1;15615:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;15607:21;;;;;;;;;;;;;;;;15595:7;:11;;:34;;;;:::i;:::-;15585:44;;15654:34;15666:7;:21;15674:9;15684:1;15674:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;15666:21;;;;;;;;;;;;;;;;15654:7;:11;;:34;;;;:::i;:::-;15644:44;;15453:3;;;;;:::i;:::-;;;;15411:289;;;;15724:20;15736:7;;15724;;:11;;:20;;;;:::i;:::-;15714:7;:30;15710:61;;;15754:7;;15763;;15746:25;;;;;;;;15710:61;15855:7;15864;15847:25;;;;;;15260:620;;;:::o;19952:1046::-;20066:23;20092:24;20104:7;20113:2;20092:11;:24::i;:::-;20066:50;;20127:20;20150:28;20166:7;20175:2;20150:15;:28::i;:::-;20127:51;;20190:15;20207:23;20234:36;20246:7;20255:10;:8;:10::i;:::-;20267:2;20234:11;:36::i;:::-;20189:81;;;;20281:36;20320:51;20346:7;20356:10;:8;:10::i;:::-;20368:2;20320:25;:51::i;:::-;20281:90;;20402:28;20422:7;20402;:15;20410:6;20402:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;20384:7;:15;20392:6;20384:15;;;;;;;;;;;;;;;:46;;;;20459:28;20479:7;20459;:15;20467:6;20459:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;20441:7;:15;20449:6;20441:15;;;;;;;;;;;;;;;:46;;;;20519:39;20542:15;20519:7;:18;20527:9;20519:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;20498:7;:18;20506:9;20498:18;;;;;;;;;;;;;;;:60;;;;20579:48;20594:6;20602;20610:12;20624:2;20579:14;:48::i;:::-;20671:1;20644:12;:24;;;:28;:60;;;;20703:1;20676:12;:24;;;:28;20644:60;20640:291;;;20730:1;20724:2;:7;20720:200;;20751:56;20763:12;:24;;;20789:6;:17;;;20751:11;:56::i;:::-;20720:200;;;20848:56;20860:12;:24;;;20886:6;:17;;;20848:11;:56::i;:::-;20720:200;20640:291;20963:9;20946:44;;20955:6;20946:44;;;20974:15;20946:44;;;;;;:::i;:::-;;;;;;;;20055:943;;;;;19952:1046;;;;:::o;18874:1068::-;18986:23;19012:24;19024:7;19033:2;19012:11;:24::i;:::-;18986:50;;19047:20;19070:28;19086:7;19095:2;19070:15;:28::i;:::-;19047:51;;19110:15;19127:23;19154:36;19166:7;19175:10;:8;:10::i;:::-;19187:2;19154:11;:36::i;:::-;19109:81;;;;19201:36;19240:51;19266:7;19276:10;:8;:10::i;:::-;19288:2;19240:25;:51::i;:::-;19201:90;;19330:28;19350:7;19330;:15;19338:6;19330:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;19312:7;:15;19320:6;19312:15;;;;;;;;;;;;;;;:46;;;;19390:39;19413:15;19390:7;:18;19398:9;19390:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;19369:7;:18;19377:9;19369:18;;;;;;;;;;;;;;;:60;;;;19461:39;19484:15;19461:7;:18;19469:9;19461:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;19440:7;:18;19448:9;19440:18;;;;;;;;;;;;;;;:60;;;;19513:48;19528:6;19536;19544:12;19558:2;19513:14;:48::i;:::-;19605:1;19578:12;:24;;;:28;:60;;;;19637:1;19610:12;:24;;;:28;19578:60;19574:291;;;19664:1;19658:2;:7;19654:200;;19685:56;19697:12;:24;;;19723:6;:17;;;19685:11;:56::i;:::-;19654:200;;;19782:56;19794:12;:24;;;19820:6;:17;;;19782:11;:56::i;:::-;19654:200;19574:291;19907:9;19890:44;;19899:6;19890:44;;;19918:15;19890:44;;;;;;:::i;:::-;;;;;;;;18975:967;;;;;18874:1068;;;;:::o;21008:1125::-;21122:23;21148:24;21160:7;21169:2;21148:11;:24::i;:::-;21122:50;;21183:20;21206:28;21222:7;21231:2;21206:15;:28::i;:::-;21183:51;;21246:15;21263:23;21290:36;21302:7;21311:10;:8;:10::i;:::-;21323:2;21290:11;:36::i;:::-;21245:81;;;;21337:36;21376:51;21402:7;21412:10;:8;:10::i;:::-;21424:2;21376:25;:51::i;:::-;21337:90;;21466:28;21486:7;21466;:15;21474:6;21466:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;21448:7;:15;21456:6;21448:15;;;;;;;;;;;;;;;:46;;;;21523:28;21543:7;21523;:15;21531:6;21523:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;21505:7;:15;21513:6;21505:15;;;;;;;;;;;;;;;:46;;;;21583:39;21606:15;21583:7;:18;21591:9;21583:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;21562:7;:18;21570:9;21562:18;;;;;;;;;;;;;;;:60;;;;21654:39;21677:15;21654:7;:18;21662:9;21654:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;21633:7;:18;21641:9;21633:18;;;;;;;;;;;;;;;:60;;;;21714:48;21729:6;21737;21745:12;21759:2;21714:14;:48::i;:::-;21806:1;21779:12;:24;;;:28;:60;;;;21838:1;21811:12;:24;;;:28;21779:60;21775:291;;;21865:1;21859:2;:7;21855:200;;21886:56;21898:12;:24;;;21924:6;:17;;;21886:11;:56::i;:::-;21855:200;;;21983:56;21995:12;:24;;;22021:6;:17;;;21983:11;:56::i;:::-;21855:200;21775:291;22098:9;22081:44;;22090:6;22081:44;;;22109:15;22081:44;;;;;;:::i;:::-;;;;;;;;21111:1022;;;;;21008:1125;;;;:::o;17875:985::-;17985:23;18011:24;18023:7;18032:2;18011:11;:24::i;:::-;17985:50;;18046:20;18069:28;18085:7;18094:2;18069:15;:28::i;:::-;18046:51;;18109:15;18126:23;18153:36;18165:7;18174:10;:8;:10::i;:::-;18186:2;18153:11;:36::i;:::-;18108:81;;;;18200:36;18239:51;18265:7;18275:10;:8;:10::i;:::-;18287:2;18239:25;:51::i;:::-;18200:90;;18321:28;18341:7;18321;:15;18329:6;18321:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;18303:7;:15;18311:6;18303:15;;;;;;;;;;;;;;;:46;;;;18381:39;18404:15;18381:7;:18;18389:9;18381:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;18360:7;:18;18368:9;18360:18;;;;;;;;;;;;;;;:60;;;;18433:48;18448:6;18456;18464:12;18478:2;18433:14;:48::i;:::-;18533:1;18506:12;:24;;;:28;:60;;;;18565:1;18538:12;:24;;;:28;18506:60;18502:291;;;18592:1;18586:2;:7;18582:200;;18613:56;18625:12;:24;;;18651:6;:17;;;18613:11;:56::i;:::-;18582:200;;;18710:56;18722:12;:24;;;18748:6;:17;;;18710:11;:56::i;:::-;18582:200;18502:291;18825:9;18808:44;;18817:6;18808:44;;;18836:15;18808:44;;;;;;:::i;:::-;;;;;;;;17974:886;;;;;17875:985;;;;:::o;16720:482::-;16792:7;16812:20;16835:28;16851:7;16860:2;16835:15;:28::i;:::-;16812:51;;16874:23;16918:1;16912:2;:7;16908:254;;16953:73;17011:6;:14;;;16953:53;16988:6;:17;;;16953:30;16965:6;:17;;;16953:7;:11;;:30;;;;:::i;:::-;:34;;:53;;;;:::i;:::-;:57;;:73;;;;:::i;:::-;16935:91;;16908:254;;;17077:73;17135:6;:14;;;17077:53;17112:6;:17;;;17077:30;17089:6;:17;;;17077:7;:11;;:30;;;;:::i;:::-;:34;;:53;;;;:::i;:::-;:57;;:73;;;;:::i;:::-;17059:91;;16908:254;17179:15;17172:22;;;;16720:482;;;;:::o;13584:666::-;13660:20;;:::i;:::-;13733:13;;13708:7;:21;13716:12;13708:21;;;;;;;;;;;;;;;;13698:7;;:31;;;;:::i;:::-;13697:49;13693:550;;;13772:1;13766:2;:7;13762:470;;13813:33;13842:3;13813:24;13825:11;;13813:7;:11;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;13793:6;:17;;:53;;;;;13882:30;13908:3;13882:21;13894:8;;13882:7;:11;;:21;;;;:::i;:::-;:25;;:30;;;;:::i;:::-;13865:6;:14;;:47;;;;;13951:33;13980:3;13951:24;13963:11;;13951:7;:11;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;13931:6;:17;;:53;;;;;13762:470;;;14045:33;14074:3;14045:24;14057:11;;14045:7;:11;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;14025:6;:17;;:53;;;;;14114:30;14140:3;14114:21;14126:8;;14114:7;:11;;:21;;;;:::i;:::-;:25;;:30;;;;:::i;:::-;14097:6;:14;;:47;;;;;14183:33;14212:3;14183:24;14195:11;;14183:7;:11;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;14163:6;:17;;:53;;;;;13762:470;13693:550;13584:666;;;;:::o;17210:657::-;17303:7;17312;17332:15;17350:24;17362:11;17350:7;:11;;:24;;;;:::i;:::-;17332:42;;17385:36;17424:51;17450:7;17459:11;17472:2;17424:25;:51::i;:::-;17385:90;;17486:23;17530:1;17524:2;:7;17520:296;;17565:94;17637:12;:21;;;17565:67;17607:12;:24;;;17565:37;17577:12;:24;;;17565:7;:11;;:37;;;;:::i;:::-;:41;;:67;;;;:::i;:::-;:71;;:94;;;;:::i;:::-;17547:112;;17520:296;;;17710:94;17782:12;:21;;;17710:67;17752:12;:24;;;17710:37;17722:12;:24;;;17710:7;:11;;:37;;;;:::i;:::-;:41;;:67;;;;:::i;:::-;:71;;:94;;;;:::i;:::-;17692:112;;17520:296;17834:7;17843:15;17826:33;;;;;;;17210:657;;;;;;:::o;14258:823::-;14365:36;;:::i;:::-;14414:20;14437:28;14453:7;14462:2;14437:15;:28::i;:::-;14414:51;;14500:1;14480:6;:17;;;:21;:46;;;;14525:1;14505:6;:17;;;:21;14480:46;14476:595;;;14552:1;14546:2;:7;14542:518;;14600:34;14622:11;14600:6;:17;;;:21;;:34;;;;:::i;:::-;14573:12;:24;;:61;;;;;14680:34;14702:11;14680:6;:17;;;:21;;:34;;;;:::i;:::-;14653:12;:24;;:61;;;;;14757:31;14776:11;14757:6;:14;;;:18;;:31;;;;:::i;:::-;14733:12;:21;;:55;;;;;14542:518;;;14856:34;14878:11;14856:6;:17;;;:21;;:34;;;;:::i;:::-;14829:12;:24;;:61;;;;;14936:34;14958:11;14936:6;:17;;;:21;;:34;;;;:::i;:::-;14909:12;:24;;:61;;;;;15013:31;15032:11;15013:6;:14;;;:18;;:31;;;;:::i;:::-;14989:12;:21;;:55;;;;;14542:518;14476:595;14403:678;14258:823;;;;;:::o;22141:1264::-;22290:1;22273:6;:14;;;:18;:40;;;;22312:1;22295:6;:14;;;:18;22273:40;22269:1129;;;22339:1;22333:2;:7;22329:1058;;22385:42;22412:6;:14;;;22385:7;:22;22401:4;22385:22;;;;;;;;;;;;;;;;:26;;:42;;;;:::i;:::-;22360:7;:22;22376:4;22360:22;;;;;;;;;;;;;;;:67;;;;22471:49;22498:12;:21;;;22471:7;:22;22487:4;22471:22;;;;;;;;;;;;;;;;:26;;:49;;;;:::i;:::-;22446:7;:22;22462:4;22446:22;;;;;;;;;;;;;;;:74;;;;22563:44;22589:6;:17;;;22563:7;:21;22571:12;22563:21;;;;;;;;;;;;;;;;:25;;:44;;;;:::i;:::-;22539:7;:21;22547:12;22539:21;;;;;;;;;;;;;;;:68;;;;22650:51;22676:12;:24;;;22650:7;:21;22658:12;22650:21;;;;;;;;;;;;;;;;:25;;:51;;;;:::i;:::-;22626:7;:21;22634:12;22626:21;;;;;;;;;;;;;;;:75;;;;22750:4;22725:47;;22734:6;22725:47;;;22757:6;:14;;;22725:47;;;;;;:::i;:::-;;;;;;;;22813:12;22796:49;;22805:6;22796:49;;;22827:6;:17;;;22796:49;;;;;;:::i;:::-;;;;;;;;22329:1058;;;22911:42;22938:6;:14;;;22911:7;:22;22927:4;22911:22;;;;;;;;;;;;;;;;:26;;:42;;;;:::i;:::-;22886:7;:22;22902:4;22886:22;;;;;;;;;;;;;;;:67;;;;22997:49;23024:12;:21;;;22997:7;:22;23013:4;22997:22;;;;;;;;;;;;;;;;:26;;:49;;;;:::i;:::-;22972:7;:22;22988:4;22972:22;;;;;;;;;;;;;;;:74;;;;23089:44;23115:6;:17;;;23089:7;:21;23097:12;23089:21;;;;;;;;;;;;;;;;:25;;:44;;;;:::i;:::-;23065:7;:21;23073:12;23065:21;;;;;;;;;;;;;;;:68;;;;23176:51;23202:12;:24;;;23176:7;:21;23184:12;23176:21;;;;;;;;;;;;;;;;:25;;:51;;;;:::i;:::-;23152:7;:21;23160:12;23152:21;;;;;;;;;;;;;;;:75;;;;23276:4;23251:47;;23260:6;23251:47;;;23283:6;:14;;;23251:47;;;;;;:::i;:::-;;;;;;;;23339:12;23322:49;;23331:6;23322:49;;;23353:6;:17;;;23322:49;;;;;;:::i;:::-;;;;;;;;22329:1058;22269:1129;22141:1264;;;;:::o;16492:220::-;16589:1;16576:10;:14;16572:133;;;16616:23;16628:10;16616:7;;:11;;:23;;;;:::i;:::-;16606:7;:33;;;;16667:26;16682:10;16667;;:14;;:26;;;;:::i;:::-;16654:10;:39;;;;16572:133;16492:220;;:::o;2899:98::-;2957:7;2988:1;2984;:5;;;;:::i;:::-;2977:12;;2899:98;;;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;7:77:1:-;44:7;73:5;62:16;;7:77;;;:::o;90:118::-;177:24;195:5;177:24;:::i;:::-;172:3;165:37;90:118;;:::o;214:222::-;307:4;345:2;334:9;330:18;322:26;;358:71;426:1;415:9;411:17;402:6;358:71;:::i;:::-;214:222;;;;:::o;442:99::-;494:6;528:5;522:12;512:22;;442:99;;;:::o;547:169::-;631:11;665:6;660:3;653:19;705:4;700:3;696:14;681:29;;547:169;;;;:::o;722:307::-;790:1;800:113;814:6;811:1;808:13;800:113;;;899:1;894:3;890:11;884:18;880:1;875:3;871:11;864:39;836:2;833:1;829:10;824:15;;800:113;;;931:6;928:1;925:13;922:101;;;1011:1;1002:6;997:3;993:16;986:27;922:101;771:258;722:307;;;:::o;1035:102::-;1076:6;1127:2;1123:7;1118:2;1111:5;1107:14;1103:28;1093:38;;1035:102;;;:::o;1143:364::-;1231:3;1259:39;1292:5;1259:39;:::i;:::-;1314:71;1378:6;1373:3;1314:71;:::i;:::-;1307:78;;1394:52;1439:6;1434:3;1427:4;1420:5;1416:16;1394:52;:::i;:::-;1471:29;1493:6;1471:29;:::i;:::-;1466:3;1462:39;1455:46;;1235:272;1143:364;;;;:::o;1513:313::-;1626:4;1664:2;1653:9;1649:18;1641:26;;1713:9;1707:4;1703:20;1699:1;1688:9;1684:17;1677:47;1741:78;1814:4;1805:6;1741:78;:::i;:::-;1733:86;;1513:313;;;;:::o;1913:117::-;2022:1;2019;2012:12;2159:126;2196:7;2236:42;2229:5;2225:54;2214:65;;2159:126;;;:::o;2291:96::-;2328:7;2357:24;2375:5;2357:24;:::i;:::-;2346:35;;2291:96;;;:::o;2393:122::-;2466:24;2484:5;2466:24;:::i;:::-;2459:5;2456:35;2446:63;;2505:1;2502;2495:12;2446:63;2393:122;:::o;2521:139::-;2567:5;2605:6;2592:20;2583:29;;2621:33;2648:5;2621:33;:::i;:::-;2521:139;;;;:::o;2666:122::-;2739:24;2757:5;2739:24;:::i;:::-;2732:5;2729:35;2719:63;;2778:1;2775;2768:12;2719:63;2666:122;:::o;2794:139::-;2840:5;2878:6;2865:20;2856:29;;2894:33;2921:5;2894:33;:::i;:::-;2794:139;;;;:::o;2939:474::-;3007:6;3015;3064:2;3052:9;3043:7;3039:23;3035:32;3032:119;;;3070:79;;:::i;:::-;3032:119;3190:1;3215:53;3260:7;3251:6;3240:9;3236:22;3215:53;:::i;:::-;3205:63;;3161:117;3317:2;3343:53;3388:7;3379:6;3368:9;3364:22;3343:53;:::i;:::-;3333:63;;3288:118;2939:474;;;;;:::o;3419:90::-;3453:7;3496:5;3489:13;3482:21;3471:32;;3419:90;;;:::o;3515:109::-;3596:21;3611:5;3596:21;:::i;:::-;3591:3;3584:34;3515:109;;:::o;3630:210::-;3717:4;3755:2;3744:9;3740:18;3732:26;;3768:65;3830:1;3819:9;3815:17;3806:6;3768:65;:::i;:::-;3630:210;;;;:::o;3846:116::-;3916:21;3931:5;3916:21;:::i;:::-;3909:5;3906:32;3896:60;;3952:1;3949;3942:12;3896:60;3846:116;:::o;3968:133::-;4011:5;4049:6;4036:20;4027:29;;4065:30;4089:5;4065:30;:::i;:::-;3968:133;;;;:::o;4107:468::-;4172:6;4180;4229:2;4217:9;4208:7;4204:23;4200:32;4197:119;;;4235:79;;:::i;:::-;4197:119;4355:1;4380:53;4425:7;4416:6;4405:9;4401:22;4380:53;:::i;:::-;4370:63;;4326:117;4482:2;4508:50;4550:7;4541:6;4530:9;4526:22;4508:50;:::i;:::-;4498:60;;4453:115;4107:468;;;;;:::o;4581:619::-;4658:6;4666;4674;4723:2;4711:9;4702:7;4698:23;4694:32;4691:119;;;4729:79;;:::i;:::-;4691:119;4849:1;4874:53;4919:7;4910:6;4899:9;4895:22;4874:53;:::i;:::-;4864:63;;4820:117;4976:2;5002:53;5047:7;5038:6;5027:9;5023:22;5002:53;:::i;:::-;4992:63;;4947:118;5104:2;5130:53;5175:7;5166:6;5155:9;5151:22;5130:53;:::i;:::-;5120:63;;5075:118;4581:619;;;;;:::o;5206:329::-;5265:6;5314:2;5302:9;5293:7;5289:23;5285:32;5282:119;;;5320:79;;:::i;:::-;5282:119;5440:1;5465:53;5510:7;5501:6;5490:9;5486:22;5465:53;:::i;:::-;5455:63;;5411:117;5206:329;;;;:::o;5541:::-;5600:6;5649:2;5637:9;5628:7;5624:23;5620:32;5617:119;;;5655:79;;:::i;:::-;5617:119;5775:1;5800:53;5845:7;5836:6;5825:9;5821:22;5800:53;:::i;:::-;5790:63;;5746:117;5541:329;;;;:::o;5876:86::-;5911:7;5951:4;5944:5;5940:16;5929:27;;5876:86;;;:::o;5968:112::-;6051:22;6067:5;6051:22;:::i;:::-;6046:3;6039:35;5968:112;;:::o;6086:214::-;6175:4;6213:2;6202:9;6198:18;6190:26;;6226:67;6290:1;6279:9;6275:17;6266:6;6226:67;:::i;:::-;6086:214;;;;:::o;6306:60::-;6334:3;6355:5;6348:12;;6306:60;;;:::o;6372:142::-;6422:9;6455:53;6473:34;6482:24;6500:5;6482:24;:::i;:::-;6473:34;:::i;:::-;6455:53;:::i;:::-;6442:66;;6372:142;;;:::o;6520:126::-;6570:9;6603:37;6634:5;6603:37;:::i;:::-;6590:50;;6520:126;;;:::o;6652:140::-;6716:9;6749:37;6780:5;6749:37;:::i;:::-;6736:50;;6652:140;;;:::o;6798:159::-;6899:51;6944:5;6899:51;:::i;:::-;6894:3;6887:64;6798:159;;:::o;6963:250::-;7070:4;7108:2;7097:9;7093:18;7085:26;;7121:85;7203:1;7192:9;7188:17;7179:6;7121:85;:::i;:::-;6963:250;;;;:::o;7219:118::-;7306:24;7324:5;7306:24;:::i;:::-;7301:3;7294:37;7219:118;;:::o;7343:222::-;7436:4;7474:2;7463:9;7459:18;7451:26;;7487:71;7555:1;7544:9;7540:17;7531:6;7487:71;:::i;:::-;7343:222;;;;:::o;7571:1057::-;7675:6;7683;7691;7699;7707;7715;7764:3;7752:9;7743:7;7739:23;7735:33;7732:120;;;7771:79;;:::i;:::-;7732:120;7891:1;7916:53;7961:7;7952:6;7941:9;7937:22;7916:53;:::i;:::-;7906:63;;7862:117;8018:2;8044:53;8089:7;8080:6;8069:9;8065:22;8044:53;:::i;:::-;8034:63;;7989:118;8146:2;8172:53;8217:7;8208:6;8197:9;8193:22;8172:53;:::i;:::-;8162:63;;8117:118;8274:2;8300:53;8345:7;8336:6;8325:9;8321:22;8300:53;:::i;:::-;8290:63;;8245:118;8402:3;8429:53;8474:7;8465:6;8454:9;8450:22;8429:53;:::i;:::-;8419:63;;8373:119;8531:3;8558:53;8603:7;8594:6;8583:9;8579:22;8558:53;:::i;:::-;8548:63;;8502:119;7571:1057;;;;;;;;:::o;8634:474::-;8702:6;8710;8759:2;8747:9;8738:7;8734:23;8730:32;8727:119;;;8765:79;;:::i;:::-;8727:119;8885:1;8910:53;8955:7;8946:6;8935:9;8931:22;8910:53;:::i;:::-;8900:63;;8856:117;9012:2;9038:53;9083:7;9074:6;9063:9;9059:22;9038:53;:::i;:::-;9028:63;;8983:118;8634:474;;;;;:::o;9114:180::-;9162:77;9159:1;9152:88;9259:4;9256:1;9249:15;9283:4;9280:1;9273:15;9300:320;9344:6;9381:1;9375:4;9371:12;9361:22;;9428:1;9422:4;9418:12;9449:18;9439:81;;9505:4;9497:6;9493:17;9483:27;;9439:81;9567:2;9559:6;9556:14;9536:18;9533:38;9530:84;;9586:18;;:::i;:::-;9530:84;9351:269;9300:320;;;:::o;9626:182::-;9766:34;9762:1;9754:6;9750:14;9743:58;9626:182;:::o;9814:366::-;9956:3;9977:67;10041:2;10036:3;9977:67;:::i;:::-;9970:74;;10053:93;10142:3;10053:93;:::i;:::-;10171:2;10166:3;10162:12;10155:19;;9814:366;;;:::o;10186:419::-;10352:4;10390:2;10379:9;10375:18;10367:26;;10439:9;10433:4;10429:20;10425:1;10414:9;10410:17;10403:47;10467:131;10593:4;10467:131;:::i;:::-;10459:139;;10186:419;;;:::o;10611:227::-;10751:34;10747:1;10739:6;10735:14;10728:58;10820:10;10815:2;10807:6;10803:15;10796:35;10611:227;:::o;10844:366::-;10986:3;11007:67;11071:2;11066:3;11007:67;:::i;:::-;11000:74;;11083:93;11172:3;11083:93;:::i;:::-;11201:2;11196:3;11192:12;11185:19;;10844:366;;;:::o;11216:419::-;11382:4;11420:2;11409:9;11405:18;11397:26;;11469:9;11463:4;11459:20;11455:1;11444:9;11440:17;11433:47;11497:131;11623:4;11497:131;:::i;:::-;11489:139;;11216:419;;;:::o;11641:229::-;11781:34;11777:1;11769:6;11765:14;11758:58;11850:12;11845:2;11837:6;11833:15;11826:37;11641:229;:::o;11876:366::-;12018:3;12039:67;12103:2;12098:3;12039:67;:::i;:::-;12032:74;;12115:93;12204:3;12115:93;:::i;:::-;12233:2;12228:3;12224:12;12217:19;;11876:366;;;:::o;12248:419::-;12414:4;12452:2;12441:9;12437:18;12429:26;;12501:9;12495:4;12491:20;12487:1;12476:9;12472:17;12465:47;12529:131;12655:4;12529:131;:::i;:::-;12521:139;;12248:419;;;:::o;12673:177::-;12813:29;12809:1;12801:6;12797:14;12790:53;12673:177;:::o;12856:366::-;12998:3;13019:67;13083:2;13078:3;13019:67;:::i;:::-;13012:74;;13095:93;13184:3;13095:93;:::i;:::-;13213:2;13208:3;13204:12;13197:19;;12856:366;;;:::o;13228:419::-;13394:4;13432:2;13421:9;13417:18;13409:26;;13481:9;13475:4;13471:20;13467:1;13456:9;13452:17;13445:47;13509:131;13635:4;13509:131;:::i;:::-;13501:139;;13228:419;;;:::o;13653:180::-;13701:77;13698:1;13691:88;13798:4;13795:1;13788:15;13822:4;13819:1;13812:15;13839:180;13887:77;13884:1;13877:88;13984:4;13981:1;13974:15;14008:4;14005:1;13998:15;14025:191;14065:4;14085:20;14103:1;14085:20;:::i;:::-;14080:25;;14119:20;14137:1;14119:20;:::i;:::-;14114:25;;14158:1;14155;14152:8;14149:34;;;14163:18;;:::i;:::-;14149:34;14208:1;14205;14201:9;14193:17;;14025:191;;;;:::o;14222:180::-;14270:77;14267:1;14260:88;14367:4;14364:1;14357:15;14391:4;14388:1;14381:15;14408:233;14447:3;14470:24;14488:5;14470:24;:::i;:::-;14461:33;;14516:66;14509:5;14506:77;14503:103;;14586:18;;:::i;:::-;14503:103;14633:1;14626:5;14622:13;14615:20;;14408:233;;;:::o;14647:305::-;14687:3;14706:20;14724:1;14706:20;:::i;:::-;14701:25;;14740:20;14758:1;14740:20;:::i;:::-;14735:25;;14894:1;14826:66;14822:74;14819:1;14816:81;14813:107;;;14900:18;;:::i;:::-;14813:107;14944:1;14941;14937:9;14930:16;;14647:305;;;;:::o;14958:143::-;15015:5;15046:6;15040:13;15031:22;;15062:33;15089:5;15062:33;:::i;:::-;14958:143;;;;:::o;15107:351::-;15177:6;15226:2;15214:9;15205:7;15201:23;15197:32;15194:119;;;15232:79;;:::i;:::-;15194:119;15352:1;15377:64;15433:7;15424:6;15413:9;15409:22;15377:64;:::i;:::-;15367:74;;15323:128;15107:351;;;;:::o;15464:348::-;15504:7;15527:20;15545:1;15527:20;:::i;:::-;15522:25;;15561:20;15579:1;15561:20;:::i;:::-;15556:25;;15749:1;15681:66;15677:74;15674:1;15671:81;15666:1;15659:9;15652:17;15648:105;15645:131;;;15756:18;;:::i;:::-;15645:131;15804:1;15801;15797:9;15786:20;;15464:348;;;;:::o;15818:180::-;15866:77;15863:1;15856:88;15963:4;15960:1;15953:15;15987:4;15984:1;15977:15;16004:185;16044:1;16061:20;16079:1;16061:20;:::i;:::-;16056:25;;16095:20;16113:1;16095:20;:::i;:::-;16090:25;;16134:1;16124:35;;16139:18;;:::i;:::-;16124:35;16181:1;16178;16174:9;16169:14;;16004:185;;;;:::o;16195:224::-;16335:34;16331:1;16323:6;16319:14;16312:58;16404:7;16399:2;16391:6;16387:15;16380:32;16195:224;:::o;16425:366::-;16567:3;16588:67;16652:2;16647:3;16588:67;:::i;:::-;16581:74;;16664:93;16753:3;16664:93;:::i;:::-;16782:2;16777:3;16773:12;16766:19;;16425:366;;;:::o;16797:419::-;16963:4;17001:2;16990:9;16986:18;16978:26;;17050:9;17044:4;17040:20;17036:1;17025:9;17021:17;17014:47;17078:131;17204:4;17078:131;:::i;:::-;17070:139;;16797:419;;;:::o;17222:102::-;17264:8;17311:5;17308:1;17304:13;17283:34;;17222:102;;;:::o;17330:848::-;17391:5;17398:4;17422:6;17413:15;;17446:5;17437:14;;17460:712;17481:1;17471:8;17468:15;17460:712;;;17576:4;17571:3;17567:14;17561:4;17558:24;17555:50;;;17585:18;;:::i;:::-;17555:50;17635:1;17625:8;17621:16;17618:451;;;18050:4;18043:5;18039:16;18030:25;;17618:451;18100:4;18094;18090:15;18082:23;;18130:32;18153:8;18130:32;:::i;:::-;18118:44;;17460:712;;;17330:848;;;;;;;:::o;18184:1073::-;18238:5;18429:8;18419:40;;18450:1;18441:10;;18452:5;;18419:40;18478:4;18468:36;;18495:1;18486:10;;18497:5;;18468:36;18564:4;18612:1;18607:27;;;;18648:1;18643:191;;;;18557:277;;18607:27;18625:1;18616:10;;18627:5;;;18643:191;18688:3;18678:8;18675:17;18672:43;;;18695:18;;:::i;:::-;18672:43;18744:8;18741:1;18737:16;18728:25;;18779:3;18772:5;18769:14;18766:40;;;18786:18;;:::i;:::-;18766:40;18819:5;;;18557:277;;18943:2;18933:8;18930:16;18924:3;18918:4;18915:13;18911:36;18893:2;18883:8;18880:16;18875:2;18869:4;18866:12;18862:35;18846:111;18843:246;;;18999:8;18993:4;18989:19;18980:28;;19034:3;19027:5;19024:14;19021:40;;;19041:18;;:::i;:::-;19021:40;19074:5;;18843:246;19114:42;19152:3;19142:8;19136:4;19133:1;19114:42;:::i;:::-;19099:57;;;;19188:4;19183:3;19179:14;19172:5;19169:25;19166:51;;;19197:18;;:::i;:::-;19166:51;19246:4;19239:5;19235:16;19226:25;;18184:1073;;;;;;:::o;19263:281::-;19321:5;19345:23;19363:4;19345:23;:::i;:::-;19337:31;;19389:25;19405:8;19389:25;:::i;:::-;19377:37;;19433:104;19470:66;19460:8;19454:4;19433:104;:::i;:::-;19424:113;;19263:281;;;;:::o;19550:223::-;19690:34;19686:1;19678:6;19674:14;19667:58;19759:6;19754:2;19746:6;19742:15;19735:31;19550:223;:::o;19779:366::-;19921:3;19942:67;20006:2;20001:3;19942:67;:::i;:::-;19935:74;;20018:93;20107:3;20018:93;:::i;:::-;20136:2;20131:3;20127:12;20120:19;;19779:366;;;:::o;20151:419::-;20317:4;20355:2;20344:9;20340:18;20332:26;;20404:9;20398:4;20394:20;20390:1;20379:9;20375:17;20368:47;20432:131;20558:4;20432:131;:::i;:::-;20424:139;;20151:419;;;:::o;20576:221::-;20716:34;20712:1;20704:6;20700:14;20693:58;20785:4;20780:2;20772:6;20768:15;20761:29;20576:221;:::o;20803:366::-;20945:3;20966:67;21030:2;21025:3;20966:67;:::i;:::-;20959:74;;21042:93;21131:3;21042:93;:::i;:::-;21160:2;21155:3;21151:12;21144:19;;20803:366;;;:::o;21175:419::-;21341:4;21379:2;21368:9;21364:18;21356:26;;21428:9;21422:4;21418:20;21414:1;21403:9;21399:17;21392:47;21456:131;21582:4;21456:131;:::i;:::-;21448:139;;21175:419;;;:::o;21600:224::-;21740:34;21736:1;21728:6;21724:14;21717:58;21809:7;21804:2;21796:6;21792:15;21785:32;21600:224;:::o;21830:366::-;21972:3;21993:67;22057:2;22052:3;21993:67;:::i;:::-;21986:74;;22069:93;22158:3;22069:93;:::i;:::-;22187:2;22182:3;22178:12;22171:19;;21830:366;;;:::o;22202:419::-;22368:4;22406:2;22395:9;22391:18;22383:26;;22455:9;22449:4;22445:20;22441:1;22430:9;22426:17;22419:47;22483:131;22609:4;22483:131;:::i;:::-;22475:139;;22202:419;;;:::o;22627:222::-;22767:34;22763:1;22755:6;22751:14;22744:58;22836:5;22831:2;22823:6;22819:15;22812:30;22627:222;:::o;22855:366::-;22997:3;23018:67;23082:2;23077:3;23018:67;:::i;:::-;23011:74;;23094:93;23183:3;23094:93;:::i;:::-;23212:2;23207:3;23203:12;23196:19;;22855:366;;;:::o;23227:419::-;23393:4;23431:2;23420:9;23416:18;23408:26;;23480:9;23474:4;23470:20;23466:1;23455:9;23451:17;23444:47;23508:131;23634:4;23508:131;:::i;:::-;23500:139;;23227:419;;;:::o;23652:228::-;23792:34;23788:1;23780:6;23776:14;23769:58;23861:11;23856:2;23848:6;23844:15;23837:36;23652:228;:::o;23886:366::-;24028:3;24049:67;24113:2;24108:3;24049:67;:::i;:::-;24042:74;;24125:93;24214:3;24125:93;:::i;:::-;24243:2;24238:3;24234:12;24227:19;;23886:366;;;:::o;24258:419::-;24424:4;24462:2;24451:9;24447:18;24439:26;;24511:9;24505:4;24501:20;24497:1;24486:9;24482:17;24475:47;24539:131;24665:4;24539:131;:::i;:::-;24531:139;;24258:419;;;:::o;24683:225::-;24823:34;24819:1;24811:6;24807:14;24800:58;24892:8;24887:2;24879:6;24875:15;24868:33;24683:225;:::o;24914:366::-;25056:3;25077:67;25141:2;25136:3;25077:67;:::i;:::-;25070:74;;25153:93;25242:3;25153:93;:::i;:::-;25271:2;25266:3;25262:12;25255:19;;24914:366;;;:::o;25286:419::-;25452:4;25490:2;25479:9;25475:18;25467:26;;25539:9;25533:4;25529:20;25525:1;25514:9;25510:17;25503:47;25567:131;25693:4;25567:131;:::i;:::-;25559:139;;25286:419;;;:::o

Swarm Source

ipfs://6c28b20a955c81849124de1671022c2820ef8779a6a80d72574e809174bf9903
Block Transaction Gas Used Reward
Age Block Fee Address Jailed Incoming
Block Uncle Number Difficulty Gas Used Reward
Loading
Loading