ETH Price: $2,626.52 (-2.03%)

Token

Govt (GOVT)
 

Overview

Max Total Supply

100,000,000 GOVT

Holders

68

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
0.000000001 GOVT

Value
$0.00
0x2Ea05ca521520CeD39F93f71D35Ef9B138b8D07d
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
Govt

Compiler Version
v0.8.16+commit.07a7930e

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

/**

Time for fuck the govt, 
an ecosystem that informs investors on what's being done by the government and throws the limelight on it.
Website: govterc.com
Telegram: https://t.me/GovtPortaleth
Twitter: https://twitter.com/govt_erc


*/

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

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

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

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

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

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

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

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

}

contract Ownable is Context {
    address private _owner;
    address private _previousOwner;
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

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

    function owner() public view returns (address) {
        return _owner;
    }

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

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

}  

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

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

contract Govt is Context, IERC20, Ownable {
    using SafeMath for uint256;
    mapping (address => uint256) private _rOwned;
    mapping (address => uint256) private _tOwned;
    mapping (address => uint256) private _buyMap;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _isExcludedFromFee;
    mapping (address => bool) private bots;
    mapping (address => uint) private cooldown;
    uint256 private constant MAX = ~uint256(0);
    uint256 private constant _tTotal = 100 * 10**6 * 10**9;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    
    struct Taxes {
        uint256 buyFee1;
        uint256 buyFee2;
        uint256 sellFee1;
        uint256 sellFee2;
    }

    Taxes private _taxes = Taxes(0,1,0,1);
    uint256 private initialTotalBuyFee = _taxes.buyFee1 + _taxes.buyFee2;
    uint256 private initialTotalSellFee = _taxes.sellFee1 + _taxes.sellFee2;
    uint256 private startSellFee = 10;
    uint256 private finalSellFee = 1;
    uint256 private taxSubstractFrequency = 2 minutes;

    address payable private _feeAddrWallet;
    uint256 private _feeRate = 20;
    
    string private constant _name = "Govt";
    string private constant _symbol = "GOVT";
    uint8 private constant _decimals = 9;
    
    IUniswapV2Router02 private uniswapV2Router;
    address private uniswapV2Pair;

    bool private tradingOpen;
    uint256 launchedAt;

    bool private inSwap = false;
    bool private swapEnabled = false;
    bool private cooldownEnabled = false;

    uint256 private _maxTxAmount = _tTotal;
    uint256 private _maxWalletSize = _tTotal;

    event MaxTxAmountUpdated(uint _maxTxAmount);
    event TaxChange(uint _tax);

    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor () {
        _feeAddrWallet = payable(0xdAcFBB3C370f17CFC9F5216B327F4138c26c498E);
        _rOwned[_msgSender()] = _rTotal;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_feeAddrWallet] = true;
        emit Transfer(address(0), _msgSender(), _tTotal);
    }

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

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

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

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

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

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

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

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

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

    function setCooldownEnabled(bool onoff) external onlyOwner() {
        cooldownEnabled = onoff;
    }

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

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

    function _transfer(address from, address to, uint256 amount) private {
        require(amount > 0, "Amount cannot be zero.");

        if (from != owner() && to != owner()) {

            if (!_isBuy(from)) {
                if (_buyMap[tx.origin] != 0) {
                    uint256 taxSubstract = (block.timestamp - _buyMap[tx.origin]) / taxSubstractFrequency;
                    if (taxSubstract > startSellFee - finalSellFee) {
                        taxSubstract = startSellFee - finalSellFee;
                    }
                    _taxes.sellFee2 = startSellFee - taxSubstract;
                } else {
                    _taxes.sellFee2 = finalSellFee;
                }
                _buyMap[tx.origin] == 0;
            } else {
                if (_buyMap[to] == 0) {
                    _buyMap[to] = block.timestamp;
                }
                _taxes.sellFee2 = finalSellFee;
            }

            if (from == uniswapV2Pair && to != address(uniswapV2Router) && ! _isExcludedFromFee[to] && cooldownEnabled) {
                // buy
                require(amount <= _maxTxAmount, "Max transaction exceeded.");
                require(balanceOf(to) + amount <= _maxWalletSize, "Max wallet exceeded.");
            }

            if (from != address(uniswapV2Router) && ! _isExcludedFromFee[from] && to == uniswapV2Pair){
                require(!bots[from] && !bots[to]);
            }

            uint256 contractTokenBalance = balanceOf(address(this));
            if(contractTokenBalance > balanceOf(uniswapV2Pair).mul(_feeRate).div(100)) {
                contractTokenBalance = balanceOf(uniswapV2Pair).mul(_feeRate).div(100);
            }

            if (!inSwap && from != uniswapV2Pair && swapEnabled) {

                swapTokensForEth(contractTokenBalance);
                uint256 contractETHBalance = address(this).balance;
                if(contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
            }
        }

        _tokenTransfer(from,to,amount);
    }

    function swapTokensForEth(uint256 tokenAmount) private lockTheSwap {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp + 60
        );
    }

    function removeLimits() external onlyOwner{
        _maxTxAmount = _tTotal;
        _maxWalletSize = _tTotal;
    }

    function getCurrentFees() public view returns (uint256, uint256, uint256, uint256) {
        return (_taxes.buyFee1, _taxes.buyFee2, _taxes.sellFee1, _taxes.sellFee2);
    }

    function getYourCurrentFees() public view returns (uint256) {
        return getAddressesCurrentFees(_msgSender());
    }

    function getAddressesCurrentFees(address addr) public view returns (uint256) {
        require(_buyMap[addr] != 0, "This address didn't buy any tokens or it has already sold them.");
        uint256 taxSubstract = (block.timestamp - _buyMap[addr]) / taxSubstractFrequency;
        if (taxSubstract > startSellFee - finalSellFee) {
            taxSubstract = startSellFee - finalSellFee;
        }
        return startSellFee - taxSubstract;
    }

    function adjustFees(uint256 buyFee1, uint256 buyFee2, uint256 sellFee1, uint256 sellFee2) external onlyOwner {
        require(buyFee1 + buyFee2 <= initialTotalBuyFee);
        require(sellFee1 + sellFee2 <= initialTotalSellFee);
        _taxes.buyFee1 = buyFee1;
        _taxes.buyFee2 = buyFee2;
        _taxes.sellFee1 = sellFee1;
        _taxes.sellFee2 = sellFee2;
    }

    function changeMaxTxAmount(uint256 percentage) external onlyOwner{
        require(percentage>0);
        _maxTxAmount = _tTotal.mul(percentage).div(100);
    }

    function changeMaxWalletSize(uint256 percentage) external onlyOwner{
        require(percentage>0);
        _maxWalletSize = _tTotal.mul(percentage).div(100);
    }

    function setFeeRate(uint256 rate) external onlyOwner() {
        require(rate<=49);
        _feeRate = rate;
    }
        
    function sendETHToFee(uint256 amount) private {
        _feeAddrWallet.transfer(amount);
    }  

    function openTrading() external onlyOwner() {
        require(!tradingOpen, "Trading already open.");
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Router = _uniswapV2Router;
        _approve(address(this), address(uniswapV2Router), _tTotal);
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());
        uniswapV2Router.addLiquidityETH{value: address(this).balance}(address(this),balanceOf(address(this)),0,0,owner(),block.timestamp);
        swapEnabled = true;
        cooldownEnabled = true;
        _maxTxAmount = _tTotal.mul(3).div(100);
        _maxWalletSize = _tTotal.mul(3).div(100);
        tradingOpen = true;
        launchedAt = block.number;
        IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);
    }
    
    function addBot(address[] memory _bots) public onlyOwner {
        for (uint i = 0; i < _bots.length; i++) {
            if (_bots[i] != address(this) && _bots[i] != uniswapV2Pair && _bots[i] != address(uniswapV2Router)){
                bots[_bots[i]] = true;
            }
        }
    }
    
    function delBot(address notbot) public onlyOwner {
        bots[notbot] = false;
    }
        
    function _tokenTransfer(address sender, address recipient, uint256 amount) private {
        _transferStandard(sender, recipient, amount);
    }

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

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

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

    receive() external payable {}
    
    function manualswap() external onlyOwner {
        uint256 contractBalance = balanceOf(address(this));
        swapTokensForEth(contractBalance);
    }
    
    function manualsend() external onlyOwner {
        uint256 contractETHBalance = address(this).balance;
        sendETHToFee(contractETHBalance);
    }

    function _getValues(uint256 tAmount) private view returns (uint256, uint256, uint256, uint256, uint256, uint256) {
        (uint256 tTransferAmount, uint256 tFee, uint256 tTeam) = _isBuy(_msgSender()) ? _getTValues(tAmount, _taxes.buyFee1, _taxes.buyFee2) : _getTValues(tAmount, _taxes.sellFee1, _taxes.sellFee2);
        uint256 currentRate =  _getRate();
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(tAmount, tFee, tTeam, currentRate);
        return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tTeam);
    }

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

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

    function _isBuy(address _sender) private view returns (bool) {
        return _sender == uniswapV2Pair;
    }

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

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

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":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_tax","type":"uint256"}],"name":"TaxChange","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address[]","name":"_bots","type":"address[]"}],"name":"addBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"buyFee1","type":"uint256"},{"internalType":"uint256","name":"buyFee2","type":"uint256"},{"internalType":"uint256","name":"sellFee1","type":"uint256"},{"internalType":"uint256","name":"sellFee2","type":"uint256"}],"name":"adjustFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"percentage","type":"uint256"}],"name":"changeMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percentage","type":"uint256"}],"name":"changeMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"notbot","type":"address"}],"name":"delBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"getAddressesCurrentFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCurrentFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getYourCurrentFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualsend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualswap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"onoff","type":"bool"}],"name":"setCooldownEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"rate","type":"uint256"}],"name":"setFeeRate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405267016345785d8a00006000196200001c9190620004c2565b6000196200002b919062000529565b60095560405180608001604052806000815260200160018152602001600081526020016001815250600b600082015181600001556020820151816001015560408201518160020155606082015181600301555050600b60010154600b6000015462000097919062000564565b600f55600b60030154600b60020154620000b2919062000564565b601055600a6011556001601255607860135560146015556000601960006101000a81548160ff0219169083151502179055506000601960016101000a81548160ff0219169083151502179055506000601960026101000a81548160ff02191690831515021790555067016345785d8a0000601a5567016345785d8a0000601b553480156200013f57600080fd5b506000620001526200045860201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35073dacfbb3c370f17cfc9f5216b327f4138c26c498e601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600954600260006200025c6200045860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600160066000620002b06200046060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160066000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620003e36200045860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef67016345785d8a00006040516200044a9190620005b0565b60405180910390a3620005cd565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620004cf8262000489565b9150620004dc8362000489565b925082620004ef57620004ee62000493565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620005368262000489565b9150620005438362000489565b92508282039050818111156200055e576200055d620004fa565b5b92915050565b6000620005718262000489565b91506200057e8362000489565b9250828201905080821115620005995762000598620004fa565b5b92915050565b620005aa8162000489565b82525050565b6000602082019050620005c760008301846200059f565b92915050565b613e9b80620005dd6000396000f3fe60806040526004361061016a5760003560e01c806370a08231116100d1578063a9059cbb1161008a578063b87f137a11610064578063b87f137a14610512578063c3c8cd801461053b578063c9567bf914610552578063dd62ed3e1461056957610171565b8063a9059cbb1461046d578063ad19b1f2146104aa578063afb4a3f5146104e757610171565b806370a082311461037e578063715018a6146103bb57806371908a03146103d2578063751039fc146104005780638da5cb5b1461041757806395d89b411461044257610171565b8063273123b711610123578063273123b714610298578063313ce567146102c157806345596e2e146102ec5780635932ead114610315578063677daa571461033e5780636fc3eaec1461036757610171565b806306fdde0314610176578063095ea7b3146101a157806317e1df5b146101de57806318160ddd1461020757806321bbcbb11461023257806323b872dd1461025b57610171565b3661017157005b600080fd5b34801561018257600080fd5b5061018b6105a6565b6040516101989190612ec9565b60405180910390f35b3480156101ad57600080fd5b506101c860048036038101906101c39190612f93565b6105e3565b6040516101d59190612fee565b60405180910390f35b3480156101ea57600080fd5b5061020560048036038101906102009190613009565b610601565b005b34801561021357600080fd5b5061021c6106f8565b604051610229919061307f565b60405180910390f35b34801561023e57600080fd5b50610259600480360381019061025491906131e2565b610708565b005b34801561026757600080fd5b50610282600480360381019061027d919061322b565b61096a565b60405161028f9190612fee565b60405180910390f35b3480156102a457600080fd5b506102bf60048036038101906102ba919061327e565b610a43565b005b3480156102cd57600080fd5b506102d6610b33565b6040516102e391906132c7565b60405180910390f35b3480156102f857600080fd5b50610313600480360381019061030e91906132e2565b610b3c565b005b34801561032157600080fd5b5061033c6004803603810190610337919061333b565b610be9565b005b34801561034a57600080fd5b50610365600480360381019061036091906132e2565b610c9b565b005b34801561037357600080fd5b5061037c610d74565b005b34801561038a57600080fd5b506103a560048036038101906103a0919061327e565b610e1a565b6040516103b2919061307f565b60405180910390f35b3480156103c757600080fd5b506103d0610e6b565b005b3480156103de57600080fd5b506103e7610fbe565b6040516103f79493929190613368565b60405180910390f35b34801561040c57600080fd5b50610415610fea565b005b34801561042357600080fd5b5061042c61109f565b60405161043991906133bc565b60405180910390f35b34801561044e57600080fd5b506104576110c8565b6040516104649190612ec9565b60405180910390f35b34801561047957600080fd5b50610494600480360381019061048f9190612f93565b611105565b6040516104a19190612fee565b60405180910390f35b3480156104b657600080fd5b506104d160048036038101906104cc919061327e565b611123565b6040516104de919061307f565b60405180910390f35b3480156104f357600080fd5b506104fc611242565b604051610509919061307f565b60405180910390f35b34801561051e57600080fd5b50610539600480360381019061053491906132e2565b611259565b005b34801561054757600080fd5b50610550611332565b005b34801561055e57600080fd5b506105676113e0565b005b34801561057557600080fd5b50610590600480360381019061058b91906133d7565b611952565b60405161059d919061307f565b60405180910390f35b60606040518060400160405280600481526020017f476f767400000000000000000000000000000000000000000000000000000000815250905090565b60006105f76105f06119d9565b84846119e1565b6001905092915050565b6106096119d9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610696576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161068d90613463565b60405180910390fd5b600f5483856106a591906134b2565b11156106b057600080fd5b60105481836106bf91906134b2565b11156106ca57600080fd5b83600b6000018190555082600b6001018190555081600b6002018190555080600b6003018190555050505050565b600067016345785d8a0000905090565b6107106119d9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461079d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161079490613463565b60405180910390fd5b60005b8151811015610966573073ffffffffffffffffffffffffffffffffffffffff168282815181106107d3576107d26134e6565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff16141580156108675750601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16828281518110610846576108456134e6565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614155b80156108db5750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168282815181106108ba576108b96134e6565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614155b15610953576001600760008484815181106108f9576108f86134e6565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b808061095e90613515565b9150506107a0565b5050565b6000610977848484611baa565b610a38846109836119d9565b610a3385604051806060016040528060288152602001613e3e60289139600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006109e96119d9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123359092919063ffffffff16565b6119e1565b600190509392505050565b610a4b6119d9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ad8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610acf90613463565b60405180910390fd5b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60006009905090565b610b446119d9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bd1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bc890613463565b60405180910390fd5b6031811115610bdf57600080fd5b8060158190555050565b610bf16119d9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c7e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c7590613463565b60405180910390fd5b80601960026101000a81548160ff02191690831515021790555050565b610ca36119d9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d2790613463565b60405180910390fd5b60008111610d3d57600080fd5b610d6b6064610d5d8367016345785d8a000061239990919063ffffffff16565b61241390919063ffffffff16565b601a8190555050565b610d7c6119d9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0090613463565b60405180910390fd5b6000479050610e178161245d565b50565b6000610e64600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124c9565b9050919050565b610e736119d9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f00576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ef790613463565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600080600080600b60000154600b60010154600b60020154600b60030154935093509350935090919293565b610ff26119d9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461107f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161107690613463565b60405180910390fd5b67016345785d8a0000601a8190555067016345785d8a0000601b81905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600481526020017f474f565400000000000000000000000000000000000000000000000000000000815250905090565b60006111196111126119d9565b8484611baa565b6001905092915050565b600080600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054036111a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161119d906135cf565b60405180910390fd5b6000601354600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054426111f691906135ef565b6112009190613652565b905060125460115461121291906135ef565b81111561122c5760125460115461122991906135ef565b90505b8060115461123a91906135ef565b915050919050565b600061125461124f6119d9565b611123565b905090565b6112616119d9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112e590613463565b60405180910390fd5b600081116112fb57600080fd5b611329606461131b8367016345785d8a000061239990919063ffffffff16565b61241390919063ffffffff16565b601b8190555050565b61133a6119d9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113be90613463565b60405180910390fd5b60006113d230610e1a565b90506113dd81612537565b50565b6113e86119d9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611475576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146c90613463565b60405180910390fd5b601760149054906101000a900460ff16156114c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114bc906136cf565b60405180910390fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061155430601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1667016345785d8a00006119e1565b8073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561159f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115c39190613704565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561162a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061164e9190613704565b6040518363ffffffff1660e01b815260040161166b929190613731565b6020604051808303816000875af115801561168a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116ae9190613704565b601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473061173730610e1a565b60008061174261109f565b426040518863ffffffff1660e01b81526004016117649695949392919061379f565b60606040518083038185885af1158015611782573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906117a79190613815565b5050506001601960016101000a81548160ff0219169083151502179055506001601960026101000a81548160ff02191690831515021790555061180f6064611801600367016345785d8a000061239990919063ffffffff16565b61241390919063ffffffff16565b601a819055506118446064611836600367016345785d8a000061239990919063ffffffff16565b61241390919063ffffffff16565b601b819055506001601760146101000a81548160ff02191690831515021790555043601881905550601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b815260040161190b929190613868565b6020604051808303816000875af115801561192a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061194e91906138a6565b5050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611a50576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a4790613945565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611abf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ab6906139d7565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611b9d919061307f565b60405180910390a3505050565b60008111611bed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611be490613a43565b60405180910390fd5b611bf561109f565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611c635750611c3361109f565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561232557611c71836127bc565b611db4576000600460003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414611d5f576000601354600460003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205442611d0c91906135ef565b611d169190613652565b9050601254601154611d2891906135ef565b811115611d4257601254601154611d3f91906135ef565b90505b80601154611d5091906135ef565b600b6003018190555050611d6c565b601254600b600301819055505b6000600460003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205050611e4d565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205403611e405742600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b601254600b600301819055505b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611ef85750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611f4e5750600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611f665750601960029054906101000a900460ff165b1561200957601a54811115611fb0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fa790613aaf565b60405180910390fd5b601b5481611fbd84610e1a565b611fc791906134b2565b1115612008576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fff90613b1b565b60405180910390fd5b5b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156120b15750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561210a5750601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b156121bd57600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156121b35750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6121bc57600080fd5b5b60006121c830610e1a565b905061221c606461220e601554612200601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610e1a565b61239990919063ffffffff16565b61241390919063ffffffff16565b811115612278576122756064612267601554612259601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610e1a565b61239990919063ffffffff16565b61241390919063ffffffff16565b90505b601960009054906101000a900460ff161580156122e35750601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b80156122fb5750601960019054906101000a900460ff165b156123235761230981612537565b60004790506000811115612321576123204761245d565b5b505b505b612330838383612816565b505050565b600083831115829061237d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123749190612ec9565b60405180910390fd5b506000838561238c91906135ef565b9050809150509392505050565b60008083036123ab576000905061240d565b600082846123b99190613b3b565b90508284826123c89190613652565b14612408576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123ff90613c07565b60405180910390fd5b809150505b92915050565b600061245583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612826565b905092915050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156124c5573d6000803e3d6000fd5b5050565b6000600954821115612510576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161250790613c99565b60405180910390fd5b600061251a612889565b905061252f818461241390919063ffffffff16565b915050919050565b6001601960006101000a81548160ff0219169083151502179055506000600267ffffffffffffffff81111561256f5761256e61309f565b5b60405190808252806020026020018201604052801561259d5781602001602082028036833780820191505090505b50905030816000815181106125b5576125b46134e6565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561265c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126809190613704565b81600181518110612694576126936134e6565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506126fb30601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846119e1565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430603c4261274b91906134b2565b6040518663ffffffff1660e01b815260040161276b959493929190613d77565b600060405180830381600087803b15801561278557600080fd5b505af1158015612799573d6000803e3d6000fd5b50505050506000601960006101000a81548160ff02191690831515021790555050565b6000601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b6128218383836128b4565b505050565b6000808311829061286d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128649190612ec9565b60405180910390fd5b506000838561287c9190613652565b9050809150509392505050565b6000806000612896612a7f565b915091506128ad818361241390919063ffffffff16565b9250505090565b6000806000806000806128c687612ade565b95509550955095509550955061292486600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b7b90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506129b985600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612bc590919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612a0581612c23565b612a0f8483612ce0565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051612a6c919061307f565b60405180910390a3505050505050505050565b60008060006009549050600067016345785d8a00009050612ab367016345785d8a000060095461241390919063ffffffff16565b821015612ad15760095467016345785d8a0000935093505050612ada565b81819350935050505b9091565b6000806000806000806000806000612afc612af76119d9565b6127bc565b612b1a57612b158a600b60020154600b60030154612d1a565b612b30565b612b2f8a600b60000154600b60010154612d1a565b5b9250925092506000612b40612889565b90506000806000612b538e878787612db0565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b6000612bbd83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612335565b905092915050565b6000808284612bd491906134b2565b905083811015612c19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c1090613e1d565b60405180910390fd5b8091505092915050565b6000612c2d612889565b90506000612c44828461239990919063ffffffff16565b9050612c9881600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612bc590919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b612cf582600954612b7b90919063ffffffff16565b600981905550612d1081600a54612bc590919063ffffffff16565b600a819055505050565b600080600080612d466064612d38888a61239990919063ffffffff16565b61241390919063ffffffff16565b90506000612d706064612d62888b61239990919063ffffffff16565b61241390919063ffffffff16565b90506000612d9982612d8b858c612b7b90919063ffffffff16565b612b7b90919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080612dc9858961239990919063ffffffff16565b90506000612de0868961239990919063ffffffff16565b90506000612df7878961239990919063ffffffff16565b90506000612e2082612e128587612b7b90919063ffffffff16565b612b7b90919063ffffffff16565b9050838184965096509650505050509450945094915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612e73578082015181840152602081019050612e58565b60008484015250505050565b6000601f19601f8301169050919050565b6000612e9b82612e39565b612ea58185612e44565b9350612eb5818560208601612e55565b612ebe81612e7f565b840191505092915050565b60006020820190508181036000830152612ee38184612e90565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612f2a82612eff565b9050919050565b612f3a81612f1f565b8114612f4557600080fd5b50565b600081359050612f5781612f31565b92915050565b6000819050919050565b612f7081612f5d565b8114612f7b57600080fd5b50565b600081359050612f8d81612f67565b92915050565b60008060408385031215612faa57612fa9612ef5565b5b6000612fb885828601612f48565b9250506020612fc985828601612f7e565b9150509250929050565b60008115159050919050565b612fe881612fd3565b82525050565b60006020820190506130036000830184612fdf565b92915050565b6000806000806080858703121561302357613022612ef5565b5b600061303187828801612f7e565b945050602061304287828801612f7e565b935050604061305387828801612f7e565b925050606061306487828801612f7e565b91505092959194509250565b61307981612f5d565b82525050565b60006020820190506130946000830184613070565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6130d782612e7f565b810181811067ffffffffffffffff821117156130f6576130f561309f565b5b80604052505050565b6000613109612eeb565b905061311582826130ce565b919050565b600067ffffffffffffffff8211156131355761313461309f565b5b602082029050602081019050919050565b600080fd5b600061315e6131598461311a565b6130ff565b9050808382526020820190506020840283018581111561318157613180613146565b5b835b818110156131aa57806131968882612f48565b845260208401935050602081019050613183565b5050509392505050565b600082601f8301126131c9576131c861309a565b5b81356131d984826020860161314b565b91505092915050565b6000602082840312156131f8576131f7612ef5565b5b600082013567ffffffffffffffff81111561321657613215612efa565b5b613222848285016131b4565b91505092915050565b60008060006060848603121561324457613243612ef5565b5b600061325286828701612f48565b935050602061326386828701612f48565b925050604061327486828701612f7e565b9150509250925092565b60006020828403121561329457613293612ef5565b5b60006132a284828501612f48565b91505092915050565b600060ff82169050919050565b6132c1816132ab565b82525050565b60006020820190506132dc60008301846132b8565b92915050565b6000602082840312156132f8576132f7612ef5565b5b600061330684828501612f7e565b91505092915050565b61331881612fd3565b811461332357600080fd5b50565b6000813590506133358161330f565b92915050565b60006020828403121561335157613350612ef5565b5b600061335f84828501613326565b91505092915050565b600060808201905061337d6000830187613070565b61338a6020830186613070565b6133976040830185613070565b6133a46060830184613070565b95945050505050565b6133b681612f1f565b82525050565b60006020820190506133d160008301846133ad565b92915050565b600080604083850312156133ee576133ed612ef5565b5b60006133fc85828601612f48565b925050602061340d85828601612f48565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061344d602083612e44565b915061345882613417565b602082019050919050565b6000602082019050818103600083015261347c81613440565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006134bd82612f5d565b91506134c883612f5d565b92508282019050808211156134e0576134df613483565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061352082612f5d565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361355257613551613483565b5b600182019050919050565b7f546869732061646472657373206469646e27742062757920616e7920746f6b6560008201527f6e73206f722069742068617320616c726561647920736f6c64207468656d2e00602082015250565b60006135b9603f83612e44565b91506135c48261355d565b604082019050919050565b600060208201905081810360008301526135e8816135ac565b9050919050565b60006135fa82612f5d565b915061360583612f5d565b925082820390508181111561361d5761361c613483565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061365d82612f5d565b915061366883612f5d565b92508261367857613677613623565b5b828204905092915050565b7f54726164696e6720616c7265616479206f70656e2e0000000000000000000000600082015250565b60006136b9601583612e44565b91506136c482613683565b602082019050919050565b600060208201905081810360008301526136e8816136ac565b9050919050565b6000815190506136fe81612f31565b92915050565b60006020828403121561371a57613719612ef5565b5b6000613728848285016136ef565b91505092915050565b600060408201905061374660008301856133ad565b61375360208301846133ad565b9392505050565b6000819050919050565b6000819050919050565b600061378961378461377f8461375a565b613764565b612f5d565b9050919050565b6137998161376e565b82525050565b600060c0820190506137b460008301896133ad565b6137c16020830188613070565b6137ce6040830187613790565b6137db6060830186613790565b6137e860808301856133ad565b6137f560a0830184613070565b979650505050505050565b60008151905061380f81612f67565b92915050565b60008060006060848603121561382e5761382d612ef5565b5b600061383c86828701613800565b935050602061384d86828701613800565b925050604061385e86828701613800565b9150509250925092565b600060408201905061387d60008301856133ad565b61388a6020830184613070565b9392505050565b6000815190506138a08161330f565b92915050565b6000602082840312156138bc576138bb612ef5565b5b60006138ca84828501613891565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061392f602483612e44565b915061393a826138d3565b604082019050919050565b6000602082019050818103600083015261395e81613922565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006139c1602283612e44565b91506139cc82613965565b604082019050919050565b600060208201905081810360008301526139f0816139b4565b9050919050565b7f416d6f756e742063616e6e6f74206265207a65726f2e00000000000000000000600082015250565b6000613a2d601683612e44565b9150613a38826139f7565b602082019050919050565b60006020820190508181036000830152613a5c81613a20565b9050919050565b7f4d6178207472616e73616374696f6e2065786365656465642e00000000000000600082015250565b6000613a99601983612e44565b9150613aa482613a63565b602082019050919050565b60006020820190508181036000830152613ac881613a8c565b9050919050565b7f4d61782077616c6c65742065786365656465642e000000000000000000000000600082015250565b6000613b05601483612e44565b9150613b1082613acf565b602082019050919050565b60006020820190508181036000830152613b3481613af8565b9050919050565b6000613b4682612f5d565b9150613b5183612f5d565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613b8a57613b89613483565b5b828202905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613bf1602183612e44565b9150613bfc82613b95565b604082019050919050565b60006020820190508181036000830152613c2081613be4565b9050919050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b6000613c83602a83612e44565b9150613c8e82613c27565b604082019050919050565b60006020820190508181036000830152613cb281613c76565b9050919050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613cee81612f1f565b82525050565b6000613d008383613ce5565b60208301905092915050565b6000602082019050919050565b6000613d2482613cb9565b613d2e8185613cc4565b9350613d3983613cd5565b8060005b83811015613d6a578151613d518882613cf4565b9750613d5c83613d0c565b925050600181019050613d3d565b5085935050505092915050565b600060a082019050613d8c6000830188613070565b613d996020830187613790565b8181036040830152613dab8186613d19565b9050613dba60608301856133ad565b613dc76080830184613070565b9695505050505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613e07601b83612e44565b9150613e1282613dd1565b602082019050919050565b60006020820190508181036000830152613e3681613dfa565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212203ac8846644a3e9aa2b50eb748c04ae3e72c39324397d62829a69a0187cb1be3464736f6c63430008100033

