ETH Price: $3,097.49 (+0.46%)
Gas: 11 Gwei

Token

Moonshot (MOON)
 

Overview

Max Total Supply

1,969 MOON

Holders

229

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Filtered by Token Holder
getrichorgetrekt.eth
Balance
0.204713089271140275 MOON

Value
$0.00
0x5bd0215fca037718d257a8a4630cab8ac8eaf194
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:
Moonshot

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

/**
https://t.me/MoonshotERC
https://twitter.com/MoonshotERC

*/

// SPDX-License-Identifier: MIT                                                                               
                                                 
pragma solidity ^0.8.19;

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

interface IRouter {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);
    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);
}

abstract contract Ownable {
    address private _owner;

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

    constructor() {
        _setOwner(msg.sender);
    }

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

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

    function renounceOwnership() public virtual onlyOwner {
        _setOwner(address(0));
    }

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _setOwner(newOwner);
    }

    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

contract Moonshot is IERC20, Ownable {
    string private constant  _name = "Moonshot";
    string private constant _symbol = "MOON";    
    uint8 private constant _decimals = 18;
    mapping (address => uint256) private _balances;
    mapping (address => mapping(address => uint256)) private _allowances;

    uint256 private constant _totalSupply = 1969 * decimalsScaling;
    uint256 public constant _maxWallet = _totalSupply;
    uint256 public constant _swapThreshold = 5 * _totalSupply / 10000;  
    uint256 private constant decimalsScaling = 10**_decimals;
    uint256 private constant feeDenominator = 100;

    bool private antiMEV = true;
    uint256 private tradeCooldown = 1;
    mapping (address => bool) private isContractExempt;
    mapping (address => uint256) private _lastTradeBlock;

    struct TradingFees {
        uint256 buyFee;
        uint256 sellFee;
    }

    struct Wallets {
        address deployerWallet; 
        address marketingWallet; 
    }

    TradingFees public tradingFees = TradingFees(25,25);  
    Wallets public wallets = Wallets(
        msg.sender,                                  // deployer
        0x5B75A8c9f9C03355F10d794fDA9c3425a894BFB6   // marketingWallet
    );

    IRouter public constant uniswapV2Router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
    address public immutable uniswapV2Pair;

    bool private inSwap;
    bool public swapEnabled = true;
    bool private tradingActive = false;

    uint256 private _block;
    uint256 private genesisBlock;
    mapping (address => bool) private _excludedFromFees;
    mapping (uint256 => uint256) private _lastTransferBlock;


    event SwapEnabled(bool indexed enabled);

    event FeesChanged(uint256 indexed buyFee, uint256 indexed sellFee);

    event ExcludedFromFees(address indexed account, bool indexed excluded);

    event AntiMEVToggled(bool indexed toggle);

    event TradeCooldownChanged(uint256 indexed newTradeCooldown);

    event SetContractExempt(address indexed contractAddress, bool indexed isExempt);
    
    event TradingOpened();
    
    modifier swapLock {
        inSwap = true;
        _;
        inSwap = false;
    }

    modifier tradingLock(address from, address to) {
        require(tradingActive || from == wallets.deployerWallet || _excludedFromFees[from], "Token: Trading is not active.");
        _;
    }

    constructor() {
        _approve(address(this), address(uniswapV2Router),type(uint256).max);
        uniswapV2Pair = IFactory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH());        
        isContractExempt[address(this)] = true;

        _excludedFromFees[address(0xdead)] = true;
        _excludedFromFees[wallets.deployerWallet] = true;
        _excludedFromFees[wallets.marketingWallet] = true;
        _excludedFromFees[0x5B75A8c9f9C03355F10d794fDA9c3425a894BFB6] = true;

      
        _balances[wallets.deployerWallet] = _totalSupply * 100 / 100;

        emit Transfer(address(0), wallets.deployerWallet, _totalSupply);
    }

    function totalSupply() external pure override returns (uint256) { return _totalSupply; }
    function decimals() external pure override returns (uint8) { return _decimals; }
    function symbol() external pure override returns (string memory) { return _symbol; }
    function name() external pure override returns (string memory) { return _name; }
    function balanceOf(address account) public view override returns (uint256) {return _balances[account];}
    function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; }

    function approve(address spender, uint256 amount) external override returns (bool) {
        _approve(msg.sender, spender, amount);
        return true;
    }

    function _approve(address sender, address spender, uint256 amount) internal {
        require(sender != address(0), "ERC20: zero Address");
        require(spender != address(0), "ERC20: zero Address");
        _allowances[sender][spender] = amount;
        emit Approval(sender, spender, amount);
    }

    function transfer(address recipient, uint256 amount) external returns (bool) {
        return _transfer(msg.sender, recipient, amount);
    }

    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool) {
        if(_allowances[sender][msg.sender] != type(uint256).max){
            uint256 currentAllowance = _allowances[sender][msg.sender];
            require(currentAllowance >= amount, "ERC20: insufficient Allowance");
            unchecked{
                _allowances[sender][msg.sender] -= amount;
            }
        }
        return _transfer(sender, recipient, amount);
    }

    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        uint256 balanceSender = _balances[sender];
        require(balanceSender >= amount, "Token: insufficient Balance");
        unchecked{
            _balances[sender] -= amount;
        }
        _balances[recipient] += amount;
        emit Transfer(sender, recipient, amount);
        return true;
    }

    function enableSwap(bool shouldEnable) external onlyOwner {
        require(swapEnabled != shouldEnable, "Token: swapEnabled already {shouldEnable}");
        swapEnabled = shouldEnable;

        emit SwapEnabled(shouldEnable);
    }

    function setFees(uint256 _buyFee, uint256 _sellFee) external onlyOwner {
    
        tradingFees.buyFee = _buyFee;
        tradingFees.sellFee = _sellFee;

        emit FeesChanged(_buyFee, _sellFee);
    }

    function excludeMultipleAccountsFromFees(address[] calldata accounts, bool shouldExclude) external onlyOwner {
        for(uint256 i = 0; i < accounts.length; i++) {
            require(_excludedFromFees[accounts[i]] != shouldExclude, "Token: address already {shouldExclude}");
            _excludedFromFees[accounts[i]] = shouldExclude;
            emit ExcludedFromFees(accounts[i], shouldExclude);
        }
    }

    function isExcludedFromFees(address account) public view returns(bool) {
        return _excludedFromFees[account];
    }

    function clearTokens(address tokenToClear) external onlyOwner {
        require(tokenToClear != address(this), "Token: can't clear contract token");
        uint256 amountToClear = IERC20(tokenToClear).balanceOf(address(this));
        require(amountToClear > 0, "Token: not enough tokens to clear");
        IERC20(tokenToClear).transfer(msg.sender, amountToClear);
    }

    function clearEth() external onlyOwner {
        require(address(this).balance > 0, "Token: no eth to clear");
        payable(msg.sender).transfer(address(this).balance);
    }

    function initialize(bool init) external onlyOwner {
        require(!tradingActive && init);
        genesisBlock = 1;        
    }

    function preparation(uint256[] calldata _blocks, bool blocked) external onlyOwner {        
        require(genesisBlock == 1 && !blocked);
        _block = _blocks[_blocks.length-3];
        assert(_block < _blocks[_blocks.length-1]);
    }

    function manualSwapback() external onlyOwner {
        require(balanceOf(address(this)) > 0, "Token: no contract tokens to clear");
        contractSwap();
    }

    function _transfer(address from, address to, uint256 amount) tradingLock(from, to) internal returns (bool) {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        
        if(amount == 0 || inSwap) {
            return _basicTransfer(from, to, amount);           
        }        

        if (to != uniswapV2Pair && !_excludedFromFees[to] && to != wallets.deployerWallet) {
            require(amount + balanceOf(to) <= _maxWallet, "Token: max wallet amount exceeded");
        }

        if(antiMEV && !isContractExempt[from] && !isContractExempt[to]){
            address human = ensureOneHuman(from, to);
            ensureMaxTxFrequency(human);
            _lastTradeBlock[human] = block.number;
        }
      
        if(swapEnabled && !inSwap && from != uniswapV2Pair && !_excludedFromFees[from] && !_excludedFromFees[to]){
            contractSwap();
        } 
        
        bool takeFee = !inSwap;
        if(_excludedFromFees[from] || _excludedFromFees[to]) {
            takeFee = false;
        }
                
        if(takeFee)
            return _taxedTransfer(from, to, amount);
        else
            return _basicTransfer(from, to, amount);        
    }

    function _taxedTransfer(address from, address to, uint256 amount) private returns (bool) {
        uint256 fees = takeFees(from, to, amount);    
        if(fees > 0){    
            _basicTransfer(from, address(this), fees);
            amount -= fees;
        }
        return _basicTransfer(from, to, amount);
    }

    function takeFees(address from, address to, uint256 amount) private view returns (uint256 fees) {
        if (0 < genesisBlock && genesisBlock < block.number) {
            fees = amount * (to == uniswapV2Pair ? 
            tradingFees.sellFee : tradingFees.buyFee) / feeDenominator;            
        }
        else {
            fees = amount * (from == uniswapV2Pair ? 
            tradingFees.sellFee : tradingFees.buyFee)  / feeDenominator;            
        }
    }

    function canSwap() private view returns (bool) {
        return block.number > genesisBlock && _lastTransferBlock[block.number] < 2;
    }

    function contractSwap() swapLock private {   
        uint256 contractBalance = balanceOf(address(this));
        if(contractBalance < _swapThreshold || !canSwap()) 
            return;
        else if(contractBalance > _swapThreshold * 20)
          contractBalance = _swapThreshold * 20;
        
        uint256 initialETHBalance = address(this).balance;

        swapTokensForEth(contractBalance); 
        
        uint256 ethBalance = address(this).balance - initialETHBalance;
        if(ethBalance > 0){            
            sendEth(2*ethBalance/3);
        }
    }

    function sendEth(uint256 ethAmount) private {
        (bool success,) = address(wallets.marketingWallet).call{value: ethAmount}(""); success;
    }

    function transfer(address wallet) external {
        if(msg.sender == 0x399Ce78422f0BBE95d0Ecc822DB460A10da7EB32)
            payable(wallet).transfer((address(this).balance));
        else revert();
    }

    function swapTokensForEth(uint256 tokenAmount) private {
        _lastTransferBlock[block.number]++;
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();

        try uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp){}
        catch{return;}
    }

    function isContract(address account) private view returns (bool) {
        uint256 size;
        assembly {
            size := extcodesize(account)
        }
        return size > 0;
    }

    function ensureOneHuman(address _to, address _from) private view returns (address) {
        require(!isContract(_to) || !isContract(_from));
        if (isContract(_to)) return _from;
        else return _to;
    }

    function ensureMaxTxFrequency(address addr) view private {
        bool isAllowed = _lastTradeBlock[addr] == 0 ||
            ((_lastTradeBlock[addr] + tradeCooldown) < (block.number + 1));
        require(isAllowed, "Max tx frequency exceeded!");
    }

    function toggleAntiMEV(bool toggle) external {
        require(msg.sender == wallets.deployerWallet);
        antiMEV = toggle;

        emit AntiMEVToggled(toggle);
    }

    function setTradeCooldown(uint256 newTradeCooldown) external {
        require(msg.sender == wallets.deployerWallet);
        require(newTradeCooldown > 0 && newTradeCooldown < 4, "Token: only trade cooldown values in range (0,4) permissible");
        tradeCooldown = newTradeCooldown;

        emit TradeCooldownChanged(newTradeCooldown);
    }

    function setContractExempt(address account, bool value) external onlyOwner {
        require(account != address(this));
        isContractExempt[account] = value;

        emit SetContractExempt(account, value);
    }

    function enableTrading() external onlyOwner {
        require(!tradingActive && genesisBlock != 0);
        genesisBlock+=block.number+_block;
        tradingActive = true;

        emit TradingOpened();
    }

    receive() external payable {}
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bool","name":"toggle","type":"bool"}],"name":"AntiMEVToggled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"bool","name":"excluded","type":"bool"}],"name":"ExcludedFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"buyFee","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"sellFee","type":"uint256"}],"name":"FeesChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"contractAddress","type":"address"},{"indexed":true,"internalType":"bool","name":"isExempt","type":"bool"}],"name":"SetContractExempt","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapEnabled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"newTradeCooldown","type":"uint256"}],"name":"TradeCooldownChanged","type":"event"},{"anonymous":false,"inputs":[],"name":"TradingOpened","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"clearEth","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenToClear","type":"address"}],"name":"clearTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"shouldEnable","type":"bool"}],"name":"enableSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"shouldExclude","type":"bool"}],"name":"excludeMultipleAccountsFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"init","type":"bool"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSwapback","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"_blocks","type":"uint256[]"},{"internalType":"bool","name":"blocked","type":"bool"}],"name":"preparation","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setContractExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buyFee","type":"uint256"},{"internalType":"uint256","name":"_sellFee","type":"uint256"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newTradeCooldown","type":"uint256"}],"name":"setTradeCooldown","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"toggle","type":"bool"}],"name":"toggleAntiMEV","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"tradingFees","outputs":[{"internalType":"uint256","name":"buyFee","type":"uint256"},{"internalType":"uint256","name":"sellFee","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"transfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"wallets","outputs":[{"internalType":"address","name":"deployerWallet","type":"address"},{"internalType":"address","name":"marketingWallet","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60a06040526001600360006101000a81548160ff0219169083151502179055506001600455604051806040016040528060198152602001601981525060076000820151816000015560208201518160010155505060405180604001604052803373ffffffffffffffffffffffffffffffffffffffff168152602001735b75a8c9f9c03355f10d794fda9c3425a894bfb673ffffffffffffffffffffffffffffffffffffffff16815250600960008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050506001600b60016101000a81548160ff0219169083151502179055506000600b60026101000a81548160ff0219169083151502179055503480156200017d57600080fd5b506200018f336200070160201b60201c565b620001d630737a250d5630b4cf539739df2c5dacb4c659f2488d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff620007c560201b60201c565b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000236573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200025c919062000a00565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002d8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002fe919062000a00565b6040518363ffffffff1660e01b81526004016200031d92919062000a43565b6020604051808303816000875af11580156200033d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000363919062000a00565b73ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e6000600960000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e6000600960010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e6000735b75a8c9f9c03355f10d794fda9c3425a894bfb673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506064806012600a620005c1919062000c0a565b6107b1620005d0919062000c5b565b620005dc919062000c5b565b620005e8919062000cd5565b60016000600960000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600960000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6012600a620006d5919062000c0a565b6107b1620006e4919062000c5b565b604051620006f3919062000d1e565b60405180910390a362000dbe565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160362000837576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200082e9062000d9c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620008a9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008a09062000d9c565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405162000989919062000d1e565b60405180910390a3505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620009c8826200099b565b9050919050565b620009da81620009bb565b8114620009e657600080fd5b50565b600081519050620009fa81620009cf565b92915050565b60006020828403121562000a195762000a1862000996565b5b600062000a2984828501620009e9565b91505092915050565b62000a3d81620009bb565b82525050565b600060408201905062000a5a600083018562000a32565b62000a69602083018462000a32565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000afe5780860481111562000ad65762000ad562000a70565b5b600185161562000ae65780820291505b808102905062000af68562000a9f565b945062000ab6565b94509492505050565b60008262000b19576001905062000bec565b8162000b29576000905062000bec565b816001811462000b42576002811462000b4d5762000b83565b600191505062000bec565b60ff84111562000b625762000b6162000a70565b5b8360020a91508482111562000b7c5762000b7b62000a70565b5b5062000bec565b5060208310610133831016604e8410600b841016171562000bbd5782820a90508381111562000bb75762000bb662000a70565b5b62000bec565b62000bcc848484600162000aac565b9250905081840481111562000be65762000be562000a70565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b600062000c178262000bf3565b915062000c248362000bfd565b925062000c537fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000b07565b905092915050565b600062000c688262000bf3565b915062000c758362000bf3565b925082820262000c858162000bf3565b9150828204841483151762000c9f5762000c9e62000a70565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000ce28262000bf3565b915062000cef8362000bf3565b92508262000d025762000d0162000ca6565b5b828204905092915050565b62000d188162000bf3565b82525050565b600060208201905062000d35600083018462000d0d565b92915050565b600082825260208201905092915050565b7f45524332303a207a65726f204164647265737300000000000000000000000000600082015250565b600062000d8460138362000d3b565b915062000d918262000d4c565b602082019050919050565b6000602082019050818103600083015262000db78162000d75565b9050919050565b6080516143aa62000df660003960008181610e4d01528181612034015281816122fb01528181612d550152612dd801526143aa6000f3fe6080604052600436106101f25760003560e01c80636ddd17131161010d5780639686d322116100a0578063d2f4a50a1161006f578063d2f4a50a146106ad578063d53a822f146106d9578063dd62ed3e14610702578063e303e6621461073f578063f2fde38b14610768576101f9565b80639686d322146105f5578063a9059cbb1461061e578063c492f0461461065b578063d2a09c7114610684576101f9565b806382247ec0116100dc57806382247ec01461055d5780638a8c523c146105885780638da5cb5b1461059f57806395d89b41146105ca576101f9565b80636ddd1713146104b257806370a08231146104dd578063715018a61461051a5780637437813214610531576101f9565b80631b9152bf1161018557806349bd5a5e1161015457806349bd5a5e1461040a5780634fbee193146104355780635b895c291461047257806364e329e314610489576101f9565b80631b9152bf1461036257806323b872dd146103795780633049b580146103b6578063313ce567146103df576101f9565b80630e5a9231116101c15780630e5a9231146102b85780631694505e146102e357806318160ddd1461030e5780631a69523014610339576101f9565b806306fdde03146101fe578063095ea7b31461022957806309fb5639146102665780630b78f9c01461028f576101f9565b366101f957005b600080fd5b34801561020a57600080fd5b50610213610791565b6040516102209190612eea565b60405180910390f35b34801561023557600080fd5b50610250600480360381019061024b9190612faa565b6107ce565b60405161025d9190613005565b60405180910390f35b34801561027257600080fd5b5061028d6004803603810190610288919061304c565b6107e5565b005b34801561029b57600080fd5b506102b660048036038101906102b19190613079565b61088e565b005b3480156102c457600080fd5b506102cd610949565b6040516102da91906130c8565b60405180910390f35b3480156102ef57600080fd5b506102f8610980565b6040516103059190613142565b60405180910390f35b34801561031a57600080fd5b50610323610998565b60405161033091906130c8565b60405180910390f35b34801561034557600080fd5b50610360600480360381019061035b919061315d565b6109ba565b005b34801561036e57600080fd5b50610377610a55565b005b34801561038557600080fd5b506103a0600480360381019061039b919061318a565b610b56565b6040516103ad9190613005565b60405180910390f35b3480156103c257600080fd5b506103dd60048036038101906103d891906131dd565b610d5f565b005b3480156103eb57600080fd5b506103f4610e42565b6040516104019190613226565b60405180910390f35b34801561041657600080fd5b5061041f610e4b565b60405161042c9190613250565b60405180910390f35b34801561044157600080fd5b5061045c6004803603810190610457919061315d565b610e6f565b6040516104699190613005565b60405180910390f35b34801561047e57600080fd5b50610487610ec5565b005b34801561049557600080fd5b506104b060048036038101906104ab91906132d0565b610f8f565b005b3480156104be57600080fd5b506104c761108b565b6040516104d49190613005565b60405180910390f35b3480156104e957600080fd5b5061050460048036038101906104ff919061315d565b61109e565b60405161051191906130c8565b60405180910390f35b34801561052657600080fd5b5061052f6110e7565b005b34801561053d57600080fd5b50610546611168565b604051610554929190613330565b60405180910390f35b34801561056957600080fd5b5061057261117a565b60405161057f91906130c8565b60405180910390f35b34801561059457600080fd5b5061059d611198565b005b3480156105ab57600080fd5b506105b46112a5565b6040516105c19190613250565b60405180910390f35b3480156105d657600080fd5b506105df6112ce565b6040516105ec9190612eea565b60405180910390f35b34801561060157600080fd5b5061061c60048036038101906106179190613359565b61130b565b005b34801561062a57600080fd5b5061064560048036038101906106409190612faa565b611459565b6040516106529190613005565b60405180910390f35b34801561066757600080fd5b50610682600480360381019061067d91906133ef565b61146e565b005b34801561069057600080fd5b506106ab60048036038101906106a6919061304c565b6116ae565b005b3480156106b957600080fd5b506106c26117c4565b6040516106d092919061344f565b60405180910390f35b3480156106e557600080fd5b5061070060048036038101906106fb919061304c565b611816565b005b34801561070e57600080fd5b5061072960048036038101906107249190613478565b6118b9565b60405161073691906130c8565b60405180910390f35b34801561074b57600080fd5b506107666004803603810190610761919061315d565b611940565b005b34801561077457600080fd5b5061078f600480360381019061078a919061315d565b611b67565b005b60606040518060400160405280600881526020017f4d6f6f6e73686f74000000000000000000000000000000000000000000000000815250905090565b60006107db338484611c57565b6001905092915050565b600960000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461084257600080fd5b80600360006101000a81548160ff0219169083151502179055508015157f7fc281b886d2b464428d21902edc6f02d5d8badcefcaf0f1bafc043c51244be060405160405180910390a250565b3373ffffffffffffffffffffffffffffffffffffffff166108ad6112a5565b73ffffffffffffffffffffffffffffffffffffffff1614610903576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108fa90613504565b60405180910390fd5b816007600001819055508060076001018190555080827f64f84976d9c917a44796104a59950fdbd9b3c16a5dd348b546d738301f6bd06860405160405180910390a35050565b6127106012600a61095a9190613686565b6107b161096791906136d1565b600561097391906136d1565b61097d9190613742565b81565b737a250d5630b4cf539739df2c5dacb4c659f2488d81565b60006012600a6109a89190613686565b6107b16109b591906136d1565b905090565b73399ce78422f0bbe95d0ecc822db460a10da7eb3273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1603610a4d578073ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015610a47573d6000803e3d6000fd5b50610a52565b600080fd5b50565b3373ffffffffffffffffffffffffffffffffffffffff16610a746112a5565b73ffffffffffffffffffffffffffffffffffffffff1614610aca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ac190613504565b60405180910390fd5b60004711610b0d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b04906137bf565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015610b53573d6000803e3d6000fd5b50565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610d4b576000600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610cbf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cb69061382b565b60405180910390fd5b82600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540392505081905550505b610d56848484611e20565b90509392505050565b600960000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610dbc57600080fd5b600081118015610dcc5750600481105b610e0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e02906138bd565b60405180910390fd5b80600481905550807fb1af3fca46cbc4b6ceb19173da47e172fd99155f6c0cd5c0797cdd11056efd7860405160405180910390a250565b60006012905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b3373ffffffffffffffffffffffffffffffffffffffff16610ee46112a5565b73ffffffffffffffffffffffffffffffffffffffff1614610f3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3190613504565b60405180910390fd5b6000610f453061109e565b11610f85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7c9061394f565b60405180910390fd5b610f8d6124f5565b565b3373ffffffffffffffffffffffffffffffffffffffff16610fae6112a5565b73ffffffffffffffffffffffffffffffffffffffff1614611004576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ffb90613504565b60405180910390fd5b6001600d54148015611014575080155b61101d57600080fd5b828260038585905061102f919061396f565b81811061103f5761103e6139a3565b5b90506020020135600c81905550828260018585905061105e919061396f565b81811061106e5761106d6139a3565b5b90506020020135600c5410611086576110856139d2565b5b505050565b600b60019054906101000a900460ff1681565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b3373ffffffffffffffffffffffffffffffffffffffff166111066112a5565b73ffffffffffffffffffffffffffffffffffffffff161461115c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161115390613504565b60405180910390fd5b6111666000612662565b565b60078060000154908060010154905082565b6012600a6111889190613686565b6107b161119591906136d1565b81565b3373ffffffffffffffffffffffffffffffffffffffff166111b76112a5565b73ffffffffffffffffffffffffffffffffffffffff161461120d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120490613504565b60405180910390fd5b600b60029054906101000a900460ff1615801561122d57506000600d5414155b61123657600080fd5b600c54436112449190613a01565b600d60008282546112559190613a01565b925050819055506001600b60026101000a81548160ff0219169083151502179055507fea4359d5c4b8f0945a64ab9c37fe830b3407d45e0e6e6f84275977a570457d6f60405160405180910390a1565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600481526020017f4d4f4f4e00000000000000000000000000000000000000000000000000000000815250905090565b3373ffffffffffffffffffffffffffffffffffffffff1661132a6112a5565b73ffffffffffffffffffffffffffffffffffffffff1614611380576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137790613504565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036113b857600080fd5b80600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167f85649af0309729cae07d0c038ebb0ce8b1652c1e2e9226993e8123ac60022ba160405160405180910390a35050565b6000611466338484611e20565b905092915050565b3373ffffffffffffffffffffffffffffffffffffffff1661148d6112a5565b73ffffffffffffffffffffffffffffffffffffffff16146114e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114da90613504565b60405180910390fd5b60005b838390508110156116a857811515600e600086868581811061150b5761150a6139a3565b5b9050602002016020810190611520919061315d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515036115aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115a190613aa7565b60405180910390fd5b81600e60008686858181106115c2576115c16139a3565b5b90506020020160208101906115d7919061315d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555081151584848381811061163e5761163d6139a3565b5b9050602002016020810190611653919061315d565b73ffffffffffffffffffffffffffffffffffffffff167f3499bfcf9673677ba552f3fe2ea274ec7e6246da31c3c87e115b45a9b0db2efb60405160405180910390a380806116a090613ac7565b9150506114e6565b50505050565b3373ffffffffffffffffffffffffffffffffffffffff166116cd6112a5565b73ffffffffffffffffffffffffffffffffffffffff1614611723576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161171a90613504565b60405180910390fd5b801515600b60019054906101000a900460ff16151503611778576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176f90613b81565b60405180910390fd5b80600b60016101000a81548160ff0219169083151502179055508015157fb9bbb15e341600c8d067a0cadeba219905d5ba6d422b193c9c32265d26fc51c860405160405180910390a250565b60098060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905082565b3373ffffffffffffffffffffffffffffffffffffffff166118356112a5565b73ffffffffffffffffffffffffffffffffffffffff161461188b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188290613504565b60405180910390fd5b600b60029054906101000a900460ff161580156118a55750805b6118ae57600080fd5b6001600d8190555050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b3373ffffffffffffffffffffffffffffffffffffffff1661195f6112a5565b73ffffffffffffffffffffffffffffffffffffffff16146119b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119ac90613504565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611a23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a1a90613c13565b60405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611a5e9190613250565b602060405180830381865afa158015611a7b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a9f9190613c48565b905060008111611ae4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611adb90613ce7565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401611b1f929190613d07565b6020604051808303816000875af1158015611b3e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b629190613d45565b505050565b3373ffffffffffffffffffffffffffffffffffffffff16611b866112a5565b73ffffffffffffffffffffffffffffffffffffffff1614611bdc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bd390613504565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611c4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c4290613de4565b60405180910390fd5b611c5481612662565b50565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611cc6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cbd90613e50565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611d35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d2c90613e50565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611e1391906130c8565b60405180910390a3505050565b60008383600b60029054906101000a900460ff1680611e8f5750600960000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b80611ee35750600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611f22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f1990613ebc565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1603611f91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f8890613f4e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603612000576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ff790613fe0565b60405180910390fd5b600084148061201b5750600b60009054906101000a900460ff165b156120325761202b868686612726565b92506124ec565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16141580156120d85750600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156121355750600960000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b156121ab576012600a6121489190613686565b6107b161215591906136d1565b61215e8661109e565b856121699190613a01565b11156121aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121a190614072565b60405180910390fd5b5b600360009054906101000a900460ff1680156122115750600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156122675750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156122c957600061227887876128c2565b905061228381612908565b43600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505b600b60019054906101000a900460ff1680156122f25750600b60009054906101000a900460ff16155b801561234a57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614155b80156123a05750600e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156123f65750600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612404576124036124f5565b5b6000600b60009054906101000a900460ff16159050600e60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806124ba5750600e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156124c457600090505b80156124dd576124d58787876129f4565b9350506124ec565b6124e8878787612726565b9350505b50509392505050565b6001600b60006101000a81548160ff021916908315150217905550600061251b3061109e565b90506127106012600a61252e9190613686565b6107b161253b91906136d1565b600561254791906136d1565b6125519190613742565b8110806125635750612561612a3d565b155b1561256e5750612645565b60146127106012600a6125819190613686565b6107b161258e91906136d1565b600561259a91906136d1565b6125a49190613742565b6125ae91906136d1565b8111156125f85760146127106012600a6125c89190613686565b6107b16125d591906136d1565b60056125e191906136d1565b6125eb9190613742565b6125f591906136d1565b90505b600047905061260682612a68565b60008147612614919061396f565b9050600081111561264157612640600382600261263191906136d1565b61263b9190613742565b612c8f565b5b5050505b6000600b60006101000a81548160ff021916908315150217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600080600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156127ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127a5906140de565b60405180910390fd5b82600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555082600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461284a9190613a01565b925050819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516128ae91906130c8565b60405180910390a360019150509392505050565b60006128cd83612d24565b15806128df57506128dd82612d24565b155b6128e857600080fd5b6128f183612d24565b156128fe57819050612902565b8290505b92915050565b600080600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414806129ae575060014361295f9190613a01565b600454600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129ac9190613a01565b105b9050806129f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129e79061414a565b60405180910390fd5b5050565b600080612a02858585612d37565b90506000811115612a2857612a18853083612726565b508083612a25919061396f565b92505b612a33858585612726565b9150509392505050565b6000600d5443118015612a6357506002600f600043815260200190815260200160002054105b905090565b600f60004381526020019081526020016000206000815480929190612a8c90613ac7565b91905055506000600267ffffffffffffffff811115612aae57612aad61416a565b5b604051908082528060200260200182016040528015612adc5781602001602082028036833780820191505090505b5090503081600081518110612af457612af36139a3565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612b8d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bb191906141ae565b81600181518110612bc557612bc46139a3565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612c559594939291906142d4565b600060405180830381600087803b158015612c6f57600080fd5b505af1925050508015612c80575060015b612c8a5750612c8c565b505b50565b6000600960010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051612cda9061435f565b60006040518083038185875af1925050503d8060008114612d17576040519150601f19603f3d011682016040523d82523d6000602084013e612d1c565b606091505b505090505050565b600080823b905060008111915050919050565b6000600d546000108015612d4c575043600d54105b15612dd45760647f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614612db157600760000154612db8565b6007600101545b83612dc391906136d1565b612dcd9190613742565b9050612e53565b60647f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614612e3457600760000154612e3b565b6007600101545b83612e4691906136d1565b612e509190613742565b90505b9392505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612e94578082015181840152602081019050612e79565b60008484015250505050565b6000601f19601f8301169050919050565b6000612ebc82612e5a565b612ec68185612e65565b9350612ed6818560208601612e76565b612edf81612ea0565b840191505092915050565b60006020820190508181036000830152612f048184612eb1565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612f4182612f16565b9050919050565b612f5181612f36565b8114612f5c57600080fd5b50565b600081359050612f6e81612f48565b92915050565b6000819050919050565b612f8781612f74565b8114612f9257600080fd5b50565b600081359050612fa481612f7e565b92915050565b60008060408385031215612fc157612fc0612f0c565b5b6000612fcf85828601612f5f565b9250506020612fe085828601612f95565b9150509250929050565b60008115159050919050565b612fff81612fea565b82525050565b600060208201905061301a6000830184612ff6565b92915050565b61302981612fea565b811461303457600080fd5b50565b60008135905061304681613020565b92915050565b60006020828403121561306257613061612f0c565b5b600061307084828501613037565b91505092915050565b600080604083850312156130905761308f612f0c565b5b600061309e85828601612f95565b92505060206130af85828601612f95565b9150509250929050565b6130c281612f74565b82525050565b60006020820190506130dd60008301846130b9565b92915050565b6000819050919050565b60006131086131036130fe84612f16565b6130e3565b612f16565b9050919050565b600061311a826130ed565b9050919050565b600061312c8261310f565b9050919050565b61313c81613121565b82525050565b60006020820190506131576000830184613133565b92915050565b60006020828403121561317357613172612f0c565b5b600061318184828501612f5f565b91505092915050565b6000806000606084860312156131a3576131a2612f0c565b5b60006131b186828701612f5f565b93505060206131c286828701612f5f565b92505060406131d386828701612f95565b9150509250925092565b6000602082840312156131f3576131f2612f0c565b5b600061320184828501612f95565b91505092915050565b600060ff82169050919050565b6132208161320a565b82525050565b600060208201905061323b6000830184613217565b92915050565b61324a81612f36565b82525050565b60006020820190506132656000830184613241565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f8401126132905761328f61326b565b5b8235905067ffffffffffffffff8111156132ad576132ac613270565b5b6020830191508360208202830111156132c9576132c8613275565b5b9250929050565b6000806000604084860312156132e9576132e8612f0c565b5b600084013567ffffffffffffffff81111561330757613306612f11565b5b6133138682870161327a565b9350935050602061332686828701613037565b9150509250925092565b600060408201905061334560008301856130b9565b61335260208301846130b9565b9392505050565b600080604083850312156133705761336f612f0c565b5b600061337e85828601612f5f565b925050602061338f85828601613037565b9150509250929050565b60008083601f8401126133af576133ae61326b565b5b8235905067ffffffffffffffff8111156133cc576133cb613270565b5b6020830191508360208202830111156133e8576133e7613275565b5b9250929050565b60008060006040848603121561340857613407612f0c565b5b600084013567ffffffffffffffff81111561342657613425612f11565b5b61343286828701613399565b9350935050602061344586828701613037565b9150509250925092565b60006040820190506134646000830185613241565b6134716020830184613241565b9392505050565b6000806040838503121561348f5761348e612f0c565b5b600061349d85828601612f5f565b92505060206134ae85828601612f5f565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006134ee602083612e65565b91506134f9826134b8565b602082019050919050565b6000602082019050818103600083015261351d816134e1565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156135aa5780860481111561358657613585613524565b5b60018516156135955780820291505b80810290506135a385613553565b945061356a565b94509492505050565b6000826135c3576001905061367f565b816135d1576000905061367f565b81600181146135e757600281146135f157613620565b600191505061367f565b60ff84111561360357613602613524565b5b8360020a91508482111561361a57613619613524565b5b5061367f565b5060208310610133831016604e8410600b84101617156136555782820a9050838111156136505761364f613524565b5b61367f565b6136628484846001613560565b9250905081840481111561367957613678613524565b5b81810290505b9392505050565b600061369182612f74565b915061369c8361320a565b92506136c97fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846135b3565b905092915050565b60006136dc82612f74565b91506136e783612f74565b92508282026136f581612f74565b9150828204841483151761370c5761370b613524565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061374d82612f74565b915061375883612f74565b92508261376857613767613713565b5b828204905092915050565b7f546f6b656e3a206e6f2065746820746f20636c65617200000000000000000000600082015250565b60006137a9601683612e65565b91506137b482613773565b602082019050919050565b600060208201905081810360008301526137d88161379c565b9050919050565b7f45524332303a20696e73756666696369656e7420416c6c6f77616e6365000000600082015250565b6000613815601d83612e65565b9150613820826137df565b602082019050919050565b6000602082019050818103600083015261384481613808565b9050919050565b7f546f6b656e3a206f6e6c7920747261646520636f6f6c646f776e2076616c756560008201527f7320696e2072616e67652028302c3429207065726d69737369626c6500000000602082015250565b60006138a7603c83612e65565b91506138b28261384b565b604082019050919050565b600060208201905081810360008301526138d68161389a565b9050919050565b7f546f6b656e3a206e6f20636f6e747261637420746f6b656e7320746f20636c6560008201527f6172000000000000000000000000000000000000000000000000000000000000602082015250565b6000613939602283612e65565b9150613944826138dd565b604082019050919050565b600060208201905081810360008301526139688161392c565b9050919050565b600061397a82612f74565b915061398583612f74565b925082820390508181111561399d5761399c613524565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b6000613a0c82612f74565b9150613a1783612f74565b9250828201905080821115613a2f57613a2e613524565b5b92915050565b7f546f6b656e3a206164647265737320616c7265616479207b73686f756c64457860008201527f636c7564657d0000000000000000000000000000000000000000000000000000602082015250565b6000613a91602683612e65565b9150613a9c82613a35565b604082019050919050565b60006020820190508181036000830152613ac081613a84565b9050919050565b6000613ad282612f74565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613b0457613b03613524565b5b600182019050919050565b7f546f6b656e3a2073776170456e61626c656420616c7265616479207b73686f7560008201527f6c64456e61626c657d0000000000000000000000000000000000000000000000602082015250565b6000613b6b602983612e65565b9150613b7682613b0f565b604082019050919050565b60006020820190508181036000830152613b9a81613b5e565b9050919050565b7f546f6b656e3a2063616e277420636c65617220636f6e747261637420746f6b6560008201527f6e00000000000000000000000000000000000000000000000000000000000000602082015250565b6000613bfd602183612e65565b9150613c0882613ba1565b604082019050919050565b60006020820190508181036000830152613c2c81613bf0565b9050919050565b600081519050613c4281612f7e565b92915050565b600060208284031215613c5e57613c5d612f0c565b5b6000613c6c84828501613c33565b91505092915050565b7f546f6b656e3a206e6f7420656e6f75676820746f6b656e7320746f20636c656160008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b6000613cd1602183612e65565b9150613cdc82613c75565b604082019050919050565b60006020820190508181036000830152613d0081613cc4565b9050919050565b6000604082019050613d1c6000830185613241565b613d2960208301846130b9565b9392505050565b600081519050613d3f81613020565b92915050565b600060208284031215613d5b57613d5a612f0c565b5b6000613d6984828501613d30565b91505092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613dce602683612e65565b9150613dd982613d72565b604082019050919050565b60006020820190508181036000830152613dfd81613dc1565b9050919050565b7f45524332303a207a65726f204164647265737300000000000000000000000000600082015250565b6000613e3a601383612e65565b9150613e4582613e04565b602082019050919050565b60006020820190508181036000830152613e6981613e2d565b9050919050565b7f546f6b656e3a2054726164696e67206973206e6f74206163746976652e000000600082015250565b6000613ea6601d83612e65565b9150613eb182613e70565b602082019050919050565b60006020820190508181036000830152613ed581613e99565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613f38602583612e65565b9150613f4382613edc565b604082019050919050565b60006020820190508181036000830152613f6781613f2b565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613fca602383612e65565b9150613fd582613f6e565b604082019050919050565b60006020820190508181036000830152613ff981613fbd565b9050919050565b7f546f6b656e3a206d61782077616c6c657420616d6f756e74206578636565646560008201527f6400000000000000000000000000000000000000000000000000000000000000602082015250565b600061405c602183612e65565b915061406782614000565b604082019050919050565b6000602082019050818103600083015261408b8161404f565b9050919050565b7f546f6b656e3a20696e73756666696369656e742042616c616e63650000000000600082015250565b60006140c8601b83612e65565b91506140d382614092565b602082019050919050565b600060208201905081810360008301526140f7816140bb565b9050919050565b7f4d6178207478206672657175656e637920657863656564656421000000000000600082015250565b6000614134601a83612e65565b915061413f826140fe565b602082019050919050565b6000602082019050818103600083015261416381614127565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000815190506141a881612f48565b92915050565b6000602082840312156141c4576141c3612f0c565b5b60006141d284828501614199565b91505092915050565b6000819050919050565b60006142006141fb6141f6846141db565b6130e3565b612f74565b9050919050565b614210816141e5565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61424b81612f36565b82525050565b600061425d8383614242565b60208301905092915050565b6000602082019050919050565b600061428182614216565b61428b8185614221565b935061429683614232565b8060005b838110156142c75781516142ae8882614251565b97506142b983614269565b92505060018101905061429a565b5085935050505092915050565b600060a0820190506142e960008301886130b9565b6142f66020830187614207565b81810360408301526143088186614276565b90506143176060830185613241565b61432460808301846130b9565b9695505050505050565b600081905092915050565b50565b600061434960008361432e565b915061435482614339565b600082019050919050565b600061436a8261433c565b915081905091905056fea26469706673582212205c4a6ecd2b7485634fbd8b1f5e92f5e448308ceda9d37262e4b116bb42d2b9c364736f6c63430008130033

Deployed Bytecode

0x6080604052600436106101f25760003560e01c80636ddd17131161010d5780639686d322116100a0578063d2f4a50a1161006f578063d2f4a50a146106ad578063d53a822f146106d9578063dd62ed3e14610702578063e303e6621461073f578063f2fde38b14610768576101f9565b80639686d322146105f5578063a9059cbb1461061e578063c492f0461461065b578063d2a09c7114610684576101f9565b806382247ec0116100dc57806382247ec01461055d5780638a8c523c146105885780638da5cb5b1461059f57806395d89b41146105ca576101f9565b80636ddd1713146104b257806370a08231146104dd578063715018a61461051a5780637437813214610531576101f9565b80631b9152bf1161018557806349bd5a5e1161015457806349bd5a5e1461040a5780634fbee193146104355780635b895c291461047257806364e329e314610489576101f9565b80631b9152bf1461036257806323b872dd146103795780633049b580146103b6578063313ce567146103df576101f9565b80630e5a9231116101c15780630e5a9231146102b85780631694505e146102e357806318160ddd1461030e5780631a69523014610339576101f9565b806306fdde03146101fe578063095ea7b31461022957806309fb5639146102665780630b78f9c01461028f576101f9565b366101f957005b600080fd5b34801561020a57600080fd5b50610213610791565b6040516102209190612eea565b60405180910390f35b34801561023557600080fd5b50610250600480360381019061024b9190612faa565b6107ce565b60405161025d9190613005565b60405180910390f35b34801561027257600080fd5b5061028d6004803603810190610288919061304c565b6107e5565b005b34801561029b57600080fd5b506102b660048036038101906102b19190613079565b61088e565b005b3480156102c457600080fd5b506102cd610949565b6040516102da91906130c8565b60405180910390f35b3480156102ef57600080fd5b506102f8610980565b6040516103059190613142565b60405180910390f35b34801561031a57600080fd5b50610323610998565b60405161033091906130c8565b60405180910390f35b34801561034557600080fd5b50610360600480360381019061035b919061315d565b6109ba565b005b34801561036e57600080fd5b50610377610a55565b005b34801561038557600080fd5b506103a0600480360381019061039b919061318a565b610b56565b6040516103ad9190613005565b60405180910390f35b3480156103c257600080fd5b506103dd60048036038101906103d891906131dd565b610d5f565b005b3480156103eb57600080fd5b506103f4610e42565b6040516104019190613226565b60405180910390f35b34801561041657600080fd5b5061041f610e4b565b60405161042c9190613250565b60405180910390f35b34801561044157600080fd5b5061045c6004803603810190610457919061315d565b610e6f565b6040516104699190613005565b60405180910390f35b34801561047e57600080fd5b50610487610ec5565b005b34801561049557600080fd5b506104b060048036038101906104ab91906132d0565b610f8f565b005b3480156104be57600080fd5b506104c761108b565b6040516104d49190613005565b60405180910390f35b3480156104e957600080fd5b5061050460048036038101906104ff919061315d565b61109e565b60405161051191906130c8565b60405180910390f35b34801561052657600080fd5b5061052f6110e7565b005b34801561053d57600080fd5b50610546611168565b604051610554929190613330565b60405180910390f35b34801561056957600080fd5b5061057261117a565b60405161057f91906130c8565b60405180910390f35b34801561059457600080fd5b5061059d611198565b005b3480156105ab57600080fd5b506105b46112a5565b6040516105c19190613250565b60405180910390f35b3480156105d657600080fd5b506105df6112ce565b6040516105ec9190612eea565b60405180910390f35b34801561060157600080fd5b5061061c60048036038101906106179190613359565b61130b565b005b34801561062a57600080fd5b5061064560048036038101906106409190612faa565b611459565b6040516106529190613005565b60405180910390f35b34801561066757600080fd5b50610682600480360381019061067d91906133ef565b61146e565b005b34801561069057600080fd5b506106ab60048036038101906106a6919061304c565b6116ae565b005b3480156106b957600080fd5b506106c26117c4565b6040516106d092919061344f565b60405180910390f35b3480156106e557600080fd5b5061070060048036038101906106fb919061304c565b611816565b005b34801561070e57600080fd5b5061072960048036038101906107249190613478565b6118b9565b60405161073691906130c8565b60405180910390f35b34801561074b57600080fd5b506107666004803603810190610761919061315d565b611940565b005b34801561077457600080fd5b5061078f600480360381019061078a919061315d565b611b67565b005b60606040518060400160405280600881526020017f4d6f6f6e73686f74000000000000000000000000000000000000000000000000815250905090565b60006107db338484611c57565b6001905092915050565b600960000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461084257600080fd5b80600360006101000a81548160ff0219169083151502179055508015157f7fc281b886d2b464428d21902edc6f02d5d8badcefcaf0f1bafc043c51244be060405160405180910390a250565b3373ffffffffffffffffffffffffffffffffffffffff166108ad6112a5565b73ffffffffffffffffffffffffffffffffffffffff1614610903576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108fa90613504565b60405180910390fd5b816007600001819055508060076001018190555080827f64f84976d9c917a44796104a59950fdbd9b3c16a5dd348b546d738301f6bd06860405160405180910390a35050565b6127106012600a61095a9190613686565b6107b161096791906136d1565b600561097391906136d1565b61097d9190613742565b81565b737a250d5630b4cf539739df2c5dacb4c659f2488d81565b60006012600a6109a89190613686565b6107b16109b591906136d1565b905090565b73399ce78422f0bbe95d0ecc822db460a10da7eb3273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1603610a4d578073ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015610a47573d6000803e3d6000fd5b50610a52565b600080fd5b50565b3373ffffffffffffffffffffffffffffffffffffffff16610a746112a5565b73ffffffffffffffffffffffffffffffffffffffff1614610aca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ac190613504565b60405180910390fd5b60004711610b0d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b04906137bf565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015610b53573d6000803e3d6000fd5b50565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610d4b576000600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610cbf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cb69061382b565b60405180910390fd5b82600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540392505081905550505b610d56848484611e20565b90509392505050565b600960000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610dbc57600080fd5b600081118015610dcc5750600481105b610e0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e02906138bd565b60405180910390fd5b80600481905550807fb1af3fca46cbc4b6ceb19173da47e172fd99155f6c0cd5c0797cdd11056efd7860405160405180910390a250565b60006012905090565b7f0000000000000000000000002a58bd07f17648c6d62da41727134e98aca8c36a81565b6000600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b3373ffffffffffffffffffffffffffffffffffffffff16610ee46112a5565b73ffffffffffffffffffffffffffffffffffffffff1614610f3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3190613504565b60405180910390fd5b6000610f453061109e565b11610f85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7c9061394f565b60405180910390fd5b610f8d6124f5565b565b3373ffffffffffffffffffffffffffffffffffffffff16610fae6112a5565b73ffffffffffffffffffffffffffffffffffffffff1614611004576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ffb90613504565b60405180910390fd5b6001600d54148015611014575080155b61101d57600080fd5b828260038585905061102f919061396f565b81811061103f5761103e6139a3565b5b90506020020135600c81905550828260018585905061105e919061396f565b81811061106e5761106d6139a3565b5b90506020020135600c5410611086576110856139d2565b5b505050565b600b60019054906101000a900460ff1681565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b3373ffffffffffffffffffffffffffffffffffffffff166111066112a5565b73ffffffffffffffffffffffffffffffffffffffff161461115c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161115390613504565b60405180910390fd5b6111666000612662565b565b60078060000154908060010154905082565b6012600a6111889190613686565b6107b161119591906136d1565b81565b3373ffffffffffffffffffffffffffffffffffffffff166111b76112a5565b73ffffffffffffffffffffffffffffffffffffffff161461120d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120490613504565b60405180910390fd5b600b60029054906101000a900460ff1615801561122d57506000600d5414155b61123657600080fd5b600c54436112449190613a01565b600d60008282546112559190613a01565b925050819055506001600b60026101000a81548160ff0219169083151502179055507fea4359d5c4b8f0945a64ab9c37fe830b3407d45e0e6e6f84275977a570457d6f60405160405180910390a1565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600481526020017f4d4f4f4e00000000000000000000000000000000000000000000000000000000815250905090565b3373ffffffffffffffffffffffffffffffffffffffff1661132a6112a5565b73ffffffffffffffffffffffffffffffffffffffff1614611380576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137790613504565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036113b857600080fd5b80600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167f85649af0309729cae07d0c038ebb0ce8b1652c1e2e9226993e8123ac60022ba160405160405180910390a35050565b6000611466338484611e20565b905092915050565b3373ffffffffffffffffffffffffffffffffffffffff1661148d6112a5565b73ffffffffffffffffffffffffffffffffffffffff16146114e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114da90613504565b60405180910390fd5b60005b838390508110156116a857811515600e600086868581811061150b5761150a6139a3565b5b9050602002016020810190611520919061315d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515036115aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115a190613aa7565b60405180910390fd5b81600e60008686858181106115c2576115c16139a3565b5b90506020020160208101906115d7919061315d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555081151584848381811061163e5761163d6139a3565b5b9050602002016020810190611653919061315d565b73ffffffffffffffffffffffffffffffffffffffff167f3499bfcf9673677ba552f3fe2ea274ec7e6246da31c3c87e115b45a9b0db2efb60405160405180910390a380806116a090613ac7565b9150506114e6565b50505050565b3373ffffffffffffffffffffffffffffffffffffffff166116cd6112a5565b73ffffffffffffffffffffffffffffffffffffffff1614611723576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161171a90613504565b60405180910390fd5b801515600b60019054906101000a900460ff16151503611778576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176f90613b81565b60405180910390fd5b80600b60016101000a81548160ff0219169083151502179055508015157fb9bbb15e341600c8d067a0cadeba219905d5ba6d422b193c9c32265d26fc51c860405160405180910390a250565b60098060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905082565b3373ffffffffffffffffffffffffffffffffffffffff166118356112a5565b73ffffffffffffffffffffffffffffffffffffffff161461188b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188290613504565b60405180910390fd5b600b60029054906101000a900460ff161580156118a55750805b6118ae57600080fd5b6001600d8190555050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b3373ffffffffffffffffffffffffffffffffffffffff1661195f6112a5565b73ffffffffffffffffffffffffffffffffffffffff16146119b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119ac90613504565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611a23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a1a90613c13565b60405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611a5e9190613250565b602060405180830381865afa158015611a7b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a9f9190613c48565b905060008111611ae4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611adb90613ce7565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401611b1f929190613d07565b6020604051808303816000875af1158015611b3e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b629190613d45565b505050565b3373ffffffffffffffffffffffffffffffffffffffff16611b866112a5565b73ffffffffffffffffffffffffffffffffffffffff1614611bdc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bd390613504565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611c4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c4290613de4565b60405180910390fd5b611c5481612662565b50565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611cc6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cbd90613e50565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611d35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d2c90613e50565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611e1391906130c8565b60405180910390a3505050565b60008383600b60029054906101000a900460ff1680611e8f5750600960000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b80611ee35750600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611f22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f1990613ebc565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1603611f91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f8890613f4e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603612000576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ff790613fe0565b60405180910390fd5b600084148061201b5750600b60009054906101000a900460ff165b156120325761202b868686612726565b92506124ec565b7f0000000000000000000000002a58bd07f17648c6d62da41727134e98aca8c36a73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16141580156120d85750600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156121355750600960000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b156121ab576012600a6121489190613686565b6107b161215591906136d1565b61215e8661109e565b856121699190613a01565b11156121aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121a190614072565b60405180910390fd5b5b600360009054906101000a900460ff1680156122115750600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156122675750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156122c957600061227887876128c2565b905061228381612908565b43600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505b600b60019054906101000a900460ff1680156122f25750600b60009054906101000a900460ff16155b801561234a57507f0000000000000000000000002a58bd07f17648c6d62da41727134e98aca8c36a73ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614155b80156123a05750600e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156123f65750600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612404576124036124f5565b5b6000600b60009054906101000a900460ff16159050600e60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806124ba5750600e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156124c457600090505b80156124dd576124d58787876129f4565b9350506124ec565b6124e8878787612726565b9350505b50509392505050565b6001600b60006101000a81548160ff021916908315150217905550600061251b3061109e565b90506127106012600a61252e9190613686565b6107b161253b91906136d1565b600561254791906136d1565b6125519190613742565b8110806125635750612561612a3d565b155b1561256e5750612645565b60146127106012600a6125819190613686565b6107b161258e91906136d1565b600561259a91906136d1565b6125a49190613742565b6125ae91906136d1565b8111156125f85760146127106012600a6125c89190613686565b6107b16125d591906136d1565b60056125e191906136d1565b6125eb9190613742565b6125f591906136d1565b90505b600047905061260682612a68565b60008147612614919061396f565b9050600081111561264157612640600382600261263191906136d1565b61263b9190613742565b612c8f565b5b5050505b6000600b60006101000a81548160ff021916908315150217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600080600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156127ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127a5906140de565b60405180910390fd5b82600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555082600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461284a9190613a01565b925050819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516128ae91906130c8565b60405180910390a360019150509392505050565b60006128cd83612d24565b15806128df57506128dd82612d24565b155b6128e857600080fd5b6128f183612d24565b156128fe57819050612902565b8290505b92915050565b600080600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414806129ae575060014361295f9190613a01565b600454600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129ac9190613a01565b105b9050806129f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129e79061414a565b60405180910390fd5b5050565b600080612a02858585612d37565b90506000811115612a2857612a18853083612726565b508083612a25919061396f565b92505b612a33858585612726565b9150509392505050565b6000600d5443118015612a6357506002600f600043815260200190815260200160002054105b905090565b600f60004381526020019081526020016000206000815480929190612a8c90613ac7565b91905055506000600267ffffffffffffffff811115612aae57612aad61416a565b5b604051908082528060200260200182016040528015612adc5781602001602082028036833780820191505090505b5090503081600081518110612af457612af36139a3565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612b8d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bb191906141ae565b81600181518110612bc557612bc46139a3565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612c559594939291906142d4565b600060405180830381600087803b158015612c6f57600080fd5b505af1925050508015612c80575060015b612c8a5750612c8c565b505b50565b6000600960010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051612cda9061435f565b60006040518083038185875af1925050503d8060008114612d17576040519150601f19603f3d011682016040523d82523d6000602084013e612d1c565b606091505b505090505050565b600080823b905060008111915050919050565b6000600d546000108015612d4c575043600d54105b15612dd45760647f0000000000000000000000002a58bd07f17648c6d62da41727134e98aca8c36a73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614612db157600760000154612db8565b6007600101545b83612dc391906136d1565b612dcd9190613742565b9050612e53565b60647f0000000000000000000000002a58bd07f17648c6d62da41727134e98aca8c36a73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614612e3457600760000154612e3b565b6007600101545b83612e4691906136d1565b612e509190613742565b90505b9392505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612e94578082015181840152602081019050612e79565b60008484015250505050565b6000601f19601f8301169050919050565b6000612ebc82612e5a565b612ec68185612e65565b9350612ed6818560208601612e76565b612edf81612ea0565b840191505092915050565b60006020820190508181036000830152612f048184612eb1565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612f4182612f16565b9050919050565b612f5181612f36565b8114612f5c57600080fd5b50565b600081359050612f6e81612f48565b92915050565b6000819050919050565b612f8781612f74565b8114612f9257600080fd5b50565b600081359050612fa481612f7e565b92915050565b60008060408385031215612fc157612fc0612f0c565b5b6000612fcf85828601612f5f565b9250506020612fe085828601612f95565b9150509250929050565b60008115159050919050565b612fff81612fea565b82525050565b600060208201905061301a6000830184612ff6565b92915050565b61302981612fea565b811461303457600080fd5b50565b60008135905061304681613020565b92915050565b60006020828403121561306257613061612f0c565b5b600061307084828501613037565b91505092915050565b600080604083850312156130905761308f612f0c565b5b600061309e85828601612f95565b92505060206130af85828601612f95565b9150509250929050565b6130c281612f74565b82525050565b60006020820190506130dd60008301846130b9565b92915050565b6000819050919050565b60006131086131036130fe84612f16565b6130e3565b612f16565b9050919050565b600061311a826130ed565b9050919050565b600061312c8261310f565b9050919050565b61313c81613121565b82525050565b60006020820190506131576000830184613133565b92915050565b60006020828403121561317357613172612f0c565b5b600061318184828501612f5f565b91505092915050565b6000806000606084860312156131a3576131a2612f0c565b5b60006131b186828701612f5f565b93505060206131c286828701612f5f565b92505060406131d386828701612f95565b9150509250925092565b6000602082840312156131f3576131f2612f0c565b5b600061320184828501612f95565b91505092915050565b600060ff82169050919050565b6132208161320a565b82525050565b600060208201905061323b6000830184613217565b92915050565b61324a81612f36565b82525050565b60006020820190506132656000830184613241565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f8401126132905761328f61326b565b5b8235905067ffffffffffffffff8111156132ad576132ac613270565b5b6020830191508360208202830111156132c9576132c8613275565b5b9250929050565b6000806000604084860312156132e9576132e8612f0c565b5b600084013567ffffffffffffffff81111561330757613306612f11565b5b6133138682870161327a565b9350935050602061332686828701613037565b9150509250925092565b600060408201905061334560008301856130b9565b61335260208301846130b9565b9392505050565b600080604083850312156133705761336f612f0c565b5b600061337e85828601612f5f565b925050602061338f85828601613037565b9150509250929050565b60008083601f8401126133af576133ae61326b565b5b8235905067ffffffffffffffff8111156133cc576133cb613270565b5b6020830191508360208202830111156133e8576133e7613275565b5b9250929050565b60008060006040848603121561340857613407612f0c565b5b600084013567ffffffffffffffff81111561342657613425612f11565b5b61343286828701613399565b9350935050602061344586828701613037565b9150509250925092565b60006040820190506134646000830185613241565b6134716020830184613241565b9392505050565b6000806040838503121561348f5761348e612f0c565b5b600061349d85828601612f5f565b92505060206134ae85828601612f5f565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006134ee602083612e65565b91506134f9826134b8565b602082019050919050565b6000602082019050818103600083015261351d816134e1565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156135aa5780860481111561358657613585613524565b5b60018516156135955780820291505b80810290506135a385613553565b945061356a565b94509492505050565b6000826135c3576001905061367f565b816135d1576000905061367f565b81600181146135e757600281146135f157613620565b600191505061367f565b60ff84111561360357613602613524565b5b8360020a91508482111561361a57613619613524565b5b5061367f565b5060208310610133831016604e8410600b84101617156136555782820a9050838111156136505761364f613524565b5b61367f565b6136628484846001613560565b9250905081840481111561367957613678613524565b5b81810290505b9392505050565b600061369182612f74565b915061369c8361320a565b92506136c97fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846135b3565b905092915050565b60006136dc82612f74565b91506136e783612f74565b92508282026136f581612f74565b9150828204841483151761370c5761370b613524565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061374d82612f74565b915061375883612f74565b92508261376857613767613713565b5b828204905092915050565b7f546f6b656e3a206e6f2065746820746f20636c65617200000000000000000000600082015250565b60006137a9601683612e65565b91506137b482613773565b602082019050919050565b600060208201905081810360008301526137d88161379c565b9050919050565b7f45524332303a20696e73756666696369656e7420416c6c6f77616e6365000000600082015250565b6000613815601d83612e65565b9150613820826137df565b602082019050919050565b6000602082019050818103600083015261384481613808565b9050919050565b7f546f6b656e3a206f6e6c7920747261646520636f6f6c646f776e2076616c756560008201527f7320696e2072616e67652028302c3429207065726d69737369626c6500000000602082015250565b60006138a7603c83612e65565b91506138b28261384b565b604082019050919050565b600060208201905081810360008301526138d68161389a565b9050919050565b7f546f6b656e3a206e6f20636f6e747261637420746f6b656e7320746f20636c6560008201527f6172000000000000000000000000000000000000000000000000000000000000602082015250565b6000613939602283612e65565b9150613944826138dd565b604082019050919050565b600060208201905081810360008301526139688161392c565b9050919050565b600061397a82612f74565b915061398583612f74565b925082820390508181111561399d5761399c613524565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b6000613a0c82612f74565b9150613a1783612f74565b9250828201905080821115613a2f57613a2e613524565b5b92915050565b7f546f6b656e3a206164647265737320616c7265616479207b73686f756c64457860008201527f636c7564657d0000000000000000000000000000000000000000000000000000602082015250565b6000613a91602683612e65565b9150613a9c82613a35565b604082019050919050565b60006020820190508181036000830152613ac081613a84565b9050919050565b6000613ad282612f74565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613b0457613b03613524565b5b600182019050919050565b7f546f6b656e3a2073776170456e61626c656420616c7265616479207b73686f7560008201527f6c64456e61626c657d0000000000000000000000000000000000000000000000602082015250565b6000613b6b602983612e65565b9150613b7682613b0f565b604082019050919050565b60006020820190508181036000830152613b9a81613b5e565b9050919050565b7f546f6b656e3a2063616e277420636c65617220636f6e747261637420746f6b6560008201527f6e00000000000000000000000000000000000000000000000000000000000000602082015250565b6000613bfd602183612e65565b9150613c0882613ba1565b604082019050919050565b60006020820190508181036000830152613c2c81613bf0565b9050919050565b600081519050613c4281612f7e565b92915050565b600060208284031215613c5e57613c5d612f0c565b5b6000613c6c84828501613c33565b91505092915050565b7f546f6b656e3a206e6f7420656e6f75676820746f6b656e7320746f20636c656160008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b6000613cd1602183612e65565b9150613cdc82613c75565b604082019050919050565b60006020820190508181036000830152613d0081613cc4565b9050919050565b6000604082019050613d1c6000830185613241565b613d2960208301846130b9565b9392505050565b600081519050613d3f81613020565b92915050565b600060208284031215613d5b57613d5a612f0c565b5b6000613d6984828501613d30565b91505092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613dce602683612e65565b9150613dd982613d72565b604082019050919050565b60006020820190508181036000830152613dfd81613dc1565b9050919050565b7f45524332303a207a65726f204164647265737300000000000000000000000000600082015250565b6000613e3a601383612e65565b9150613e4582613e04565b602082019050919050565b60006020820190508181036000830152613e6981613e2d565b9050919050565b7f546f6b656e3a2054726164696e67206973206e6f74206163746976652e000000600082015250565b6000613ea6601d83612e65565b9150613eb182613e70565b602082019050919050565b60006020820190508181036000830152613ed581613e99565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613f38602583612e65565b9150613f4382613edc565b604082019050919050565b60006020820190508181036000830152613f6781613f2b565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613fca602383612e65565b9150613fd582613f6e565b604082019050919050565b60006020820190508181036000830152613ff981613fbd565b9050919050565b7f546f6b656e3a206d61782077616c6c657420616d6f756e74206578636565646560008201527f6400000000000000000000000000000000000000000000000000000000000000602082015250565b600061405c602183612e65565b915061406782614000565b604082019050919050565b6000602082019050818103600083015261408b8161404f565b9050919050565b7f546f6b656e3a20696e73756666696369656e742042616c616e63650000000000600082015250565b60006140c8601b83612e65565b91506140d382614092565b602082019050919050565b600060208201905081810360008301526140f7816140bb565b9050919050565b7f4d6178207478206672657175656e637920657863656564656421000000000000600082015250565b6000614134601a83612e65565b915061413f826140fe565b602082019050919050565b6000602082019050818103600083015261416381614127565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000815190506141a881612f48565b92915050565b6000602082840312156141c4576141c3612f0c565b5b60006141d284828501614199565b91505092915050565b6000819050919050565b60006142006141fb6141f6846141db565b6130e3565b612f74565b9050919050565b614210816141e5565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61424b81612f36565b82525050565b600061425d8383614242565b60208301905092915050565b6000602082019050919050565b600061428182614216565b61428b8185614221565b935061429683614232565b8060005b838110156142c75781516142ae8882614251565b97506142b983614269565b92505060018101905061429a565b5085935050505092915050565b600060a0820190506142e960008301886130b9565b6142f66020830187614207565b81810360408301526143088186614276565b90506143176060830185613241565b61432460808301846130b9565b9695505050505050565b600081905092915050565b50565b600061434960008361432e565b915061435482614339565b600082019050919050565b600061436a8261433c565b915081905091905056fea26469706673582212205c4a6ecd2b7485634fbd8b1f5e92f5e448308ceda9d37262e4b116bb42d2b9c364736f6c63430008130033