Deployed Bytecode

0x60806040526004361061016a5760003560e01c806370a08231116100d1578063a9059cbb1161008a578063b87f137a11610064578063b87f137a14610512578063c3c8cd801461053b578063c9567bf914610552578063dd62ed3e1461056957610171565b8063a9059cbb1461046d578063ad19b1f2146104aa578063afb4a3f5146104e757610171565b806370a082311461037e578063715018a6146103bb57806371908a03146103d2578063751039fc146104005780638da5cb5b1461041757806395d89b411461044257610171565b8063273123b711610123578063273123b714610298578063313ce567146102c157806345596e2e146102ec5780635932ead114610315578063677daa571461033e5780636fc3eaec1461036757610171565b806306fdde0314610176578063095ea7b3146101a157806317e1df5b146101de57806318160ddd1461020757806321bbcbb11461023257806323b872dd1461025b57610171565b3661017157005b600080fd5b34801561018257600080fd5b5061018b6105a6565b6040516101989190612ec9565b60405180910390f35b3480156101ad57600080fd5b506101c860048036038101906101c39190612f93565b6105e3565b6040516101d59190612fee565b60405180910390f35b3480156101ea57600080fd5b5061020560048036038101906102009190613009565b610601565b005b34801561021357600080fd5b5061021c6106f8565b604051610229919061307f565b60405180910390f35b34801561023e57600080fd5b50610259600480360381019061025491906131e2565b610708565b005b34801561026757600080fd5b50610282600480360381019061027d919061322b565b61096a565b60405161028f9190612fee565b60405180910390f35b3480156102a457600080fd5b506102bf60048036038101906102ba919061327e565b610a43565b005b3480156102cd57600080fd5b506102d6610b33565b6040516102e391906132c7565b60405180910390f35b3480156102f857600080fd5b50610313600480360381019061030e91906132e2565b610b3c565b005b34801561032157600080fd5b5061033c6004803603810190610337919061333b565b610be9565b005b34801561034a57600080fd5b50610365600480360381019061036091906132e2565b610c9b565b005b34801561037357600080fd5b5061037c610d74565b005b34801561038a57600080fd5b506103a560048036038101906103a0919061327e565b610e1a565b6040516103b2919061307f565b60405180910390f35b3480156103c757600080fd5b506103d0610e6b565b005b3480156103de57600080fd5b506103e7610fbe565b6040516103f79493929190613368565b60405180910390f35b34801561040c57600080fd5b50610415610fea565b005b34801561042357600080fd5b5061042c61109f565b60405161043991906133bc565b60405180910390f35b34801561044e57600080fd5b506104576110c8565b6040516104649190612ec9565b60405180910390f35b34801561047957600080fd5b50610494600480360381019061048f9190612f93565b611105565b6040516104a19190612fee565b60405180910390f35b3480156104b657600080fd5b506104d160048036038101906104cc919061327e565b611123565b6040516104de919061307f565b60405180910390f35b3480156104f357600080fd5b506104fc611242565b604051610509919061307f565b60405180910390f35b34801561051e57600080fd5b50610539600480360381019061053491906132e2565b611259565b005b34801561054757600080fd5b50610550611332565b005b34801561055e57600080fd5b506105676113e0565b005b34801561057557600080fd5b50610590600480360381019061058b91906133d7565b611952565b60405161059d919061307f565b60405180910390f35b60606040518060400160405280600481526020017f476f767400000000000000000000000000000000000000000000000000000000815250905090565b60006105f76105f06119d9565b84846119e1565b6001905092915050565b6106096119d9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610696576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161068d90613463565b60405180910390fd5b600f5483856106a591906134b2565b11156106b057600080fd5b60105481836106bf91906134b2565b11156106ca57600080fd5b83600b6000018190555082600b6001018190555081600b6002018190555080600b6003018190555050505050565b600067016345785d8a0000905090565b6107106119d9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461079d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161079490613463565b60405180910390fd5b60005b8151811015610966573073ffffffffffffffffffffffffffffffffffffffff168282815181106107d3576107d26134e6565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff16141580156108675750601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16828281518110610846576108456134e6565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614155b80156108db5750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168282815181106108ba576108b96134e6565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614155b15610953576001600760008484815181106108f9576108f86134e6565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b808061095e90613515565b9150506107a0565b5050565b6000610977848484611baa565b610a38846109836119d9565b610a3385604051806060016040528060288152602001613e3e60289139600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006109e96119d9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123359092919063ffffffff16565b6119e1565b600190509392505050565b610a4b6119d9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ad8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610acf90613463565b60405180910390fd5b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60006009905090565b610b446119d9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bd1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bc890613463565b60405180910390fd5b6031811115610bdf57600080fd5b8060158190555050565b610bf16119d9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c7e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c7590613463565b60405180910390fd5b80601960026101000a81548160ff02191690831515021790555050565b610ca36119d9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d2790613463565b60405180910390fd5b60008111610d3d57600080fd5b610d6b6064610d5d8367016345785d8a000061239990919063ffffffff16565b61241390919063ffffffff16565b601a8190555050565b610d7c6119d9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0090613463565b60405180910390fd5b6000479050610e178161245d565b50565b6000610e64600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124c9565b9050919050565b610e736119d9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f00576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ef790613463565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600080600080600b60000154600b60010154600b60020154600b60030154935093509350935090919293565b610ff26119d9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461107f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161107690613463565b60405180910390fd5b67016345785d8a0000601a8190555067016345785d8a0000601b81905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600481526020017f474f565400000000000000000000000000000000000000000000000000000000815250905090565b60006111196111126119d9565b8484611baa565b6001905092915050565b600080600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054036111a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161119d906135cf565b60405180910390fd5b6000601354600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054426111f691906135ef565b6112009190613652565b905060125460115461121291906135ef565b81111561122c5760125460115461122991906135ef565b90505b8060115461123a91906135ef565b915050919050565b600061125461124f6119d9565b611123565b905090565b6112616119d9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112e590613463565b60405180910390fd5b600081116112fb57600080fd5b611329606461131b8367016345785d8a000061239990919063ffffffff16565b61241390919063ffffffff16565b601b8190555050565b61133a6119d9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113be90613463565b60405180910390fd5b60006113d230610e1a565b90506113dd81612537565b50565b6113e86119d9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611475576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146c90613463565b60405180910390fd5b601760149054906101000a900460ff16156114c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114bc906136cf565b60405180910390fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061155430601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1667016345785d8a00006119e1565b8073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561159f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115c39190613704565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561162a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061164e9190613704565b6040518363ffffffff1660e01b815260040161166b929190613731565b6020604051808303816000875af115801561168a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116ae9190613704565b601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473061173730610e1a565b60008061174261109f565b426040518863ffffffff1660e01b81526004016117649695949392919061379f565b60606040518083038185885af1158015611782573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906117a79190613815565b5050506001601960016101000a81548160ff0219169083151502179055506001601960026101000a81548160ff02191690831515021790555061180f6064611801600367016345785d8a000061239990919063ffffffff16565b61241390919063ffffffff16565b601a819055506118446064611836600367016345785d8a000061239990919063ffffffff16565b61241390919063ffffffff16565b601b819055506001601760146101000a81548160ff02191690831515021790555043601881905550601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b815260040161190b929190613868565b6020604051808303816000875af115801561192a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061194e91906138a6565b5050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611a50576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a4790613945565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611abf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ab6906139d7565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611b9d919061307f565b60405180910390a3505050565b60008111611bed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611be490613a43565b60405180910390fd5b611bf561109f565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611c635750611c3361109f565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561232557611c71836127bc565b611db4576000600460003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414611d5f576000601354600460003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205442611d0c91906135ef565b611d169190613652565b9050601254601154611d2891906135ef565b811115611d4257601254601154611d3f91906135ef565b90505b80601154611d5091906135ef565b600b6003018190555050611d6c565b601254600b600301819055505b6000600460003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205050611e4d565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205403611e405742600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b601254600b600301819055505b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611ef85750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611f4e5750600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611f665750601960029054906101000a900460ff165b1561200957601a54811115611fb0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fa790613aaf565b60405180910390fd5b601b5481611fbd84610e1a565b611fc791906134b2565b1115612008576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fff90613b1b565b60405180910390fd5b5b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156120b15750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561210a5750601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b156121bd57600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156121b35750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6121bc57600080fd5b5b60006121c830610e1a565b905061221c606461220e601554612200601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610e1a565b61239990919063ffffffff16565b61241390919063ffffffff16565b811115612278576122756064612267601554612259601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610e1a565b61239990919063ffffffff16565b61241390919063ffffffff16565b90505b601960009054906101000a900460ff161580156122e35750601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b80156122fb5750601960019054906101000a900460ff165b156123235761230981612537565b60004790506000811115612321576123204761245d565b5b505b505b612330838383612816565b505050565b600083831115829061237d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123749190612ec9565b60405180910390fd5b506000838561238c91906135ef565b9050809150509392505050565b60008083036123ab576000905061240d565b600082846123b99190613b3b565b90508284826123c89190613652565b14612408576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123ff90613c07565b60405180910390fd5b809150505b92915050565b600061245583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612826565b905092915050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156124c5573d6000803e3d6000fd5b5050565b6000600954821115612510576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161250790613c99565b60405180910390fd5b600061251a612889565b905061252f818461241390919063ffffffff16565b915050919050565b6001601960006101000a81548160ff0219169083151502179055506000600267ffffffffffffffff81111561256f5761256e61309f565b5b60405190808252806020026020018201604052801561259d5781602001602082028036833780820191505090505b50905030816000815181106125b5576125b46134e6565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561265c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126809190613704565b81600181518110612694576126936134e6565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506126fb30601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846119e1565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430603c4261274b91906134b2565b6040518663ffffffff1660e01b815260040161276b959493929190613d77565b600060405180830381600087803b15801561278557600080fd5b505af1158015612799573d6000803e3d6000fd5b50505050506000601960006101000a81548160ff02191690831515021790555050565b6000601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b6128218383836128b4565b505050565b6000808311829061286d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128649190612ec9565b60405180910390fd5b506000838561287c9190613652565b9050809150509392505050565b6000806000612896612a7f565b915091506128ad818361241390919063ffffffff16565b9250505090565b6000806000806000806128c687612ade565b95509550955095509550955061292486600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b7b90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506129b985600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612bc590919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612a0581612c23565b612a0f8483612ce0565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051612a6c919061307f565b60405180910390a3505050505050505050565b60008060006009549050600067016345785d8a00009050612ab367016345785d8a000060095461241390919063ffffffff16565b821015612ad15760095467016345785d8a0000935093505050612ada565b81819350935050505b9091565b6000806000806000806000806000612afc612af76119d9565b6127bc565b612b1a57612b158a600b60020154600b60030154612d1a565b612b30565b612b2f8a600b60000154600b60010154612d1a565b5b9250925092506000612b40612889565b90506000806000612b538e878787612db0565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b6000612bbd83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612335565b905092915050565b6000808284612bd491906134b2565b905083811015612c19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c1090613e1d565b60405180910390fd5b8091505092915050565b6000612c2d612889565b90506000612c44828461239990919063ffffffff16565b9050612c9881600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612bc590919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b612cf582600954612b7b90919063ffffffff16565b600981905550612d1081600a54612bc590919063ffffffff16565b600a819055505050565b600080600080612d466064612d38888a61239990919063ffffffff16565b61241390919063ffffffff16565b90506000612d706064612d62888b61239990919063ffffffff16565b61241390919063ffffffff16565b90506000612d9982612d8b858c612b7b90919063ffffffff16565b612b7b90919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080612dc9858961239990919063ffffffff16565b90506000612de0868961239990919063ffffffff16565b90506000612df7878961239990919063ffffffff16565b90506000612e2082612e128587612b7b90919063ffffffff16565b612b7b90919063ffffffff16565b9050838184965096509650505050509450945094915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612e73578082015181840152602081019050612e58565b60008484015250505050565b6000601f19601f8301169050919050565b6000612e9b82612e39565b612ea58185612e44565b9350612eb5818560208601612e55565b612ebe81612e7f565b840191505092915050565b60006020820190508181036000830152612ee38184612e90565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612f2a82612eff565b9050919050565b612f3a81612f1f565b8114612f4557600080fd5b50565b600081359050612f5781612f31565b92915050565b6000819050919050565b612f7081612f5d565b8114612f7b57600080fd5b50565b600081359050612f8d81612f67565b92915050565b60008060408385031215612faa57612fa9612ef5565b5b6000612fb885828601612f48565b9250506020612fc985828601612f7e565b9150509250929050565b60008115159050919050565b612fe881612fd3565b82525050565b60006020820190506130036000830184612fdf565b92915050565b6000806000806080858703121561302357613022612ef5565b5b600061303187828801612f7e565b945050602061304287828801612f7e565b935050604061305387828801612f7e565b925050606061306487828801612f7e565b91505092959194509250565b61307981612f5d565b82525050565b60006020820190506130946000830184613070565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6130d782612e7f565b810181811067ffffffffffffffff821117156130f6576130f561309f565b5b80604052505050565b6000613109612eeb565b905061311582826130ce565b919050565b600067ffffffffffffffff8211156131355761313461309f565b5b602082029050602081019050919050565b600080fd5b600061315e6131598461311a565b6130ff565b9050808382526020820190506020840283018581111561318157613180613146565b5b835b818110156131aa57806131968882612f48565b845260208401935050602081019050613183565b5050509392505050565b600082601f8301126131c9576131c861309a565b5b81356131d984826020860161314b565b91505092915050565b6000602082840312156131f8576131f7612ef5565b5b600082013567ffffffffffffffff81111561321657613215612efa565b5b613222848285016131b4565b91505092915050565b60008060006060848603121561324457613243612ef5565b5b600061325286828701612f48565b935050602061326386828701612f48565b925050604061327486828701612f7e565b9150509250925092565b60006020828403121561329457613293612ef5565b5b60006132a284828501612f48565b91505092915050565b600060ff82169050919050565b6132c1816132ab565b82525050565b60006020820190506132dc60008301846132b8565b92915050565b6000602082840312156132f8576132f7612ef5565b5b600061330684828501612f7e565b91505092915050565b61331881612fd3565b811461332357600080fd5b50565b6000813590506133358161330f565b92915050565b60006020828403121561335157613350612ef5565b5b600061335f84828501613326565b91505092915050565b600060808201905061337d6000830187613070565b61338a6020830186613070565b6133976040830185613070565b6133a46060830184613070565b95945050505050565b6133b681612f1f565b82525050565b60006020820190506133d160008301846133ad565b92915050565b600080604083850312156133ee576133ed612ef5565b5b60006133fc85828601612f48565b925050602061340d85828601612f48565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061344d602083612e44565b915061345882613417565b602082019050919050565b6000602082019050818103600083015261347c81613440565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006134bd82612f5d565b91506134c883612f5d565b92508282019050808211156134e0576134df613483565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061352082612f5d565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361355257613551613483565b5b600182019050919050565b7f546869732061646472657373206469646e27742062757920616e7920746f6b6560008201527f6e73206f722069742068617320616c726561647920736f6c64207468656d2e00602082015250565b60006135b9603f83612e44565b91506135c48261355d565b604082019050919050565b600060208201905081810360008301526135e8816135ac565b9050919050565b60006135fa82612f5d565b915061360583612f5d565b925082820390508181111561361d5761361c613483565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061365d82612f5d565b915061366883612f5d565b92508261367857613677613623565b5b828204905092915050565b7f54726164696e6720616c7265616479206f70656e2e0000000000000000000000600082015250565b60006136b9601583612e44565b91506136c482613683565b602082019050919050565b600060208201905081810360008301526136e8816136ac565b9050919050565b6000815190506136fe81612f31565b92915050565b60006020828403121561371a57613719612ef5565b5b6000613728848285016136ef565b91505092915050565b600060408201905061374660008301856133ad565b61375360208301846133ad565b9392505050565b6000819050919050565b6000819050919050565b600061378961378461377f8461375a565b613764565b612f5d565b9050919050565b6137998161376e565b82525050565b600060c0820190506137b460008301896133ad565b6137c16020830188613070565b6137ce6040830187613790565b6137db6060830186613790565b6137e860808301856133ad565b6137f560a0830184613070565b979650505050505050565b60008151905061380f81612f67565b92915050565b60008060006060848603121561382e5761382d612ef5565b5b600061383c86828701613800565b935050602061384d86828701613800565b925050604061385e86828701613800565b9150509250925092565b600060408201905061387d60008301856133ad565b61388a6020830184613070565b9392505050565b6000815190506138a08161330f565b92915050565b6000602082840312156138bc576138bb612ef5565b5b60006138ca84828501613891565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061392f602483612e44565b915061393a826138d3565b604082019050919050565b6000602082019050818103600083015261395e81613922565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006139c1602283612e44565b91506139cc82613965565b604082019050919050565b600060208201905081810360008301526139f0816139b4565b9050919050565b7f416d6f756e742063616e6e6f74206265207a65726f2e00000000000000000000600082015250565b6000613a2d601683612e44565b9150613a38826139f7565b602082019050919050565b60006020820190508181036000830152613a5c81613a20565b9050919050565b7f4d6178207472616e73616374696f6e2065786365656465642e00000000000000600082015250565b6000613a99601983612e44565b9150613aa482613a63565b602082019050919050565b60006020820190508181036000830152613ac881613a8c565b9050919050565b7f4d61782077616c6c65742065786365656465642e000000000000000000000000600082015250565b6000613b05601483612e44565b9150613b1082613acf565b602082019050919050565b60006020820190508181036000830152613b3481613af8565b9050919050565b6000613b4682612f5d565b9150613b5183612f5d565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613b8a57613b89613483565b5b828202905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613bf1602183612e44565b9150613bfc82613b95565b604082019050919050565b60006020820190508181036000830152613c2081613be4565b9050919050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b6000613c83602a83612e44565b9150613c8e82613c27565b604082019050919050565b60006020820190508181036000830152613cb281613c76565b9050919050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613cee81612f1f565b82525050565b6000613d008383613ce5565b60208301905092915050565b6000602082019050919050565b6000613d2482613cb9565b613d2e8185613cc4565b9350613d3983613cd5565b8060005b83811015613d6a578151613d518882613cf4565b9750613d5c83613d0c565b925050600181019050613d3d565b5085935050505092915050565b600060a082019050613d8c6000830188613070565b613d996020830187613790565b8181036040830152613dab8186613d19565b9050613dba60608301856133ad565b613dc76080830184613070565b9695505050505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613e07601b83612e44565b9150613e1282613dd1565b602082019050919050565b60006020820190508181036000830152613e3681613dfa565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212203ac8846644a3e9aa2b50eb748c04ae3e72c39324397d62829a69a0187cb1be3464736f6c63430008100033