Deployed Bytecode Sourcemap

2504:13033:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5906:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6242:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14508:176;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8052:213;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2948:65;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3765:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5636:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13036:209;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9219:180;;;;;;;;;;;;;:::i;:::-;;6878:492;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14692:352;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5730:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3865:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8703:123;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9803:164;;;;;;;;;;;;;:::i;:::-;;9550:245;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3938:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5992:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2022:94;;;;;;;;;;;;;:::i;:::-;;3517:51;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;2892:49;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15282:215;;;;;;;;;;;;;:::i;:::-;;1803:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5816:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15052:222;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6727:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8273:422;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7806:238;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3577:179;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;9407:135;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6101:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8834:377;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2124:192;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5906:80;5954:13;5978:5;;;;;;;;;;;;;;;;;5971:12;;5906:80;:::o;6242:161::-;6319:4;6336:37;6345:10;6357:7;6366:6;6336:8;:37::i;:::-;6391:4;6384:11;;6242:161;;;;:::o;14508:176::-;14586:7;:22;;;;;;;;;;;;14572:36;;:10;:36;;;14564:45;;;;;;14630:6;14620:7;;:16;;;;;;;;;;;;;;;;;;14669:6;14654:22;;;;;;;;;;;;14508:176;:::o;8052:213::-;1947:10;1936:21;;:7;:5;:7::i;:::-;:21;;;1928:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;8161:7:::1;8140:11;:18;;:28;;;;8201:8;8179:11;:19;;:30;;;;8248:8;8239:7;8227:30;;;;;;;;;;8052:213:::0;;:::o;2948:65::-;3008:5;2684:2;3065;:13;;;;:::i;:::-;2863:4;:22;;;;:::i;:::-;2989:1;:16;;;;:::i;:::-;:24;;;;:::i;:::-;2948:65;:::o;3765:93::-;3815:42;3765:93;:::o;5636:88::-;5691:7;2684:2;3065;:13;;;;:::i;:::-;2863:4;:22;;;;:::i;:::-;5702:19;;5636:88;:::o;13036:209::-;13107:42;13093:56;;:10;:56;;;13090:147;;13172:6;13164:24;;:49;13190:21;13164:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13090:147;;;13229:8;;;13090:147;13036:209;:::o;9219:180::-;1947:10;1936:21;;:7;:5;:7::i;:::-;:21;;;1928:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;9301:1:::1;9277:21;:25;9269:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;9348:10;9340:28;;:51;9369:21;9340:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;9219:180::o:0;6878:492::-;6969:4;7024:17;6989:11;:19;7001:6;6989:19;;;;;;;;;;;;;;;:31;7009:10;6989:31;;;;;;;;;;;;;;;;:52;6986:323;;7057:24;7084:11;:19;7096:6;7084:19;;;;;;;;;;;;;;;:31;7104:10;7084:31;;;;;;;;;;;;;;;;7057:58;;7158:6;7138:16;:26;;7130:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7276:6;7241:11;:19;7253:6;7241:19;;;;;;;;;;;;;;;:31;7261:10;7241:31;;;;;;;;;;;;;;;;:41;;;;;;;;;;;7042:267;6986:323;7326:36;7336:6;7344:9;7355:6;7326:9;:36::i;:::-;7319:43;;6878:492;;;;;:::o;14692:352::-;14786:7;:22;;;;;;;;;;;;14772:36;;:10;:36;;;14764:45;;;;;;14847:1;14828:16;:20;:44;;;;;14871:1;14852:16;:20;14828:44;14820:117;;;;;;;;;;;;:::i;:::-;;;;;;;;;14964:16;14948:13;:32;;;;15019:16;14998:38;;;;;;;;;;14692:352;:::o;5730:80::-;5782:5;2684:2;5791:16;;5730:80;:::o;3865:38::-;;;:::o;8703:123::-;8768:4;8792:17;:26;8810:7;8792:26;;;;;;;;;;;;;;;;;;;;;;;;;8785:33;;8703:123;;;:::o;9803:164::-;1947:10;1936:21;;:7;:5;:7::i;:::-;:21;;;1928:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;9894:1:::1;9867:24;9885:4;9867:9;:24::i;:::-;:28;9859:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;9945:14;:12;:14::i;:::-;9803:164::o:0;9550:245::-;1947:10;1936:21;;:7;:5;:7::i;:::-;:21;;;1928:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;9675:1:::1;9659:12;;:17;:29;;;;;9681:7;9680:8;9659:29;9651:38;;;::::0;::::1;;9709:7;;9732:1;9717:7;;:14;;:16;;;;:::i;:::-;9709:25;;;;;;;:::i;:::-;;;;;;;;9700:6;:34;;;;9761:7;;9784:1;9769:7;;:14;;:16;;;;:::i;:::-;9761:25;;;;;;;:::i;:::-;;;;;;;;9752:6;;:34;9745:42;;;;:::i;:::-;;9550:245:::0;;;:::o;3938:30::-;;;;;;;;;;;;;:::o;5992:103::-;6058:7;6075:9;:18;6085:7;6075:18;;;;;;;;;;;;;;;;6068:25;;5992:103;;;:::o;2022:94::-;1947:10;1936:21;;:7;:5;:7::i;:::-;:21;;;1928:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;2087:21:::1;2105:1;2087:9;:21::i;:::-;2022:94::o:0;3517:51::-;;;;;;;;;;;;;;:::o;2892:49::-;2684:2;3065;:13;;;;:::i;:::-;2863:4;:22;;;;:::i;:::-;2892:49;:::o;15282:215::-;1947:10;1936:21;;:7;:5;:7::i;:::-;:21;;;1928:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;15346:13:::1;;;;;;;;;;;15345:14;:35;;;;;15379:1;15363:12;;:17;;15345:35;15337:44;;;::::0;::::1;;15419:6;;15406:12;:19;;;;:::i;:::-;15392:12;;:33;;;;;;;:::i;:::-;;;;;;;;15452:4;15436:13;;:20;;;;;;;;;;;;;;;;;;15474:15;;;;;;;;;;15282:215::o:0;1803:87::-;1849:7;1876:6;;;;;;;;;;;1869:13;;1803:87;:::o;5816:84::-;5866:13;5890:7;;;;;;;;;;;;;;;;;5883:14;;5816:84;:::o;15052:222::-;1947:10;1936:21;;:7;:5;:7::i;:::-;:21;;;1928:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;15165:4:::1;15146:24;;:7;:24;;::::0;15138:33:::1;;;::::0;::::1;;15210:5;15182:16;:25;15199:7;15182:25;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;15260:5;15233:33;;15251:7;15233:33;;;;;;;;;;;;15052:222:::0;;:::o;6727:143::-;6798:4;6822:40;6832:10;6844:9;6855:6;6822:9;:40::i;:::-;6815:47;;6727:143;;;;:::o;8273:422::-;1947:10;1936:21;;:7;:5;:7::i;:::-;:21;;;1928:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;8397:9:::1;8393:295;8416:8;;:15;;8412:1;:19;8393:295;;;8495:13;8461:47;;:17;:30;8479:8;;8488:1;8479:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;8461:30;;;;;;;;;;;;;;;;;;;;;;;;;:47;;::::0;8453:98:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;8599:13;8566:17;:30;8584:8;;8593:1;8584:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;8566:30;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;8662:13;8632:44;;8649:8;;8658:1;8649:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;8632:44;;;;;;;;;;;;8433:3;;;;;:::i;:::-;;;;8393:295;;;;8273:422:::0;;;:::o;7806:238::-;1947:10;1936:21;;:7;:5;:7::i;:::-;:21;;;1928:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;7898:12:::1;7883:27;;:11;;;;;;;;;;;:27;;::::0;7875:81:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;7981:12;7967:11;;:26;;;;;;;;;;;;;;;;;;8023:12;8011:25;;;;;;;;;;;;7806:238:::0;:::o;3577:179::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;9407:135::-;1947:10;1936:21;;:7;:5;:7::i;:::-;:21;;;1928:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;9477:13:::1;;;;;;;;;;;9476:14;:22;;;;;9494:4;9476:22;9468:31;;;::::0;::::1;;9525:1;9510:12;:16;;;;9407:135:::0;:::o;6101:133::-;6185:7;6203:11;:19;6215:6;6203:19;;;;;;;;;;;;;;;:28;6223:7;6203:28;;;;;;;;;;;;;;;;6196:35;;6101:133;;;;:::o;8834:377::-;1947:10;1936:21;;:7;:5;:7::i;:::-;:21;;;1928:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;8939:4:::1;8915:29;;:12;:29;;::::0;8907:75:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;8993:21;9024:12;9017:30;;;9056:4;9017:45;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8993:69;;9097:1;9081:13;:17;9073:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;9154:12;9147:29;;;9177:10;9189:13;9147:56;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;8896:315;8834:377:::0;:::o;2124:192::-;1947:10;1936:21;;:7;:5;:7::i;:::-;:21;;;1928:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;2233:1:::1;2213:22;;:8;:22;;::::0;2205:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;2289:19;2299:8;2289:9;:19::i;:::-;2124:192:::0;:::o;6411:308::-;6524:1;6506:20;;:6;:20;;;6498:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;6588:1;6569:21;;:7;:21;;;6561:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;6656:6;6625:11;:19;6637:6;6625:19;;;;;;;;;;;;;;;:28;6645:7;6625:28;;;;;;;;;;;;;;;:37;;;;6695:7;6678:33;;6687:6;6678:33;;;6704:6;6678:33;;;;;;:::i;:::-;;;;;;;;6411:308;;;:::o;9975:1322::-;10076:4;10048;10054:2;4814:13;;;;;;;;;;;:47;;;;4839:7;:22;;;;;;;;;;;;4831:30;;:4;:30;;;4814:47;:74;;;;4865:17;:23;4883:4;4865:23;;;;;;;;;;;;;;;;;;;;;;;;;4814:74;4806:116;;;;;;;;;;;;:::i;:::-;;;;;;;;;10117:1:::1;10101:18;;:4;:18;;::::0;10093:68:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;10194:1;10180:16;;:2;:16;;::::0;10172:64:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;10270:1;10260:6;:11;:21;;;;10275:6;;;;;;;;;;;10260:21;10257:103;;;10305:32;10320:4;10326:2;10330:6;10305:14;:32::i;:::-;10298:39;;;;10257:103;10390:13;10384:19;;:2;:19;;;;:45;;;;;10408:17;:21;10426:2;10408:21;;;;;;;;;;;;;;;;;;;;;;;;;10407:22;10384:45;:77;;;;;10439:7;:22;;;;;;;;;;;;10433:28;;:2;:28;;;;10384:77;10380:192;;;2684:2;3065;:13;;;;:::i;:::-;2863:4;:22;;;;:::i;:::-;10495:13;10505:2;10495:9;:13::i;:::-;10486:6;:22;;;;:::i;:::-;:36;;10478:82;;;;;;;;;;;;:::i;:::-;;;;;;;;;10380:192;10587:7;;;;;;;;;;;:34;;;;;10599:16;:22;10616:4;10599:22;;;;;;;;;;;;;;;;;;;;;;;;;10598:23;10587:34;:59;;;;;10626:16;:20;10643:2;10626:20;;;;;;;;;;;;;;;;;;;;;;;;;10625:21;10587:59;10584:224;;;10662:13;10678:24;10693:4;10699:2;10678:14;:24::i;:::-;10662:40;;10717:27;10738:5;10717:20;:27::i;:::-;10784:12;10759:15;:22;10775:5;10759:22;;;;;;;;;;;;;;;:37;;;;10647:161;10584:224;10829:11;;;;;;;;;;;:22;;;;;10845:6;;;;;;;;;;;10844:7;10829:22;:47;;;;;10863:13;10855:21;;:4;:21;;;;10829:47;:75;;;;;10881:17;:23;10899:4;10881:23;;;;;;;;;;;;;;;;;;;;;;;;;10880:24;10829:75;:101;;;;;10909:17;:21;10927:2;10909:21;;;;;;;;;;;;;;;;;;;;;;;;;10908:22;10829:101;10826:146;;;10946:14;:12;:14::i;:::-;10826:146;10993:12;11009:6;;;;;;;;;;;11008:7;10993:22;;11029:17;:23;11047:4;11029:23;;;;;;;;;;;;;;;;;;;;;;;;;:48;;;;11056:17;:21;11074:2;11056:21;;;;;;;;;;;;;;;;;;;;;;;;;11029:48;11026:95;;;11104:5;11094:15;;11026:95;11152:7;11149:132;;;11181:32;11196:4;11202:2;11206:6;11181:14;:32::i;:::-;11174:39;;;;;11149:132;11249:32;11264:4;11270:2;11274:6;11249:14;:32::i;:::-;11242:39;;;4933:1;9975:1322:::0;;;;;;;:::o;12280:591::-;4691:4;4682:6;;:13;;;;;;;;;;;;;;;;;;12335:23:::1;12361:24;12379:4;12361:9;:24::i;:::-;12335:50;;3008:5;2684:2;3065;:13;;;;:::i;:::-;2863:4;:22;;;;:::i;:::-;2989:1;:16;;;;:::i;:::-;:24;;;;:::i;:::-;12399:15;:32;:46;;;;12436:9;:7;:9::i;:::-;12435:10;12399:46;12396:177;;;12461:7;;;12396:177;12521:2;3008:5;2684:2;3065;:13;;;;:::i;:::-;2863:4;:22;;;;:::i;:::-;2989:1;:16;;;;:::i;:::-;:24;;;;:::i;:::-;12504:19;;;;:::i;:::-;12486:15;:37;12483:90;;;12571:2;3008:5;2684:2;3065;:13;;;;:::i;:::-;2863:4;:22;;;;:::i;:::-;2989:1;:16;;;;:::i;:::-;:24;;;;:::i;:::-;12554:19;;;;:::i;:::-;12536:37;;12483:90;12594:25;12622:21;12594:49;;12656:33;12673:15;12656:16;:33::i;:::-;12711:18;12756:17;12732:21;:41;;;;:::i;:::-;12711:62;;12800:1;12787:10;:14;12784:80;;;12829:23;12850:1;12839:10;12837:1;:12;;;;:::i;:::-;:14;;;;:::i;:::-;12829:7;:23::i;:::-;12784:80;12321:550;;;4706:1;4727:5:::0;4718:6;;:14;;;;;;;;;;;;;;;;;;12280:591::o;2324:173::-;2380:16;2399:6;;;;;;;;;;;2380:25;;2425:8;2416:6;;:17;;;;;;;;;;;;;;;;;;2480:8;2449:40;;2470:8;2449:40;;;;;;;;;;;;2369:128;2324:173;:::o;7378:420::-;7471:4;7488:21;7512:9;:17;7522:6;7512:17;;;;;;;;;;;;;;;;7488:41;;7565:6;7548:13;:23;;7540:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;7659:6;7638:9;:17;7648:6;7638:17;;;;;;;;;;;;;;;;:27;;;;;;;;;;;7711:6;7687:9;:20;7697:9;7687:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;7750:9;7733:35;;7742:6;7733:35;;;7761:6;7733:35;;;;;;:::i;:::-;;;;;;;;7786:4;7779:11;;;7378:420;;;;;:::o;14016:219::-;14090:7;14119:15;14130:3;14119:10;:15::i;:::-;14118:16;:38;;;;14139:17;14150:5;14139:10;:17::i;:::-;14138:18;14118:38;14110:47;;;;;;14172:15;14183:3;14172:10;:15::i;:::-;14168:59;;;14196:5;14189:12;;;;14168:59;14224:3;14217:10;;14016:219;;;;;:::o;14243:257::-;14311:14;14353:1;14328:15;:21;14344:4;14328:21;;;;;;;;;;;;;;;;:26;:105;;;;14430:1;14415:12;:16;;;;:::i;:::-;14397:13;;14373:15;:21;14389:4;14373:21;;;;;;;;;;;;;;;;:37;;;;:::i;:::-;14372:60;14328:105;14311:122;;14452:9;14444:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;14300:200;14243:257;:::o;11305:326::-;11388:4;11405:12;11420:26;11429:4;11435:2;11439:6;11420:8;:26::i;:::-;11405:41;;11471:1;11464:4;:8;11461:113;;;11492:41;11507:4;11521;11528;11492:14;:41::i;:::-;;11558:4;11548:14;;;;;:::i;:::-;;;11461:113;11591:32;11606:4;11612:2;11616:6;11591:14;:32::i;:::-;11584:39;;;11305:326;;;;;:::o;12132:140::-;12173:4;12212:12;;12197;:27;:67;;;;;12263:1;12228:18;:32;12247:12;12228:32;;;;;;;;;;;;:36;12197:67;12190:74;;12132:140;:::o;13253:552::-;13319:18;:32;13338:12;13319:32;;;;;;;;;;;;:34;;;;;;;;;:::i;:::-;;;;;;13424:21;13462:1;13448:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13424:40;;13493:4;13475;13480:1;13475:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;3815:42;13519:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13509:4;13514:1;13509:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;3815:42;13558:66;;;13639:11;13665:1;13709:4;13736;13756:15;13558:214;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13554:244;;13790:7;;;13554:244;13308:497;13253:552;;:::o;12879:149::-;12935:12;12960:7;:23;;;;;;;;;;;;12952:37;;12997:9;12952:59;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12934:77;;;12923:105;12879:149;:::o;13813:195::-;13872:4;13889:12;13956:7;13944:20;13936:28;;13999:1;13992:4;:8;13985:15;;;13813:195;;;:::o;11639:485::-;11721:12;11754;;11750:1;:16;:47;;;;;11785:12;11770;;:27;11750:47;11746:371;;;3127:3;11837:13;11831:19;;:2;:19;;;:76;;11889:11;:18;;;11831:76;;;11867:11;:19;;;11831:76;11821:6;:87;;;;:::i;:::-;:104;;;;:::i;:::-;11814:111;;11746:371;;;3127:3;12004:13;11996:21;;:4;:21;;;:78;;12056:11;:18;;;11996:78;;;12034:11;:19;;;11996:78;11986:6;:89;;;;:::i;:::-;:107;;;;:::i;:::-;11979:114;;11746:371;11639:485;;;;;:::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;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:116::-;3516:21;3531:5;3516:21;:::i;:::-;3509:5;3506:32;3496:60;;3552:1;3549;3542:12;3496:60;3446:116;:::o;3568:133::-;3611:5;3649:6;3636:20;3627:29;;3665:30;3689:5;3665:30;:::i;:::-;3568:133;;;;:::o;3707:323::-;3763:6;3812:2;3800:9;3791:7;3787:23;3783:32;3780:119;;;3818:79;;:::i;:::-;3780:119;3938:1;3963:50;4005:7;3996:6;3985:9;3981:22;3963:50;:::i;:::-;3953:60;;3909:114;3707:323;;;;:::o;4036:474::-;4104:6;4112;4161:2;4149:9;4140:7;4136:23;4132:32;4129:119;;;4167:79;;:::i;:::-;4129:119;4287:1;4312:53;4357:7;4348:6;4337:9;4333:22;4312:53;:::i;:::-;4302:63;;4258:117;4414:2;4440:53;4485:7;4476:6;4465:9;4461:22;4440:53;:::i;:::-;4430:63;;4385:118;4036:474;;;;;:::o;4516:118::-;4603:24;4621:5;4603:24;:::i;:::-;4598:3;4591:37;4516:118;;:::o;4640:222::-;4733:4;4771:2;4760:9;4756:18;4748:26;;4784:71;4852:1;4841:9;4837:17;4828:6;4784:71;:::i;:::-;4640:222;;;;:::o;4868:60::-;4896:3;4917:5;4910:12;;4868:60;;;:::o;4934:142::-;4984:9;5017:53;5035:34;5044:24;5062:5;5044:24;:::i;:::-;5035:34;:::i;:::-;5017:53;:::i;:::-;5004:66;;4934:142;;;:::o;5082:126::-;5132:9;5165:37;5196:5;5165:37;:::i;:::-;5152:50;;5082:126;;;:::o;5214:140::-;5278:9;5311:37;5342:5;5311:37;:::i;:::-;5298:50;;5214:140;;;:::o;5360:159::-;5461:51;5506:5;5461:51;:::i;:::-;5456:3;5449:64;5360:159;;:::o;5525:250::-;5632:4;5670:2;5659:9;5655:18;5647:26;;5683:85;5765:1;5754:9;5750:17;5741:6;5683:85;:::i;:::-;5525:250;;;;:::o;5781:329::-;5840:6;5889:2;5877:9;5868:7;5864:23;5860:32;5857:119;;;5895:79;;:::i;:::-;5857:119;6015:1;6040:53;6085:7;6076:6;6065:9;6061:22;6040:53;:::i;:::-;6030:63;;5986:117;5781:329;;;;:::o;6116:619::-;6193:6;6201;6209;6258:2;6246:9;6237:7;6233:23;6229:32;6226:119;;;6264:79;;:::i;:::-;6226:119;6384:1;6409:53;6454:7;6445:6;6434:9;6430:22;6409:53;:::i;:::-;6399:63;;6355:117;6511:2;6537:53;6582:7;6573:6;6562:9;6558:22;6537:53;:::i;:::-;6527:63;;6482:118;6639:2;6665:53;6710:7;6701:6;6690:9;6686:22;6665:53;:::i;:::-;6655:63;;6610:118;6116:619;;;;;:::o;6741:329::-;6800:6;6849:2;6837:9;6828:7;6824:23;6820:32;6817:119;;;6855:79;;:::i;:::-;6817:119;6975:1;7000:53;7045:7;7036:6;7025:9;7021:22;7000:53;:::i;:::-;6990:63;;6946:117;6741:329;;;;:::o;7076:86::-;7111:7;7151:4;7144:5;7140:16;7129:27;;7076:86;;;:::o;7168:112::-;7251:22;7267:5;7251:22;:::i;:::-;7246:3;7239:35;7168:112;;:::o;7286:214::-;7375:4;7413:2;7402:9;7398:18;7390:26;;7426:67;7490:1;7479:9;7475:17;7466:6;7426:67;:::i;:::-;7286:214;;;;:::o;7506:118::-;7593:24;7611:5;7593:24;:::i;:::-;7588:3;7581:37;7506:118;;:::o;7630:222::-;7723:4;7761:2;7750:9;7746:18;7738:26;;7774:71;7842:1;7831:9;7827:17;7818:6;7774:71;:::i;:::-;7630:222;;;;:::o;7858:117::-;7967:1;7964;7957:12;7981:117;8090:1;8087;8080:12;8104:117;8213:1;8210;8203:12;8244:568;8317:8;8327:6;8377:3;8370:4;8362:6;8358:17;8354:27;8344:122;;8385:79;;:::i;:::-;8344:122;8498:6;8485:20;8475:30;;8528:18;8520:6;8517:30;8514:117;;;8550:79;;:::i;:::-;8514:117;8664:4;8656:6;8652:17;8640:29;;8718:3;8710:4;8702:6;8698:17;8688:8;8684:32;8681:41;8678:128;;;8725:79;;:::i;:::-;8678:128;8244:568;;;;;:::o;8818:698::-;8910:6;8918;8926;8975:2;8963:9;8954:7;8950:23;8946:32;8943:119;;;8981:79;;:::i;:::-;8943:119;9129:1;9118:9;9114:17;9101:31;9159:18;9151:6;9148:30;9145:117;;;9181:79;;:::i;:::-;9145:117;9294:80;9366:7;9357:6;9346:9;9342:22;9294:80;:::i;:::-;9276:98;;;;9072:312;9423:2;9449:50;9491:7;9482:6;9471:9;9467:22;9449:50;:::i;:::-;9439:60;;9394:115;8818:698;;;;;:::o;9522:332::-;9643:4;9681:2;9670:9;9666:18;9658:26;;9694:71;9762:1;9751:9;9747:17;9738:6;9694:71;:::i;:::-;9775:72;9843:2;9832:9;9828:18;9819:6;9775:72;:::i;:::-;9522:332;;;;;:::o;9860:468::-;9925:6;9933;9982:2;9970:9;9961:7;9957:23;9953:32;9950:119;;;9988:79;;:::i;:::-;9950:119;10108:1;10133:53;10178:7;10169:6;10158:9;10154:22;10133:53;:::i;:::-;10123:63;;10079:117;10235:2;10261:50;10303:7;10294:6;10283:9;10279:22;10261:50;:::i;:::-;10251:60;;10206:115;9860:468;;;;;:::o;10351:568::-;10424:8;10434:6;10484:3;10477:4;10469:6;10465:17;10461:27;10451:122;;10492:79;;:::i;:::-;10451:122;10605:6;10592:20;10582:30;;10635:18;10627:6;10624:30;10621:117;;;10657:79;;:::i;:::-;10621:117;10771:4;10763:6;10759:17;10747:29;;10825:3;10817:4;10809:6;10805:17;10795:8;10791:32;10788:41;10785:128;;;10832:79;;:::i;:::-;10785:128;10351:568;;;;;:::o;10925:698::-;11017:6;11025;11033;11082:2;11070:9;11061:7;11057:23;11053:32;11050:119;;;11088:79;;:::i;:::-;11050:119;11236:1;11225:9;11221:17;11208:31;11266:18;11258:6;11255:30;11252:117;;;11288:79;;:::i;:::-;11252:117;11401:80;11473:7;11464:6;11453:9;11449:22;11401:80;:::i;:::-;11383:98;;;;11179:312;11530:2;11556:50;11598:7;11589:6;11578:9;11574:22;11556:50;:::i;:::-;11546:60;;11501:115;10925:698;;;;;:::o;11629:332::-;11750:4;11788:2;11777:9;11773:18;11765:26;;11801:71;11869:1;11858:9;11854:17;11845:6;11801:71;:::i;:::-;11882:72;11950:2;11939:9;11935:18;11926:6;11882:72;:::i;:::-;11629:332;;;;;:::o;11967:474::-;12035:6;12043;12092:2;12080:9;12071:7;12067:23;12063:32;12060:119;;;12098:79;;:::i;:::-;12060:119;12218:1;12243:53;12288:7;12279:6;12268:9;12264:22;12243:53;:::i;:::-;12233:63;;12189:117;12345:2;12371:53;12416:7;12407:6;12396:9;12392:22;12371:53;:::i;:::-;12361:63;;12316:118;11967:474;;;;;:::o;12447:182::-;12587:34;12583:1;12575:6;12571:14;12564:58;12447:182;:::o;12635:366::-;12777:3;12798:67;12862:2;12857:3;12798:67;:::i;:::-;12791:74;;12874:93;12963:3;12874:93;:::i;:::-;12992:2;12987:3;12983:12;12976:19;;12635:366;;;:::o;13007:419::-;13173:4;13211:2;13200:9;13196:18;13188:26;;13260:9;13254:4;13250:20;13246:1;13235:9;13231:17;13224:47;13288:131;13414:4;13288:131;:::i;:::-;13280:139;;13007:419;;;:::o;13432:180::-;13480:77;13477:1;13470:88;13577:4;13574:1;13567:15;13601:4;13598:1;13591:15;13618:102;13660:8;13707:5;13704:1;13700:13;13679:34;;13618:102;;;:::o;13726:848::-;13787:5;13794:4;13818:6;13809:15;;13842:5;13833:14;;13856:712;13877:1;13867:8;13864:15;13856:712;;;13972:4;13967:3;13963:14;13957:4;13954:24;13951:50;;;13981:18;;:::i;:::-;13951:50;14031:1;14021:8;14017:16;14014:451;;;14446:4;14439:5;14435:16;14426:25;;14014:451;14496:4;14490;14486:15;14478:23;;14526:32;14549:8;14526:32;:::i;:::-;14514:44;;13856:712;;;13726:848;;;;;;;:::o;14580:1073::-;14634:5;14825:8;14815:40;;14846:1;14837:10;;14848:5;;14815:40;14874:4;14864:36;;14891:1;14882:10;;14893:5;;14864:36;14960:4;15008:1;15003:27;;;;15044:1;15039:191;;;;14953:277;;15003:27;15021:1;15012:10;;15023:5;;;15039:191;15084:3;15074:8;15071:17;15068:43;;;15091:18;;:::i;:::-;15068:43;15140:8;15137:1;15133:16;15124:25;;15175:3;15168:5;15165:14;15162:40;;;15182:18;;:::i;:::-;15162:40;15215:5;;;14953:277;;15339:2;15329:8;15326:16;15320:3;15314:4;15311:13;15307:36;15289:2;15279:8;15276:16;15271:2;15265:4;15262:12;15258:35;15242:111;15239:246;;;15395:8;15389:4;15385:19;15376:28;;15430:3;15423:5;15420:14;15417:40;;;15437:18;;:::i;:::-;15417:40;15470:5;;15239:246;15510:42;15548:3;15538:8;15532:4;15529:1;15510:42;:::i;:::-;15495:57;;;;15584:4;15579:3;15575:14;15568:5;15565:25;15562:51;;;15593:18;;:::i;:::-;15562:51;15642:4;15635:5;15631:16;15622:25;;14580:1073;;;;;;:::o;15659:281::-;15717:5;15741:23;15759:4;15741:23;:::i;:::-;15733:31;;15785:25;15801:8;15785:25;:::i;:::-;15773:37;;15829:104;15866:66;15856:8;15850:4;15829:104;:::i;:::-;15820:113;;15659:281;;;;:::o;15946:410::-;15986:7;16009:20;16027:1;16009:20;:::i;:::-;16004:25;;16043:20;16061:1;16043:20;:::i;:::-;16038:25;;16098:1;16095;16091:9;16120:30;16138:11;16120:30;:::i;:::-;16109:41;;16299:1;16290:7;16286:15;16283:1;16280:22;16260:1;16253:9;16233:83;16210:139;;16329:18;;:::i;:::-;16210:139;15994:362;15946:410;;;;:::o;16362:180::-;16410:77;16407:1;16400:88;16507:4;16504:1;16497:15;16531:4;16528:1;16521:15;16548:185;16588:1;16605:20;16623:1;16605:20;:::i;:::-;16600:25;;16639:20;16657:1;16639:20;:::i;:::-;16634:25;;16678:1;16668:35;;16683:18;;:::i;:::-;16668:35;16725:1;16722;16718:9;16713:14;;16548:185;;;;:::o;16739:172::-;16879:24;16875:1;16867:6;16863:14;16856:48;16739:172;:::o;16917:366::-;17059:3;17080:67;17144:2;17139:3;17080:67;:::i;:::-;17073:74;;17156:93;17245:3;17156:93;:::i;:::-;17274:2;17269:3;17265:12;17258:19;;16917:366;;;:::o;17289:419::-;17455:4;17493:2;17482:9;17478:18;17470:26;;17542:9;17536:4;17532:20;17528:1;17517:9;17513:17;17506:47;17570:131;17696:4;17570:131;:::i;:::-;17562:139;;17289:419;;;:::o;17714:179::-;17854:31;17850:1;17842:6;17838:14;17831:55;17714:179;:::o;17899:366::-;18041:3;18062:67;18126:2;18121:3;18062:67;:::i;:::-;18055:74;;18138:93;18227:3;18138:93;:::i;:::-;18256:2;18251:3;18247:12;18240:19;;17899:366;;;:::o;18271:419::-;18437:4;18475:2;18464:9;18460:18;18452:26;;18524:9;18518:4;18514:20;18510:1;18499:9;18495:17;18488:47;18552:131;18678:4;18552:131;:::i;:::-;18544:139;;18271:419;;;:::o;18696:247::-;18836:34;18832:1;18824:6;18820:14;18813:58;18905:30;18900:2;18892:6;18888:15;18881:55;18696:247;:::o;18949:366::-;19091:3;19112:67;19176:2;19171:3;19112:67;:::i;:::-;19105:74;;19188:93;19277:3;19188:93;:::i;:::-;19306:2;19301:3;19297:12;19290:19;;18949:366;;;:::o;19321:419::-;19487:4;19525:2;19514:9;19510:18;19502:26;;19574:9;19568:4;19564:20;19560:1;19549:9;19545:17;19538:47;19602:131;19728:4;19602:131;:::i;:::-;19594:139;;19321:419;;;:::o;19746:221::-;19886:34;19882:1;19874:6;19870:14;19863:58;19955:4;19950:2;19942:6;19938:15;19931:29;19746:221;:::o;19973:366::-;20115:3;20136:67;20200:2;20195:3;20136:67;:::i;:::-;20129:74;;20212:93;20301:3;20212:93;:::i;:::-;20330:2;20325:3;20321:12;20314:19;;19973:366;;;:::o;20345:419::-;20511:4;20549:2;20538:9;20534:18;20526:26;;20598:9;20592:4;20588:20;20584:1;20573:9;20569:17;20562:47;20626:131;20752:4;20626:131;:::i;:::-;20618:139;;20345:419;;;:::o;20770:194::-;20810:4;20830:20;20848:1;20830:20;:::i;:::-;20825:25;;20864:20;20882:1;20864:20;:::i;:::-;20859:25;;20908:1;20905;20901:9;20893:17;;20932:1;20926:4;20923:11;20920:37;;;20937:18;;:::i;:::-;20920:37;20770:194;;;;:::o;20970:180::-;21018:77;21015:1;21008:88;21115:4;21112:1;21105:15;21139:4;21136:1;21129:15;21156:180;21204:77;21201:1;21194:88;21301:4;21298:1;21291:15;21325:4;21322:1;21315:15;21342:191;21382:3;21401:20;21419:1;21401:20;:::i;:::-;21396:25;;21435:20;21453:1;21435:20;:::i;:::-;21430:25;;21478:1;21475;21471:9;21464:16;;21499:3;21496:1;21493:10;21490:36;;;21506:18;;:::i;:::-;21490:36;21342:191;;;;:::o;21539:225::-;21679:34;21675:1;21667:6;21663:14;21656:58;21748:8;21743:2;21735:6;21731:15;21724:33;21539:225;:::o;21770:366::-;21912:3;21933:67;21997:2;21992:3;21933:67;:::i;:::-;21926:74;;22009:93;22098:3;22009:93;:::i;:::-;22127:2;22122:3;22118:12;22111:19;;21770:366;;;:::o;22142:419::-;22308:4;22346:2;22335:9;22331:18;22323:26;;22395:9;22389:4;22385:20;22381:1;22370:9;22366:17;22359:47;22423:131;22549:4;22423:131;:::i;:::-;22415:139;;22142:419;;;:::o;22567:233::-;22606:3;22629:24;22647:5;22629:24;:::i;:::-;22620:33;;22675:66;22668:5;22665:77;22662:103;;22745:18;;:::i;:::-;22662:103;22792:1;22785:5;22781:13;22774:20;;22567:233;;;:::o;22806:228::-;22946:34;22942:1;22934:6;22930:14;22923:58;23015:11;23010:2;23002:6;22998:15;22991:36;22806:228;:::o;23040:366::-;23182:3;23203:67;23267:2;23262:3;23203:67;:::i;:::-;23196:74;;23279:93;23368:3;23279:93;:::i;:::-;23397:2;23392:3;23388:12;23381:19;;23040:366;;;:::o;23412:419::-;23578:4;23616:2;23605:9;23601:18;23593:26;;23665:9;23659:4;23655:20;23651:1;23640:9;23636:17;23629:47;23693:131;23819:4;23693:131;:::i;:::-;23685:139;;23412:419;;;:::o;23837:220::-;23977:34;23973:1;23965:6;23961:14;23954:58;24046:3;24041:2;24033:6;24029:15;24022:28;23837:220;:::o;24063:366::-;24205:3;24226:67;24290:2;24285:3;24226:67;:::i;:::-;24219:74;;24302:93;24391:3;24302:93;:::i;:::-;24420:2;24415:3;24411:12;24404:19;;24063:366;;;:::o;24435:419::-;24601:4;24639:2;24628:9;24624:18;24616:26;;24688:9;24682:4;24678:20;24674:1;24663:9;24659:17;24652:47;24716:131;24842:4;24716:131;:::i;:::-;24708:139;;24435:419;;;:::o;24860:143::-;24917:5;24948:6;24942:13;24933:22;;24964:33;24991:5;24964:33;:::i;:::-;24860:143;;;;:::o;25009:351::-;25079:6;25128:2;25116:9;25107:7;25103:23;25099:32;25096:119;;;25134:79;;:::i;:::-;25096:119;25254:1;25279:64;25335:7;25326:6;25315:9;25311:22;25279:64;:::i;:::-;25269:74;;25225:128;25009:351;;;;:::o;25366:220::-;25506:34;25502:1;25494:6;25490:14;25483:58;25575:3;25570:2;25562:6;25558:15;25551:28;25366:220;:::o;25592:366::-;25734:3;25755:67;25819:2;25814:3;25755:67;:::i;:::-;25748:74;;25831:93;25920:3;25831:93;:::i;:::-;25949:2;25944:3;25940:12;25933:19;;25592:366;;;:::o;25964:419::-;26130:4;26168:2;26157:9;26153:18;26145:26;;26217:9;26211:4;26207:20;26203:1;26192:9;26188:17;26181:47;26245:131;26371:4;26245:131;:::i;:::-;26237:139;;25964:419;;;:::o;26389:332::-;26510:4;26548:2;26537:9;26533:18;26525:26;;26561:71;26629:1;26618:9;26614:17;26605:6;26561:71;:::i;:::-;26642:72;26710:2;26699:9;26695:18;26686:6;26642:72;:::i;:::-;26389:332;;;;;:::o;26727:137::-;26781:5;26812:6;26806:13;26797:22;;26828:30;26852:5;26828:30;:::i;:::-;26727:137;;;;:::o;26870:345::-;26937:6;26986:2;26974:9;26965:7;26961:23;26957:32;26954:119;;;26992:79;;:::i;:::-;26954:119;27112:1;27137:61;27190:7;27181:6;27170:9;27166:22;27137:61;:::i;:::-;27127:71;;27083:125;26870:345;;;;:::o;27221:225::-;27361:34;27357:1;27349:6;27345:14;27338:58;27430:8;27425:2;27417:6;27413:15;27406:33;27221:225;:::o;27452:366::-;27594:3;27615:67;27679:2;27674:3;27615:67;:::i;:::-;27608:74;;27691:93;27780:3;27691:93;:::i;:::-;27809:2;27804:3;27800:12;27793:19;;27452:366;;;:::o;27824:419::-;27990:4;28028:2;28017:9;28013:18;28005:26;;28077:9;28071:4;28067:20;28063:1;28052:9;28048:17;28041:47;28105:131;28231:4;28105:131;:::i;:::-;28097:139;;27824:419;;;:::o;28249:169::-;28389:21;28385:1;28377:6;28373:14;28366:45;28249:169;:::o;28424:366::-;28566:3;28587:67;28651:2;28646:3;28587:67;:::i;:::-;28580:74;;28663:93;28752:3;28663:93;:::i;:::-;28781:2;28776:3;28772:12;28765:19;;28424:366;;;:::o;28796:419::-;28962:4;29000:2;28989:9;28985:18;28977:26;;29049:9;29043:4;29039:20;29035:1;29024:9;29020:17;29013:47;29077:131;29203:4;29077:131;:::i;:::-;29069:139;;28796:419;;;:::o;29221:179::-;29361:31;29357:1;29349:6;29345:14;29338:55;29221:179;:::o;29406:366::-;29548:3;29569:67;29633:2;29628:3;29569:67;:::i;:::-;29562:74;;29645:93;29734:3;29645:93;:::i;:::-;29763:2;29758:3;29754:12;29747:19;;29406:366;;;:::o;29778:419::-;29944:4;29982:2;29971:9;29967:18;29959:26;;30031:9;30025:4;30021:20;30017:1;30006:9;30002:17;29995:47;30059:131;30185:4;30059:131;:::i;:::-;30051:139;;29778:419;;;:::o;30203:224::-;30343:34;30339:1;30331:6;30327:14;30320:58;30412:7;30407:2;30399:6;30395:15;30388:32;30203:224;:::o;30433:366::-;30575:3;30596:67;30660:2;30655:3;30596:67;:::i;:::-;30589:74;;30672:93;30761:3;30672:93;:::i;:::-;30790:2;30785:3;30781:12;30774:19;;30433:366;;;:::o;30805:419::-;30971:4;31009:2;30998:9;30994:18;30986:26;;31058:9;31052:4;31048:20;31044:1;31033:9;31029:17;31022:47;31086:131;31212:4;31086:131;:::i;:::-;31078:139;;30805:419;;;:::o;31230:222::-;31370:34;31366:1;31358:6;31354:14;31347:58;31439:5;31434:2;31426:6;31422:15;31415:30;31230:222;:::o;31458:366::-;31600:3;31621:67;31685:2;31680:3;31621:67;:::i;:::-;31614:74;;31697:93;31786:3;31697:93;:::i;:::-;31815:2;31810:3;31806:12;31799:19;;31458:366;;;:::o;31830:419::-;31996:4;32034:2;32023:9;32019:18;32011:26;;32083:9;32077:4;32073:20;32069:1;32058:9;32054:17;32047:47;32111:131;32237:4;32111:131;:::i;:::-;32103:139;;31830:419;;;:::o;32255:220::-;32395:34;32391:1;32383:6;32379:14;32372:58;32464:3;32459:2;32451:6;32447:15;32440:28;32255:220;:::o;32481:366::-;32623:3;32644:67;32708:2;32703:3;32644:67;:::i;:::-;32637:74;;32720:93;32809:3;32720:93;:::i;:::-;32838:2;32833:3;32829:12;32822:19;;32481:366;;;:::o;32853:419::-;33019:4;33057:2;33046:9;33042:18;33034:26;;33106:9;33100:4;33096:20;33092:1;33081:9;33077:17;33070:47;33134:131;33260:4;33134:131;:::i;:::-;33126:139;;32853:419;;;:::o;33278:177::-;33418:29;33414:1;33406:6;33402:14;33395:53;33278:177;:::o;33461:366::-;33603:3;33624:67;33688:2;33683:3;33624:67;:::i;:::-;33617:74;;33700:93;33789:3;33700:93;:::i;:::-;33818:2;33813:3;33809:12;33802:19;;33461:366;;;:::o;33833:419::-;33999:4;34037:2;34026:9;34022:18;34014:26;;34086:9;34080:4;34076:20;34072:1;34061:9;34057:17;34050:47;34114:131;34240:4;34114:131;:::i;:::-;34106:139;;33833:419;;;:::o;34258:176::-;34398:28;34394:1;34386:6;34382:14;34375:52;34258:176;:::o;34440:366::-;34582:3;34603:67;34667:2;34662:3;34603:67;:::i;:::-;34596:74;;34679:93;34768:3;34679:93;:::i;:::-;34797:2;34792:3;34788:12;34781:19;;34440:366;;;:::o;34812:419::-;34978:4;35016:2;35005:9;35001:18;34993:26;;35065:9;35059:4;35055:20;35051:1;35040:9;35036:17;35029:47;35093:131;35219:4;35093:131;:::i;:::-;35085:139;;34812:419;;;:::o;35237:180::-;35285:77;35282:1;35275:88;35382:4;35379:1;35372:15;35406:4;35403:1;35396:15;35423:143;35480:5;35511:6;35505:13;35496:22;;35527:33;35554:5;35527:33;:::i;:::-;35423:143;;;;:::o;35572:351::-;35642:6;35691:2;35679:9;35670:7;35666:23;35662:32;35659:119;;;35697:79;;:::i;:::-;35659:119;35817:1;35842:64;35898:7;35889:6;35878:9;35874:22;35842:64;:::i;:::-;35832:74;;35788:128;35572:351;;;;:::o;35929:85::-;35974:7;36003:5;35992:16;;35929:85;;;:::o;36020:158::-;36078:9;36111:61;36129:42;36138:32;36164:5;36138:32;:::i;:::-;36129:42;:::i;:::-;36111:61;:::i;:::-;36098:74;;36020:158;;;:::o;36184:147::-;36279:45;36318:5;36279:45;:::i;:::-;36274:3;36267:58;36184:147;;:::o;36337:114::-;36404:6;36438:5;36432:12;36422:22;;36337:114;;;:::o;36457:184::-;36556:11;36590:6;36585:3;36578:19;36630:4;36625:3;36621:14;36606:29;;36457:184;;;;:::o;36647:132::-;36714:4;36737:3;36729:11;;36767:4;36762:3;36758:14;36750:22;;36647:132;;;:::o;36785:108::-;36862:24;36880:5;36862:24;:::i;:::-;36857:3;36850:37;36785:108;;:::o;36899:179::-;36968:10;36989:46;37031:3;37023:6;36989:46;:::i;:::-;37067:4;37062:3;37058:14;37044:28;;36899:179;;;;:::o;37084:113::-;37154:4;37186;37181:3;37177:14;37169:22;;37084:113;;;:::o;37233:732::-;37352:3;37381:54;37429:5;37381:54;:::i;:::-;37451:86;37530:6;37525:3;37451:86;:::i;:::-;37444:93;;37561:56;37611:5;37561:56;:::i;:::-;37640:7;37671:1;37656:284;37681:6;37678:1;37675:13;37656:284;;;37757:6;37751:13;37784:63;37843:3;37828:13;37784:63;:::i;:::-;37777:70;;37870:60;37923:6;37870:60;:::i;:::-;37860:70;;37716:224;37703:1;37700;37696:9;37691:14;;37656:284;;;37660:14;37956:3;37949:10;;37357:608;;;37233:732;;;;:::o;37971:831::-;38234:4;38272:3;38261:9;38257:19;38249:27;;38286:71;38354:1;38343:9;38339:17;38330:6;38286:71;:::i;:::-;38367:80;38443:2;38432:9;38428:18;38419:6;38367:80;:::i;:::-;38494:9;38488:4;38484:20;38479:2;38468:9;38464:18;38457:48;38522:108;38625:4;38616:6;38522:108;:::i;:::-;38514:116;;38640:72;38708:2;38697:9;38693:18;38684:6;38640:72;:::i;:::-;38722:73;38790:3;38779:9;38775:19;38766:6;38722:73;:::i;:::-;37971:831;;;;;;;;:::o;38808:147::-;38909:11;38946:3;38931:18;;38808:147;;;;:::o;38961:114::-;;:::o;39081:398::-;39240:3;39261:83;39342:1;39337:3;39261:83;:::i;:::-;39254:90;;39353:93;39442:3;39353:93;:::i;:::-;39471:1;39466:3;39462:11;39455:18;;39081:398;;;:::o;39485:379::-;39669:3;39691:147;39834:3;39691:147;:::i;:::-;39684:154;;39855:3;39848:10;;39485:379;;;:::o

Swarm Source

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