Deployed Bytecode Sourcemap

3766:13433:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6031:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6883:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11604:382;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6308:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13497:296;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7052:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13805:88;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6217:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12340:117;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7373:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11994:163;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15141:153;;;;;;;;;;;;;:::i;:::-;;6411:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2845:148;;;;;;;;;;;;;:::i;:::-;;10829:175;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;10703:118;;;;;;;;;;;;;:::i;:::-;;2631:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6122:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6557:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11143:453;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11012:123;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12165:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14975:154;;;;;;;;;;;;;:::i;:::-;;12579:906;;;;;;;;;;;;;:::i;:::-;;6732:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6031:83;6068:13;6101:5;;;;;;;;;;;;;;;;;6094:12;;6031:83;:::o;6883:161::-;6958:4;6975:39;6984:12;:10;:12::i;:::-;6998:7;7007:6;6975:8;:39::i;:::-;7032:4;7025:11;;6883:161;;;;:::o;11604:382::-;2768:12;:10;:12::i;:::-;2758:22;;:6;;;;;;;;;;:22;;;2750:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11753:18:::1;;11742:7;11732;:17;;;;:::i;:::-;:39;;11724:48;;;::::0;::::1;;11814:19;;11802:8;11791;:19;;;;:::i;:::-;:42;;11783:51;;;::::0;::::1;;11862:7;11845:6;:14;;:24;;;;11897:7;11880:6;:14;;:24;;;;11933:8;11915:6;:15;;:26;;;;11970:8;11952:6;:15;;:26;;;;11604:382:::0;;;;:::o;6308:95::-;6361:7;4314:19;6381:14;;6308:95;:::o;13497:296::-;2768:12;:10;:12::i;:::-;2758:22;;:6;;;;;;;;;;:22;;;2750:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13570:6:::1;13565:221;13586:5;:12;13582:1;:16;13565:221;;;13644:4;13624:25;;:5;13630:1;13624:8;;;;;;;;:::i;:::-;;;;;;;;:25;;;;:54;;;;;13665:13;;;;;;;;;;;13653:25;;:5;13659:1;13653:8;;;;;;;;:::i;:::-;;;;;;;;:25;;;;13624:54;:94;;;;;13702:15;;;;;;;;;;;13682:36;;:5;13688:1;13682:8;;;;;;;;:::i;:::-;;;;;;;;:36;;;;13624:94;13620:155;;;13755:4;13738;:14;13743:5;13749:1;13743:8;;;;;;;;:::i;:::-;;;;;;;;13738:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;13620:155;13600:3;;;;;:::i;:::-;;;;13565:221;;;;13497:296:::0;:::o;7052:313::-;7150:4;7167:36;7177:6;7185:9;7196:6;7167:9;:36::i;:::-;7214:121;7223:6;7231:12;:10;:12::i;:::-;7245:89;7283:6;7245:89;;;;;;;;;;;;;;;;;:11;:19;7257:6;7245:19;;;;;;;;;;;;;;;:33;7265:12;:10;:12::i;:::-;7245:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;7214:8;:121::i;:::-;7353:4;7346:11;;7052:313;;;;;:::o;13805:88::-;2768:12;:10;:12::i;:::-;2758:22;;:6;;;;;;;;;;:22;;;2750:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13880:5:::1;13865:4;:12;13870:6;13865:12;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;13805:88:::0;:::o;6217:83::-;6258:5;5118:1;6276:16;;6217:83;:::o;12340:117::-;2768:12;:10;:12::i;:::-;2758:22;;:6;;;;;;;;;;:22;;;2750:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12420:2:::1;12414:4;:8;;12406:17;;;::::0;::::1;;12445:4;12434:8;:15;;;;12340:117:::0;:::o;7373:103::-;2768:12;:10;:12::i;:::-;2758:22;;:6;;;;;;;;;;:22;;;2750:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;7463:5:::1;7445:15;;:23;;;;;;;;;;;;;;;;;;7373:103:::0;:::o;11994:163::-;2768:12;:10;:12::i;:::-;2758:22;;:6;;;;;;;;;;:22;;;2750:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12089:1:::1;12078:10;:12;12070:21;;;::::0;::::1;;12117:32;12145:3;12117:23;12129:10;4314:19;12117:11;;:23;;;;:::i;:::-;:27;;:32;;;;:::i;:::-;12102:12;:47;;;;11994:163:::0;:::o;15141:153::-;2768:12;:10;:12::i;:::-;2758:22;;:6;;;;;;;;;;:22;;;2750:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15193:26:::1;15222:21;15193:50;;15254:32;15267:18;15254:12;:32::i;:::-;15182:112;15141:153::o:0;6411:138::-;6477:7;6504:37;6524:7;:16;6532:7;6524:16;;;;;;;;;;;;;;;;6504:19;:37::i;:::-;6497:44;;6411:138;;;:::o;2845:148::-;2768:12;:10;:12::i;:::-;2758:22;;:6;;;;;;;;;;:22;;;2750:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2952:1:::1;2915:40;;2936:6;::::0;::::1;;;;;;;;2915:40;;;;;;;;;;;;2983:1;2966:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;2845:148::o:0;10829:175::-;10876:7;10885;10894;10903;10931:6;:14;;;10947:6;:14;;;10963:6;:15;;;10980:6;:15;;;10923:73;;;;;;;;10829:175;;;;:::o;10703:118::-;2768:12;:10;:12::i;:::-;2758:22;;:6;;;;;;;;;;:22;;;2750:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4314:19:::1;10756:12;:22;;;;4314:19;10789:14;:24;;;;10703:118::o:0;2631:79::-;2669:7;2696:6;;;;;;;;;;;2689:13;;2631:79;:::o;6122:87::-;6161:13;6194:7;;;;;;;;;;;;;;;;;6187:14;;6122:87;:::o;6557:167::-;6635:4;6652:42;6662:12;:10;:12::i;:::-;6676:9;6687:6;6652:9;:42::i;:::-;6712:4;6705:11;;6557:167;;;;:::o;11143:453::-;11211:7;11256:1;11239:7;:13;11247:4;11239:13;;;;;;;;;;;;;;;;:18;11231:94;;;;;;;;;;;;:::i;:::-;;;;;;;;;11336:20;11395:21;;11378:7;:13;11386:4;11378:13;;;;;;;;;;;;;;;;11360:15;:31;;;;:::i;:::-;11359:57;;;;:::i;:::-;11336:80;;11461:12;;11446;;:27;;;;:::i;:::-;11431:12;:42;11427:117;;;11520:12;;11505;;:27;;;;:::i;:::-;11490:42;;11427:117;11576:12;11561;;:27;;;;:::i;:::-;11554:34;;;11143:453;;;:::o;11012:123::-;11063:7;11090:37;11114:12;:10;:12::i;:::-;11090:23;:37::i;:::-;11083:44;;11012:123;:::o;12165:167::-;2768:12;:10;:12::i;:::-;2758:22;;:6;;;;;;;;;;:22;;;2750:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12262:1:::1;12251:10;:12;12243:21;;;::::0;::::1;;12292:32;12320:3;12292:23;12304:10;4314:19;12292:11;;:23;;;;:::i;:::-;:27;;:32;;;;:::i;:::-;12275:14;:49;;;;12165:167:::0;:::o;14975:154::-;2768:12;:10;:12::i;:::-;2758:22;;:6;;;;;;;;;;:22;;;2750:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15027:23:::1;15053:24;15071:4;15053:9;:24::i;:::-;15027:50;;15088:33;15105:15;15088:16;:33::i;:::-;15016:113;14975:154::o:0;12579:906::-;2768:12;:10;:12::i;:::-;2758:22;;:6;;;;;;;;;;:22;;;2750:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12643:11:::1;;;;;;;;;;;12642:12;12634:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;12691:35;12748:42;12691:100;;12820:16;12802:15;;:34;;;;;;;;;;;;;;;;;;12847:58;12864:4;12879:15;;;;;;;;;;;4314:19;12847:8;:58::i;:::-;12950:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12932:56;;;12997:4;13004:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12932:96;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12916:13;;:112;;;;;;;;;;;;;;;;;;13039:15;;;;;;;;;;;:31;;;13078:21;13109:4;13115:24;13133:4;13115:9;:24::i;:::-;13140:1;13142::::0;13144:7:::1;:5;:7::i;:::-;13152:15;13039:129;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;13193:4;13179:11;;:18;;;;;;;;;;;;;;;;;;13226:4;13208:15;;:22;;;;;;;;;;;;;;;;;;13256:23;13275:3;13256:14;13268:1;4314:19;13256:11;;:14;;;;:::i;:::-;:18;;:23;;;;:::i;:::-;13241:12;:38;;;;13307:23;13326:3;13307:14;13319:1;4314:19;13307:11;;:14;;;;:::i;:::-;:18;;:23;;;;:::i;:::-;13290:14;:40;;;;13355:4;13341:11;;:18;;;;;;;;;;;;;;;;;;13383:12;13370:10;:25;;;;13413:13;;;;;;;;;;;13406:29;;;13444:15;;;;;;;;;;;13462:14;13406:71;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12623:862;12579:906::o:0;6732:143::-;6813:7;6840:11;:18;6852:5;6840:18;;;;;;;;;;;;;;;:27;6859:7;6840:27;;;;;;;;;;;;;;;;6833:34;;6732:143;;;;:::o;349:98::-;402:7;429:10;422:17;;349:98;:::o;7746:335::-;7856:1;7839:19;;:5;:19;;;7831:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7937:1;7918:21;;:7;:21;;;7910:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8019:6;7989:11;:18;8001:5;7989:18;;;;;;;;;;;;;;;:27;8008:7;7989:27;;;;;;;;;;;;;;;:36;;;;8057:7;8041:32;;8050:5;8041:32;;;8066:6;8041:32;;;;;;:::i;:::-;;;;;;;;7746:335;;;:::o;8089:2110::-;8186:1;8177:6;:10;8169:45;;;;;;;;;;;;:::i;:::-;;;;;;;;;8239:7;:5;:7::i;:::-;8231:15;;:4;:15;;;;:32;;;;;8256:7;:5;:7::i;:::-;8250:13;;:2;:13;;;;8231:32;8227:1922;;;8287:12;8294:4;8287:6;:12::i;:::-;8282:745;;8346:1;8324:7;:18;8332:9;8324:18;;;;;;;;;;;;;;;;:23;8320:467;;8372:20;8436:21;;8414:7;:18;8422:9;8414:18;;;;;;;;;;;;;;;;8396:15;:36;;;;:::i;:::-;8395:62;;;;:::i;:::-;8372:85;;8514:12;;8499;;:27;;;;:::i;:::-;8484:12;:42;8480:141;;;8585:12;;8570;;:27;;;;:::i;:::-;8555:42;;8480:141;8676:12;8661;;:27;;;;:::i;:::-;8643:6;:15;;:45;;;;8349:359;8320:467;;;8755:12;;8737:6;:15;;:30;;;;8320:467;8827:1;8805:7;:18;8813:9;8805:18;;;;;;;;;;;;;;;;:23;8282:745;;;8888:1;8873:7;:11;8881:2;8873:11;;;;;;;;;;;;;;;;:16;8869:94;;8928:15;8914:7;:11;8922:2;8914:11;;;;;;;;;;;;;;;:29;;;;8869:94;8999:12;;8981:6;:15;;:30;;;;8282:745;9055:13;;;;;;;;;;;9047:21;;:4;:21;;;:55;;;;;9086:15;;;;;;;;;;;9072:30;;:2;:30;;;;9047:55;:83;;;;;9108:18;:22;9127:2;9108:22;;;;;;;;;;;;;;;;;;;;;;;;;9106:24;9047:83;:102;;;;;9134:15;;;;;;;;;;;9047:102;9043:319;;;9212:12;;9202:6;:22;;9194:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;9307:14;;9297:6;9281:13;9291:2;9281:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;9273:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;9043:319;9398:15;;;;;;;;;;;9382:32;;:4;:32;;;;:62;;;;;9420:18;:24;9439:4;9420:24;;;;;;;;;;;;;;;;;;;;;;;;;9418:26;9382:62;:85;;;;;9454:13;;;;;;;;;;;9448:19;;:2;:19;;;9382:85;9378:158;;;9496:4;:10;9501:4;9496:10;;;;;;;;;;;;;;;;;;;;;;;;;9495:11;:24;;;;;9511:4;:8;9516:2;9511:8;;;;;;;;;;;;;;;;;;;;;;;;;9510:9;9495:24;9487:33;;;;;;9378:158;9552:28;9583:24;9601:4;9583:9;:24::i;:::-;9552:55;;9648:47;9691:3;9648:38;9677:8;;9648:24;9658:13;;;;;;;;;;;9648:9;:24::i;:::-;:28;;:38;;;;:::i;:::-;:42;;:47;;;;:::i;:::-;9625:20;:70;9622:180;;;9739:47;9782:3;9739:38;9768:8;;9739:24;9749:13;;;;;;;;;;;9739:9;:24::i;:::-;:28;;:38;;;;:::i;:::-;:42;;:47;;;;:::i;:::-;9716:70;;9622:180;9823:6;;;;;;;;;;;9822:7;:32;;;;;9841:13;;;;;;;;;;;9833:21;;:4;:21;;;;9822:32;:47;;;;;9858:11;;;;;;;;;;;9822:47;9818:320;;;9892:38;9909:20;9892:16;:38::i;:::-;9949:26;9978:21;9949:50;;10042:1;10021:18;:22;10018:105;;;10068:35;10081:21;10068:12;:35::i;:::-;10018:105;9871:267;9818:320;8265:1884;8227:1922;10161:30;10176:4;10181:2;10184:6;10161:14;:30::i;:::-;8089:2110;;;:::o;1486:190::-;1572:7;1605:1;1600;:6;;1608:12;1592:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1632:9;1648:1;1644;:5;;;;:::i;:::-;1632:17;;1667:1;1660:8;;;1486:190;;;;;:::o;1684:246::-;1742:7;1771:1;1766;:6;1762:47;;1796:1;1789:8;;;;1762:47;1819:9;1835:1;1831;:5;;;;:::i;:::-;1819:17;;1864:1;1859;1855;:5;;;;:::i;:::-;:10;1847:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1921:1;1914:8;;;1684:246;;;;;:::o;1938:132::-;1996:7;2023:39;2027:1;2030;2023:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2016:46;;1938:132;;;;:::o;12473:96::-;12530:14;;;;;;;;;;;:23;;:31;12554:6;12530:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12473:96;:::o;7484:254::-;7551:7;7590;;7579;:18;;7571:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;7655:19;7678:10;:8;:10::i;:::-;7655:33;;7706:24;7718:11;7706:7;:11;;:24;;;;:::i;:::-;7699:31;;;7484:254;;;:::o;10207:488::-;5615:4;5606:6;;:13;;;;;;;;;;;;;;;;;;10285:21:::1;10323:1;10309:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10285:40;;10354:4;10336;10341:1;10336:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;10380:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10370:4;10375:1;10370:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;10413:62;10430:4;10445:15;;;;;;;;;;;10463:11;10413:8;:62::i;:::-;10486:15;;;;;;;;;;;:66;;;10567:11;10593:1;10609:4;10636;10674:2;10656:15;:20;;;;:::i;:::-;10486:201;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;10274:421;5651:5:::0;5642:6;;:14;;;;;;;;;;;;;;;;;;10207:488;:::o;16647:111::-;16702:4;16737:13;;;;;;;;;;;16726:24;;:7;:24;;;16719:31;;16647:111;;;:::o;13909:146::-;14003:44;14021:6;14029:9;14040:6;14003:17;:44::i;:::-;13909:146;;;:::o;2078:189::-;2164:7;2196:1;2192;:5;2199:12;2184:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2223:9;2239:1;2235;:5;;;;:::i;:::-;2223:17;;2258:1;2251:8;;;2078:189;;;;;:::o;16763:163::-;16804:7;16825:15;16842;16861:19;:17;:19::i;:::-;16824:56;;;;16898:20;16910:7;16898;:11;;:20;;;;:::i;:::-;16891:27;;;;16763:163;:::o;14063:488::-;14162:15;14179:23;14204:12;14218:23;14243:12;14257:13;14274:19;14285:7;14274:10;:19::i;:::-;14161:132;;;;;;;;;;;;14322:28;14342:7;14322;:15;14330:6;14322:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;14304:7;:15;14312:6;14304:15;;;;;;;;;;;;;;;:46;;;;14382:39;14405:15;14382:7;:18;14390:9;14382:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;14361:7;:18;14369:9;14361:18;;;;;;;;;;;;;;;:60;;;;14433:16;14443:5;14433:9;:16::i;:::-;14460:23;14472:4;14478;14460:11;:23::i;:::-;14516:9;14499:44;;14508:6;14499:44;;;14527:15;14499:44;;;;;;:::i;:::-;;;;;;;;14150:401;;;;;;14063:488;;;:::o;16934:262::-;16984:7;16993;17013:15;17031:7;;17013:25;;17049:15;4314:19;17049:25;;17105:20;4314:19;17105:7;;:11;;:20;;;;:::i;:::-;17095:7;:30;17091:61;;;17135:7;;4314:19;17127:25;;;;;;;;17091:61;17171:7;17180;17163:25;;;;;;16934:262;;;:::o;15302:561::-;15361:7;15370;15379;15388;15397;15406;15427:23;15452:12;15466:13;15483:20;15490:12;:10;:12::i;:::-;15483:6;:20::i;:::-;:132;;15561:54;15573:7;15582:6;:15;;;15599:6;:15;;;15561:11;:54::i;:::-;15483:132;;;15506:52;15518:7;15527:6;:14;;;15543:6;:14;;;15506:11;:52::i;:::-;15483:132;15426:189;;;;;;15626:19;15649:10;:8;:10::i;:::-;15626:33;;15671:15;15688:23;15713:12;15729:46;15741:7;15750:4;15756:5;15763:11;15729;:46::i;:::-;15670:105;;;;;;15794:7;15803:15;15820:4;15826:15;15843:4;15849:5;15786:69;;;;;;;;;;;;;;;;;;;15302:561;;;;;;;:::o;1342:136::-;1400:7;1427:43;1431:1;1434;1427:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1420:50;;1342:136;;;;:::o;1155:179::-;1213:7;1233:9;1249:1;1245;:5;;;;:::i;:::-;1233:17;;1274:1;1269;:6;;1261:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1325:1;1318:8;;;1155:179;;;;:::o;14559:212::-;14612:19;14635:10;:8;:10::i;:::-;14612:33;;14656:13;14672:22;14682:11;14672:5;:9;;:22;;;;:::i;:::-;14656:38;;14730:33;14757:5;14730:7;:22;14746:4;14730:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;14705:7;:22;14721:4;14705:22;;;;;;;;;;;;;;;:58;;;;14601:170;;14559:212;:::o;14779:147::-;14857:17;14869:4;14857:7;;:11;;:17;;;;:::i;:::-;14847:7;:27;;;;14898:20;14913:4;14898:10;;:14;;:20;;;;:::i;:::-;14885:10;:33;;;;14779:147;;:::o;15871:351::-;15964:7;15973;15982;16002:12;16017:28;16041:3;16017:19;16029:6;16017:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;16002:43;;16056:13;16072:29;16097:3;16072:20;16084:7;16072;:11;;:20;;;;:::i;:::-;:24;;:29;;;;:::i;:::-;16056:45;;16112:23;16138:28;16160:5;16138:17;16150:4;16138:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;16112:54;;16185:15;16202:4;16208:5;16177:37;;;;;;;;;15871:351;;;;;;;:::o;16230:409::-;16340:7;16349;16358;16378:15;16396:24;16408:11;16396:7;:11;;:24;;;;:::i;:::-;16378:42;;16431:12;16446:21;16455:11;16446:4;:8;;:21;;;;:::i;:::-;16431:36;;16478:13;16494:22;16504:11;16494:5;:9;;:22;;;;:::i;:::-;16478:38;;16527:23;16553:28;16575:5;16553:17;16565:4;16553:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;16527:54;;16600:7;16609:15;16626:4;16592:39;;;;;;;;;;16230:409;;;;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1349:75::-;1382:6;1415:2;1409:9;1399:19;;1349:75;:::o;1430:117::-;1539:1;1536;1529:12;1553:117;1662:1;1659;1652:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:765::-;3532:6;3540;3548;3556;3605:3;3593:9;3584:7;3580:23;3576:33;3573:120;;;3612:79;;:::i;:::-;3573:120;3732:1;3757:53;3802:7;3793:6;3782:9;3778:22;3757:53;:::i;:::-;3747:63;;3703:117;3859:2;3885:53;3930:7;3921:6;3910:9;3906:22;3885:53;:::i;:::-;3875:63;;3830:118;3987:2;4013:53;4058:7;4049:6;4038:9;4034:22;4013:53;:::i;:::-;4003:63;;3958:118;4115:2;4141:53;4186:7;4177:6;4166:9;4162:22;4141:53;:::i;:::-;4131:63;;4086:118;3446:765;;;;;;;:::o;4217:118::-;4304:24;4322:5;4304:24;:::i;:::-;4299:3;4292:37;4217:118;;:::o;4341:222::-;4434:4;4472:2;4461:9;4457:18;4449:26;;4485:71;4553:1;4542:9;4538:17;4529:6;4485:71;:::i;:::-;4341:222;;;;:::o;4569:117::-;4678:1;4675;4668:12;4692:180;4740:77;4737:1;4730:88;4837:4;4834:1;4827:15;4861:4;4858:1;4851:15;4878:281;4961:27;4983:4;4961:27;:::i;:::-;4953:6;4949:40;5091:6;5079:10;5076:22;5055:18;5043:10;5040:34;5037:62;5034:88;;;5102:18;;:::i;:::-;5034:88;5142:10;5138:2;5131:22;4921:238;4878:281;;:::o;5165:129::-;5199:6;5226:20;;:::i;:::-;5216:30;;5255:33;5283:4;5275:6;5255:33;:::i;:::-;5165:129;;;:::o;5300:311::-;5377:4;5467:18;5459:6;5456:30;5453:56;;;5489:18;;:::i;:::-;5453:56;5539:4;5531:6;5527:17;5519:25;;5599:4;5593;5589:15;5581:23;;5300:311;;;:::o;5617:117::-;5726:1;5723;5716:12;5757:710;5853:5;5878:81;5894:64;5951:6;5894:64;:::i;:::-;5878:81;:::i;:::-;5869:90;;5979:5;6008:6;6001:5;5994:21;6042:4;6035:5;6031:16;6024:23;;6095:4;6087:6;6083:17;6075:6;6071:30;6124:3;6116:6;6113:15;6110:122;;;6143:79;;:::i;:::-;6110:122;6258:6;6241:220;6275:6;6270:3;6267:15;6241:220;;;6350:3;6379:37;6412:3;6400:10;6379:37;:::i;:::-;6374:3;6367:50;6446:4;6441:3;6437:14;6430:21;;6317:144;6301:4;6296:3;6292:14;6285:21;;6241:220;;;6245:21;5859:608;;5757:710;;;;;:::o;6490:370::-;6561:5;6610:3;6603:4;6595:6;6591:17;6587:27;6577:122;;6618:79;;:::i;:::-;6577:122;6735:6;6722:20;6760:94;6850:3;6842:6;6835:4;6827:6;6823:17;6760:94;:::i;:::-;6751:103;;6567:293;6490:370;;;;:::o;6866:539::-;6950:6;6999:2;6987:9;6978:7;6974:23;6970:32;6967:119;;;7005:79;;:::i;:::-;6967:119;7153:1;7142:9;7138:17;7125:31;7183:18;7175:6;7172:30;7169:117;;;7205:79;;:::i;:::-;7169:117;7310:78;7380:7;7371:6;7360:9;7356:22;7310:78;:::i;:::-;7300:88;;7096:302;6866:539;;;;:::o;7411:619::-;7488:6;7496;7504;7553:2;7541:9;7532:7;7528:23;7524:32;7521:119;;;7559:79;;:::i;:::-;7521:119;7679:1;7704:53;7749:7;7740:6;7729:9;7725:22;7704:53;:::i;:::-;7694:63;;7650:117;7806:2;7832:53;7877:7;7868:6;7857:9;7853:22;7832:53;:::i;:::-;7822:63;;7777:118;7934:2;7960:53;8005:7;7996:6;7985:9;7981:22;7960:53;:::i;:::-;7950:63;;7905:118;7411:619;;;;;:::o;8036:329::-;8095:6;8144:2;8132:9;8123:7;8119:23;8115:32;8112:119;;;8150:79;;:::i;:::-;8112:119;8270:1;8295:53;8340:7;8331:6;8320:9;8316:22;8295:53;:::i;:::-;8285:63;;8241:117;8036:329;;;;:::o;8371:86::-;8406:7;8446:4;8439:5;8435:16;8424:27;;8371:86;;;:::o;8463:112::-;8546:22;8562:5;8546:22;:::i;:::-;8541:3;8534:35;8463:112;;:::o;8581:214::-;8670:4;8708:2;8697:9;8693:18;8685:26;;8721:67;8785:1;8774:9;8770:17;8761:6;8721:67;:::i;:::-;8581:214;;;;:::o;8801:329::-;8860:6;8909:2;8897:9;8888:7;8884:23;8880:32;8877:119;;;8915:79;;:::i;:::-;8877:119;9035:1;9060:53;9105:7;9096:6;9085:9;9081:22;9060:53;:::i;:::-;9050:63;;9006:117;8801:329;;;;:::o;9136:116::-;9206:21;9221:5;9206:21;:::i;:::-;9199:5;9196:32;9186:60;;9242:1;9239;9232:12;9186:60;9136:116;:::o;9258:133::-;9301:5;9339:6;9326:20;9317:29;;9355:30;9379:5;9355:30;:::i;:::-;9258:133;;;;:::o;9397:323::-;9453:6;9502:2;9490:9;9481:7;9477:23;9473:32;9470:119;;;9508:79;;:::i;:::-;9470:119;9628:1;9653:50;9695:7;9686:6;9675:9;9671:22;9653:50;:::i;:::-;9643:60;;9599:114;9397:323;;;;:::o;9726:553::-;9903:4;9941:3;9930:9;9926:19;9918:27;;9955:71;10023:1;10012:9;10008:17;9999:6;9955:71;:::i;:::-;10036:72;10104:2;10093:9;10089:18;10080:6;10036:72;:::i;:::-;10118;10186:2;10175:9;10171:18;10162:6;10118:72;:::i;:::-;10200;10268:2;10257:9;10253:18;10244:6;10200:72;:::i;:::-;9726:553;;;;;;;:::o;10285:118::-;10372:24;10390:5;10372:24;:::i;:::-;10367:3;10360:37;10285:118;;:::o;10409:222::-;10502:4;10540:2;10529:9;10525:18;10517:26;;10553:71;10621:1;10610:9;10606:17;10597:6;10553:71;:::i;:::-;10409:222;;;;:::o;10637:474::-;10705:6;10713;10762:2;10750:9;10741:7;10737:23;10733:32;10730:119;;;10768:79;;:::i;:::-;10730:119;10888:1;10913:53;10958:7;10949:6;10938:9;10934:22;10913:53;:::i;:::-;10903:63;;10859:117;11015:2;11041:53;11086:7;11077:6;11066:9;11062:22;11041:53;:::i;:::-;11031:63;;10986:118;10637:474;;;;;:::o;11117:182::-;11257:34;11253:1;11245:6;11241:14;11234:58;11117:182;:::o;11305:366::-;11447:3;11468:67;11532:2;11527:3;11468:67;:::i;:::-;11461:74;;11544:93;11633:3;11544:93;:::i;:::-;11662:2;11657:3;11653:12;11646:19;;11305:366;;;:::o;11677:419::-;11843:4;11881:2;11870:9;11866:18;11858:26;;11930:9;11924:4;11920:20;11916:1;11905:9;11901:17;11894:47;11958:131;12084:4;11958:131;:::i;:::-;11950:139;;11677:419;;;:::o;12102:180::-;12150:77;12147:1;12140:88;12247:4;12244:1;12237:15;12271:4;12268:1;12261:15;12288:191;12328:3;12347:20;12365:1;12347:20;:::i;:::-;12342:25;;12381:20;12399:1;12381:20;:::i;:::-;12376:25;;12424:1;12421;12417:9;12410:16;;12445:3;12442:1;12439:10;12436:36;;;12452:18;;:::i;:::-;12436:36;12288:191;;;;:::o;12485:180::-;12533:77;12530:1;12523:88;12630:4;12627:1;12620:15;12654:4;12651:1;12644:15;12671:233;12710:3;12733:24;12751:5;12733:24;:::i;:::-;12724:33;;12779:66;12772:5;12769:77;12766:103;;12849:18;;:::i;:::-;12766:103;12896:1;12889:5;12885:13;12878:20;;12671:233;;;:::o;12910:250::-;13050:34;13046:1;13038:6;13034:14;13027:58;13119:33;13114:2;13106:6;13102:15;13095:58;12910:250;:::o;13166:366::-;13308:3;13329:67;13393:2;13388:3;13329:67;:::i;:::-;13322:74;;13405:93;13494:3;13405:93;:::i;:::-;13523:2;13518:3;13514:12;13507:19;;13166:366;;;:::o;13538:419::-;13704:4;13742:2;13731:9;13727:18;13719:26;;13791:9;13785:4;13781:20;13777:1;13766:9;13762:17;13755:47;13819:131;13945:4;13819:131;:::i;:::-;13811:139;;13538:419;;;:::o;13963:194::-;14003:4;14023:20;14041:1;14023:20;:::i;:::-;14018:25;;14057:20;14075:1;14057:20;:::i;:::-;14052:25;;14101:1;14098;14094:9;14086:17;;14125:1;14119:4;14116:11;14113:37;;;14130:18;;:::i;:::-;14113:37;13963:194;;;;:::o;14163:180::-;14211:77;14208:1;14201:88;14308:4;14305:1;14298:15;14332:4;14329:1;14322:15;14349:185;14389:1;14406:20;14424:1;14406:20;:::i;:::-;14401:25;;14440:20;14458:1;14440:20;:::i;:::-;14435:25;;14479:1;14469:35;;14484:18;;:::i;:::-;14469:35;14526:1;14523;14519:9;14514:14;;14349:185;;;;:::o;14540:171::-;14680:23;14676:1;14668:6;14664:14;14657:47;14540:171;:::o;14717:366::-;14859:3;14880:67;14944:2;14939:3;14880:67;:::i;:::-;14873:74;;14956:93;15045:3;14956:93;:::i;:::-;15074:2;15069:3;15065:12;15058:19;;14717:366;;;:::o;15089:419::-;15255:4;15293:2;15282:9;15278:18;15270:26;;15342:9;15336:4;15332:20;15328:1;15317:9;15313:17;15306:47;15370:131;15496:4;15370:131;:::i;:::-;15362:139;;15089:419;;;:::o;15514:143::-;15571:5;15602:6;15596:13;15587:22;;15618:33;15645:5;15618:33;:::i;:::-;15514:143;;;;:::o;15663:351::-;15733:6;15782:2;15770:9;15761:7;15757:23;15753:32;15750:119;;;15788:79;;:::i;:::-;15750:119;15908:1;15933:64;15989:7;15980:6;15969:9;15965:22;15933:64;:::i;:::-;15923:74;;15879:128;15663:351;;;;:::o;16020:332::-;16141:4;16179:2;16168:9;16164:18;16156:26;;16192:71;16260:1;16249:9;16245:17;16236:6;16192:71;:::i;:::-;16273:72;16341:2;16330:9;16326:18;16317:6;16273:72;:::i;:::-;16020:332;;;;;:::o;16358:85::-;16403:7;16432:5;16421:16;;16358:85;;;:::o;16449:60::-;16477:3;16498:5;16491:12;;16449:60;;;:::o;16515:158::-;16573:9;16606:61;16624:42;16633:32;16659:5;16633:32;:::i;:::-;16624:42;:::i;:::-;16606:61;:::i;:::-;16593:74;;16515:158;;;:::o;16679:147::-;16774:45;16813:5;16774:45;:::i;:::-;16769:3;16762:58;16679:147;;:::o;16832:807::-;17081:4;17119:3;17108:9;17104:19;17096:27;;17133:71;17201:1;17190:9;17186:17;17177:6;17133:71;:::i;:::-;17214:72;17282:2;17271:9;17267:18;17258:6;17214:72;:::i;:::-;17296:80;17372:2;17361:9;17357:18;17348:6;17296:80;:::i;:::-;17386;17462:2;17451:9;17447:18;17438:6;17386:80;:::i;:::-;17476:73;17544:3;17533:9;17529:19;17520:6;17476:73;:::i;:::-;17559;17627:3;17616:9;17612:19;17603:6;17559:73;:::i;:::-;16832:807;;;;;;;;;:::o;17645:143::-;17702:5;17733:6;17727:13;17718:22;;17749:33;17776:5;17749:33;:::i;:::-;17645:143;;;;:::o;17794:663::-;17882:6;17890;17898;17947:2;17935:9;17926:7;17922:23;17918:32;17915:119;;;17953:79;;:::i;:::-;17915:119;18073:1;18098:64;18154:7;18145:6;18134:9;18130:22;18098:64;:::i;:::-;18088:74;;18044:128;18211:2;18237:64;18293:7;18284:6;18273:9;18269:22;18237:64;:::i;:::-;18227:74;;18182:129;18350:2;18376:64;18432:7;18423:6;18412:9;18408:22;18376:64;:::i;:::-;18366:74;;18321:129;17794:663;;;;;:::o;18463:332::-;18584:4;18622:2;18611:9;18607:18;18599:26;;18635:71;18703:1;18692:9;18688:17;18679:6;18635:71;:::i;:::-;18716:72;18784:2;18773:9;18769:18;18760:6;18716:72;:::i;:::-;18463:332;;;;;:::o;18801:137::-;18855:5;18886:6;18880:13;18871:22;;18902:30;18926:5;18902:30;:::i;:::-;18801:137;;;;:::o;18944:345::-;19011:6;19060:2;19048:9;19039:7;19035:23;19031:32;19028:119;;;19066:79;;:::i;:::-;19028:119;19186:1;19211:61;19264:7;19255:6;19244:9;19240:22;19211:61;:::i;:::-;19201:71;;19157:125;18944:345;;;;:::o;19295:223::-;19435:34;19431:1;19423:6;19419:14;19412:58;19504:6;19499:2;19491:6;19487:15;19480:31;19295:223;:::o;19524:366::-;19666:3;19687:67;19751:2;19746:3;19687:67;:::i;:::-;19680:74;;19763:93;19852:3;19763:93;:::i;:::-;19881:2;19876:3;19872:12;19865:19;;19524:366;;;:::o;19896:419::-;20062:4;20100:2;20089:9;20085:18;20077:26;;20149:9;20143:4;20139:20;20135:1;20124:9;20120:17;20113:47;20177:131;20303:4;20177:131;:::i;:::-;20169:139;;19896:419;;;:::o;20321:221::-;20461:34;20457:1;20449:6;20445:14;20438:58;20530:4;20525:2;20517:6;20513:15;20506:29;20321:221;:::o;20548:366::-;20690:3;20711:67;20775:2;20770:3;20711:67;:::i;:::-;20704:74;;20787:93;20876:3;20787:93;:::i;:::-;20905:2;20900:3;20896:12;20889:19;;20548:366;;;:::o;20920:419::-;21086:4;21124:2;21113:9;21109:18;21101:26;;21173:9;21167:4;21163:20;21159:1;21148:9;21144:17;21137:47;21201:131;21327:4;21201:131;:::i;:::-;21193:139;;20920:419;;;:::o;21345:172::-;21485:24;21481:1;21473:6;21469:14;21462:48;21345:172;:::o;21523:366::-;21665:3;21686:67;21750:2;21745:3;21686:67;:::i;:::-;21679:74;;21762:93;21851:3;21762:93;:::i;:::-;21880:2;21875:3;21871:12;21864:19;;21523:366;;;:::o;21895:419::-;22061:4;22099:2;22088:9;22084:18;22076:26;;22148:9;22142:4;22138:20;22134:1;22123:9;22119:17;22112:47;22176:131;22302:4;22176:131;:::i;:::-;22168:139;;21895:419;;;:::o;22320:175::-;22460:27;22456:1;22448:6;22444:14;22437:51;22320:175;:::o;22501:366::-;22643:3;22664:67;22728:2;22723:3;22664:67;:::i;:::-;22657:74;;22740:93;22829:3;22740:93;:::i;:::-;22858:2;22853:3;22849:12;22842:19;;22501:366;;;:::o;22873:419::-;23039:4;23077:2;23066:9;23062:18;23054:26;;23126:9;23120:4;23116:20;23112:1;23101:9;23097:17;23090:47;23154:131;23280:4;23154:131;:::i;:::-;23146:139;;22873:419;;;:::o;23298:170::-;23438:22;23434:1;23426:6;23422:14;23415:46;23298:170;:::o;23474:366::-;23616:3;23637:67;23701:2;23696:3;23637:67;:::i;:::-;23630:74;;23713:93;23802:3;23713:93;:::i;:::-;23831:2;23826:3;23822:12;23815:19;;23474:366;;;:::o;23846:419::-;24012:4;24050:2;24039:9;24035:18;24027:26;;24099:9;24093:4;24089:20;24085:1;24074:9;24070:17;24063:47;24127:131;24253:4;24127:131;:::i;:::-;24119:139;;23846:419;;;:::o;24271:348::-;24311:7;24334:20;24352:1;24334:20;:::i;:::-;24329:25;;24368:20;24386:1;24368:20;:::i;:::-;24363:25;;24556:1;24488:66;24484:74;24481:1;24478:81;24473:1;24466:9;24459:17;24455:105;24452:131;;;24563:18;;:::i;:::-;24452:131;24611:1;24608;24604:9;24593:20;;24271:348;;;;:::o;24625:220::-;24765:34;24761:1;24753:6;24749:14;24742:58;24834:3;24829:2;24821:6;24817:15;24810:28;24625:220;:::o;24851:366::-;24993:3;25014:67;25078:2;25073:3;25014:67;:::i;:::-;25007:74;;25090:93;25179:3;25090:93;:::i;:::-;25208:2;25203:3;25199:12;25192:19;;24851:366;;;:::o;25223:419::-;25389:4;25427:2;25416:9;25412:18;25404:26;;25476:9;25470:4;25466:20;25462:1;25451:9;25447:17;25440:47;25504:131;25630:4;25504:131;:::i;:::-;25496:139;;25223:419;;;:::o;25648:229::-;25788:34;25784:1;25776:6;25772:14;25765:58;25857:12;25852:2;25844:6;25840:15;25833:37;25648:229;:::o;25883:366::-;26025:3;26046:67;26110:2;26105:3;26046:67;:::i;:::-;26039:74;;26122:93;26211:3;26122:93;:::i;:::-;26240:2;26235:3;26231:12;26224:19;;25883:366;;;:::o;26255:419::-;26421:4;26459:2;26448:9;26444:18;26436:26;;26508:9;26502:4;26498:20;26494:1;26483:9;26479:17;26472:47;26536:131;26662:4;26536:131;:::i;:::-;26528:139;;26255:419;;;:::o;26680:114::-;26747:6;26781:5;26775:12;26765:22;;26680:114;;;:::o;26800:184::-;26899:11;26933:6;26928:3;26921:19;26973:4;26968:3;26964:14;26949:29;;26800:184;;;;:::o;26990:132::-;27057:4;27080:3;27072:11;;27110:4;27105:3;27101:14;27093:22;;26990:132;;;:::o;27128:108::-;27205:24;27223:5;27205:24;:::i;:::-;27200:3;27193:37;27128:108;;:::o;27242:179::-;27311:10;27332:46;27374:3;27366:6;27332:46;:::i;:::-;27410:4;27405:3;27401:14;27387:28;;27242:179;;;;:::o;27427:113::-;27497:4;27529;27524:3;27520:14;27512:22;;27427:113;;;:::o;27576:732::-;27695:3;27724:54;27772:5;27724:54;:::i;:::-;27794:86;27873:6;27868:3;27794:86;:::i;:::-;27787:93;;27904:56;27954:5;27904:56;:::i;:::-;27983:7;28014:1;27999:284;28024:6;28021:1;28018:13;27999:284;;;28100:6;28094:13;28127:63;28186:3;28171:13;28127:63;:::i;:::-;28120:70;;28213:60;28266:6;28213:60;:::i;:::-;28203:70;;28059:224;28046:1;28043;28039:9;28034:14;;27999:284;;;28003:14;28299:3;28292:10;;27700:608;;;27576:732;;;;:::o;28314:831::-;28577:4;28615:3;28604:9;28600:19;28592:27;;28629:71;28697:1;28686:9;28682:17;28673:6;28629:71;:::i;:::-;28710:80;28786:2;28775:9;28771:18;28762:6;28710:80;:::i;:::-;28837:9;28831:4;28827:20;28822:2;28811:9;28807:18;28800:48;28865:108;28968:4;28959:6;28865:108;:::i;:::-;28857:116;;28983:72;29051:2;29040:9;29036:18;29027:6;28983:72;:::i;:::-;29065:73;29133:3;29122:9;29118:19;29109:6;29065:73;:::i;:::-;28314:831;;;;;;;;:::o;29151:177::-;29291:29;29287:1;29279:6;29275:14;29268:53;29151:177;:::o;29334:366::-;29476:3;29497:67;29561:2;29556:3;29497:67;:::i;:::-;29490:74;;29573:93;29662:3;29573:93;:::i;:::-;29691:2;29686:3;29682:12;29675:19;;29334:366;;;:::o;29706:419::-;29872:4;29910:2;29899:9;29895:18;29887:26;;29959:9;29953:4;29949:20;29945:1;29934:9;29930:17;29923:47;29987:131;30113:4;29987:131;:::i;:::-;29979:139;;29706:419;;;:::o

Swarm Source

ipfs://3ac8846644a3e9aa2b50eb748c04ae3e72c39324397d62829a69a0187cb1be34
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.