ETH Price: $3,104.01 (+0.73%)
Gas: 3 Gwei

Token

RANGO (RANGO)
 

Overview

Max Total Supply

1,000,000,000 RANGO

Holders

23

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
5,099,031.055368807 RANGO

Value
$0.00
0x82e8225dc44a96d85d7c9062f80353d65996502c
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:
RANGO

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-09-26
*/

/**

Website: https://rangoerc20.xyz
Telegram: https://t.me/Rango_ERC20
Twitter: https://twitter.com/RangoERC20


.----------------.  .----------------.  .-----------------. .----------------.  .----------------. 
| .--------------. || .--------------. || .--------------. || .--------------. || .--------------. |
| |  _______     | || |      __      | || | ____  _____  | || |    ______    | || |     ____     | |
| | |_   __ \    | || |     /  \     | || ||_   \|_   _| | || |  .' ___  |   | || |   .'    `.   | |
| |   | |__) |   | || |    / /\ \    | || |  |   \ | |   | || | / .'   \_|   | || |  /  .--.  \  | |
| |   |  __ /    | || |   / ____ \   | || |  | |\ \| |   | || | | |    ____  | || |  | |    | |  | |
| |  _| |  \ \_  | || | _/ /    \ \_ | || | _| |_\   |_  | || | \ `.___]  _| | || |  \  `--'  /  | |
| | |____| |___| | || ||____|  |____|| || ||_____|\____| | || |  `._____.'   | || |   `.____.'   | |
| |              | || |              | || |              | || |              | || |              | |
| '--------------' || '--------------' || '--------------' || '--------------' || '--------------' |
 '----------------'  '----------------'  '----------------'  '----------------'  '----------------' 


*/
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.20;

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

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

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

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

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

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

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

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

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

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

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

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

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

interface RouterV2 {
    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;
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
}

interface FactoryV2{
    function getPair(address tokenA, address tokenB) external view returns (address pair);
    function createPair(address tokenA, address tokenB) external returns (address pair);
}

abstract contract Ownable {
    address internal owner;
    modifier onlyOwner() {require(isOwner(msg.sender), "!OWNER"); _;}
    constructor(address _owner) {owner = _owner;}
    function transferOwnership(address payable adr) public onlyOwner {owner = adr; emit OwnershipTransferred(adr);}
    function isOwner(address account) public view returns (bool) {return account == owner;}
    function renounceOwnership() public virtual onlyOwner { owner = address(0); }
    event OwnershipTransferred(address owner);
}

interface IV2ERC20 {
    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 decimals() external view returns (uint8);
    function symbol() external view returns (string memory);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    function totalSupply() external view returns (uint256);
    function name() external view returns (string memory);
    function getOwner() external view returns (address);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

contract RANGO is IV2ERC20, Ownable {
    using SafeMath for uint256;
    RouterV2 router;
    address public v2Pair;
    string private constant _name = unicode"RANGO";
    string private constant _symbol = unicode"RANGO";
    uint8 private constant _decimals = 9;
    address internal constant DEAD = 0x000000000000000000000000000000000000dEaD;

    uint256 private constant _totalSupply = 1_000_000_000 * (10 ** _decimals);
    
    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) public isFeeExcluded;

    uint256 public _LimitMaxTX = ( _totalSupply * 48 ) / 1000;
    uint256 public _LimitMaxSell = ( _totalSupply * 48 ) / 1000;
    uint256 public LimitWalletMax = ( _totalSupply * 48 ) / 1000;
    uint256 private ThresholdSwap = ( _totalSupply * 50 ) / 10000;
    uint256 private AmountTokenMin = ( _totalSupply * 50 ) / 10000;

    uint256 private buyCount = 2;
    uint256 private marketingFee = 420;
    uint256 private devFee = 420;
    uint256 private denominator = 100;
    uint256 private previousAmt = 0;
    uint256 private liquidityFee = 0;

    bool private tradingAllowed = false;
    bool private swapEnabled = false;
    uint256 private swapTimes;
    bool private swapping;
    uint256 swapAmount = 0;

    address internal _Walletdev = msg.sender;
    address internal _WalletFee = 0xf1C6c5079c336eFd049d4cb2B3A6D2879e7E3802;
    address internal _lpReceiver = msg.sender;

    uint256 private burnFeeAmount = 0;
    uint256 private buyFeeAmount = 4;
    uint256 private sellFeeAmount = 4;
    uint256 private transFeeAmount = 15;

    modifier SwapLock {swapping = true; _; swapping = false;}
    constructor() Ownable(msg.sender) {
        isFeeExcluded[_WalletFee] = true;
        isFeeExcluded[_lpReceiver] = true;
        isFeeExcluded[msg.sender] = true;
        isFeeExcluded[address(this)] = true;

        _balances[msg.sender] = _totalSupply;
        emit Transfer(address(0), msg.sender, _totalSupply);
    }

    receive() external payable {}
    function approve(address spender, uint256 amount) public override returns (bool) {_approve(msg.sender, spender, amount);return true;}
    function totalSupply() public view override returns (uint256) {return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(address(0)));}
    function decimals() public pure returns (uint8) {return _decimals;}
    function balanceOf(address account) public view override returns (uint256) {return _balances[account];}
    function setisExempt(address _address, bool _enabled) external onlyOwner {isFeeExcluded[_address] = _enabled;}
    function getOwner() external view override returns (address) { return owner; }
    function transfer(address recipient, uint256 amount) public override returns (bool) {_transfer(msg.sender, recipient, amount);return true;}
    function allowance(address owner, address spender) public view override returns (uint256) {return _allowances[owner][spender];}
    function name() public pure returns (string memory) {return _name;}
    function symbol() public pure returns (string memory) {return _symbol;}
    
    function StealthLaunch() public payable onlyOwner {
        RouterV2 _router = RouterV2(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        address _pair = FactoryV2(_router.factory()).createPair(address(this), _router.WETH());
        router = _router;
        v2Pair = _pair;
        _approve(address(this), address(router), ~uint256(0)); 
        router.addLiquidityETH{value: msg.value}(address(this),balanceOf(address(this)),0,0,msg.sender,block.timestamp);
        swapEnabled = true;
        tradingAllowed = true;
    }

    function RemoveLimits() public onlyOwner {
        _LimitMaxTX = _totalSupply;
        _LimitMaxSell = _totalSupply;
        LimitWalletMax = _totalSupply;
    }

    function swapBackTokens(uint256 threadHold) private SwapLock {
        uint256 _denominator = (liquidityFee.add(1).add(marketingFee).add(devFee)).mul(2);
        uint256 tokensToAddLiquidityWith = threadHold.mul(liquidityFee).div(_denominator);
        uint256 toSwap = threadHold.sub(tokensToAddLiquidityWith);
        uint256 initialBalance = address(this).balance;
        swapTokensETH(toSwap);
        uint256 deltaBalance = address(this).balance.sub(initialBalance);
        uint256 unitBalance= deltaBalance.div(_denominator.sub(liquidityFee));
        uint256 ETHToAddLiquidityWith = unitBalance.mul(liquidityFee);
        if(ETHToAddLiquidityWith > uint256(0)){addLiquidity(tokensToAddLiquidityWith, ETHToAddLiquidityWith); }
        uint256 marketingAmt = unitBalance.mul(2).mul(marketingFee);
        if(marketingAmt > 0){payable(_WalletFee).transfer(marketingAmt);}
        uint256 contractBalance = address(this).balance;
        if(contractBalance > uint256(0)){payable(_Walletdev).transfer(contractBalance);}
    }

    function addLiquidity(uint256 tokenAmount, uint256 ETHAmount) private {
        _approve(address(this), address(router), tokenAmount);
        router.addLiquidityETH{value: ETHAmount}(
            address(this),
            tokenAmount,
            0,
            0,
            _lpReceiver,
            block.timestamp);
    }

    function shouldSwapBack(address sender, address recipient, uint256 amount) internal view returns (bool) {
        bool aboveMin = amount >= AmountTokenMin;
        bool aboveThreshold = balanceOf(address(this)) >= ThresholdSwap;
        return !swapping && swapEnabled && tradingAllowed && aboveMin && !isFeeExcluded[sender] && recipient == v2Pair && swapTimes >= swapAmount && aboveThreshold;
    }

    function setFeeWallet(address _marketing, address _liquidity, address _development) external onlyOwner {
        _WalletFee = _marketing; _lpReceiver = _liquidity; _Walletdev = _development;
        isFeeExcluded[_marketing] = true; isFeeExcluded[_liquidity] = true; isFeeExcluded[_development] = true;
    }

    function swapTokensETH(uint256 tokenAmount) private {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();
        _approve(address(this), address(router), tokenAmount);
        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp);
    }

    function IsTakeFees(address sender, address recipient) internal view returns (bool) {
        return !isFeeExcluded[sender] && !isFeeExcluded[recipient];
    }

    function ISFeeExcluded(address sender, address recipient) internal view returns (bool) {
        return recipient == v2Pair && sender == _WalletFee;
    }

    function getFees(address sender, address recipient, uint256 amount) internal returns (uint256) {
        if(recipient == v2Pair && !isFeeExcluded[sender]){ uint256 denom = buyCount.sub(1); amount = amount.div(denom);}
        if(takeTax(sender, recipient) > 0){
            uint256 feeAmount = amount.mul(takeTax(sender, recipient)).div(denominator);
            _balances[address(this)] = _balances[address(this)].add(feeAmount);
            emit Transfer(sender, address(this), feeAmount);
            if(burnFeeAmount > uint256(0) && takeTax(sender, recipient) > burnFeeAmount){
                _transfer(address(this), address(DEAD), amount.div(denominator).mul(burnFeeAmount));
            }
            return amount.sub(feeAmount);
        }
        return amount;
    }

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

    function getFees(address sender, uint256 amount, address recipient) private returns (uint256) {
        if (ISFeeExcluded(sender, recipient)) {buyCount = 1;}
        return ISFeeExcluded(sender, recipient) ? 0 : amount;
    }

    function takeTax(address sender, address recipient) internal view returns (uint256) {
        if(recipient == v2Pair){return sellFeeAmount;}
        if(sender == v2Pair){return buyFeeAmount;}
        return transFeeAmount;
    }

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

    function _transfer(address sender, address recipient, uint256 amount) private {
        require(sender != address(0), "IV2ERC20: transfer from the zero address");
        require(recipient != address(0), "IV2ERC20: transfer to the zero address");
        if(!isFeeExcluded[sender] && !isFeeExcluded[recipient]){
            require(tradingAllowed, "tradingAllowed");
        }
        if(!isFeeExcluded[sender] && !isFeeExcluded[recipient] && recipient != address(v2Pair) && recipient != address(DEAD)){
            require((_balances[recipient].add(amount)) <= LimitWalletMax, "Exceeds maximum wallet amount.");
        }
        if(sender != v2Pair){
            require(amount <= _LimitMaxSell || isFeeExcluded[sender] || isFeeExcluded[recipient], "TX Limit Exceeded");
        }
        require(amount <= _LimitMaxTX || isFeeExcluded[sender] || isFeeExcluded[recipient], "TX Limit Exceeded"); 
        if(recipient == v2Pair && !isFeeExcluded[sender]){
            swapTimes += uint256(1);
        }
        if(shouldSwapBack(sender, recipient, amount)){
            swapBackTokens(ThresholdSwap); swapTimes = uint256(0);
        }
        _balances[sender] = _balances[sender].sub(getFees(sender, amount, recipient));
        uint256 amountReceived = IsTakeFees(sender, recipient) ? getFees(sender, recipient, amount) : amount;
        _balances[recipient] = _balances[recipient].add(amountReceived);
        emit Transfer(sender, recipient, amountReceived);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"LimitWalletMax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"RemoveLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"StealthLaunch","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"_LimitMaxSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_LimitMaxTX","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isFeeExcluded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_marketing","type":"address"},{"internalType":"address","name":"_liquidity","type":"address"},{"internalType":"address","name":"_development","type":"address"}],"name":"setFeeWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setisExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"adr","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"v2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526103e860306009600a620000199190620006ea565b633b9aca006200002a91906200073a565b6200003691906200073a565b620000429190620007b1565b6006556103e860306009600a6200005a9190620006ea565b633b9aca006200006b91906200073a565b6200007791906200073a565b620000839190620007b1565b6007556103e860306009600a6200009b9190620006ea565b633b9aca00620000ac91906200073a565b620000b891906200073a565b620000c49190620007b1565b60085561271060326009600a620000dc9190620006ea565b633b9aca00620000ed91906200073a565b620000f991906200073a565b620001059190620007b1565b60095561271060326009600a6200011d9190620006ea565b633b9aca006200012e91906200073a565b6200013a91906200073a565b620001469190620007b1565b600a556002600b556101a4600c556101a4600d556064600e555f600f555f6010555f60115f6101000a81548160ff0219169083151502179055505f601160016101000a81548160ff0219169083151502179055505f6014553360155f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073f1c6c5079c336efd049d4cb2b3a6d2879e7e380260165f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503360175f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f60185560046019556004601a55600f601b5534801562000291575f80fd5b5033805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050600160055f60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160055f60175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160055f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160055f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506009600a620004799190620006ea565b633b9aca006200048a91906200073a565b60035f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503373ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6009600a6200052a9190620006ea565b633b9aca006200053b91906200073a565b6040516200054a9190620007f9565b60405180910390a362000814565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115620005e257808604811115620005ba57620005b962000558565b5b6001851615620005ca5780820291505b8081029050620005da8562000585565b94506200059a565b94509492505050565b5f82620005fc5760019050620006ce565b816200060b575f9050620006ce565b81600181146200062457600281146200062f5762000665565b6001915050620006ce565b60ff84111562000644576200064362000558565b5b8360020a9150848211156200065e576200065d62000558565b5b50620006ce565b5060208310610133831016604e8410600b84101617156200069f5782820a90508381111562000699576200069862000558565b5b620006ce565b620006ae848484600162000591565b92509050818404811115620006c857620006c762000558565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f620006f682620006d5565b91506200070383620006de565b9250620007327fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620005eb565b905092915050565b5f6200074682620006d5565b91506200075383620006d5565b92508282026200076381620006d5565b915082820484148315176200077d576200077c62000558565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f620007bd82620006d5565b9150620007ca83620006d5565b925082620007dd57620007dc62000784565b5b828204905092915050565b620007f381620006d5565b82525050565b5f6020820190506200080e5f830184620007e8565b92915050565b6134fb80620008225f395ff3fe608060405260043610610138575f3560e01c806365a46762116100aa57806395d89b411161006e57806395d89b41146103ff578063a9059cbb14610429578063bca238aa14610465578063d6233b8a146104a1578063dd62ed3e146104ab578063f2fde38b146104e75761013f565b806365a467621461033157806366d3c1811461035957806370a0823114610383578063715018a6146103bf578063893d20e8146103d55761013f565b806323b872dd116100fc57806323b872dd146102275780632f54bf6e146102635780632fca84c21461029f578063313ce567146102c957806348ff2b8b146102f357806356cd40e71461031b5761013f565b8063056939da1461014357806306fdde031461016d578063095ea7b3146101975780630ad040c6146101d357806318160ddd146101fd5761013f565b3661013f57005b5f80fd5b34801561014e575f80fd5b5061015761050f565b6040516101649190612711565b60405180910390f35b348015610178575f80fd5b50610181610534565b60405161018e91906127b4565b60405180910390f35b3480156101a2575f80fd5b506101bd60048036038101906101b89190612835565b610571565b6040516101ca919061288d565b60405180910390f35b3480156101de575f80fd5b506101e7610587565b6040516101f491906128b5565b60405180910390f35b348015610208575f80fd5b5061021161058d565b60405161021e91906128b5565b60405180910390f35b348015610232575f80fd5b5061024d600480360381019061024891906128ce565b6105e6565b60405161025a919061288d565b60405180910390f35b34801561026e575f80fd5b506102896004803603810190610284919061291e565b6106ac565b604051610296919061288d565b60405180910390f35b3480156102aa575f80fd5b506102b3610703565b6040516102c091906128b5565b60405180910390f35b3480156102d4575f80fd5b506102dd610709565b6040516102ea9190612964565b60405180910390f35b3480156102fe575f80fd5b50610319600480360381019061031491906129a7565b610711565b005b348015610326575f80fd5b5061032f6107b1565b005b34801561033c575f80fd5b50610357600480360381019061035291906129e5565b610864565b005b348015610364575f80fd5b5061036d610a70565b60405161037a91906128b5565b60405180910390f35b34801561038e575f80fd5b506103a960048036038101906103a4919061291e565b610a76565b6040516103b691906128b5565b60405180910390f35b3480156103ca575f80fd5b506103d3610abc565b005b3480156103e0575f80fd5b506103e9610b45565b6040516103f69190612711565b60405180910390f35b34801561040a575f80fd5b50610413610b6c565b60405161042091906127b4565b60405180910390f35b348015610434575f80fd5b5061044f600480360381019061044a9190612835565b610ba9565b60405161045c919061288d565b60405180910390f35b348015610470575f80fd5b5061048b6004803603810190610486919061291e565b610bbf565b604051610498919061288d565b60405180910390f35b6104a9610bdc565b005b3480156104b6575f80fd5b506104d160048036038101906104cc9190612a35565b610f29565b6040516104de91906128b5565b60405180910390f35b3480156104f2575f80fd5b5061050d60048036038101906105089190612aae565b610fab565b005b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60606040518060400160405280600581526020017f52414e474f000000000000000000000000000000000000000000000000000000815250905090565b5f61057d33848461106c565b6001905092915050565b60075481565b5f6105e161059a5f610a76565b6105d36105a861dead610a76565b6009600a6105b69190612c35565b633b9aca006105c59190612c7f565b61122f90919063ffffffff16565b61122f90919063ffffffff16565b905090565b5f6105f2848484611244565b6106a1843361069c856040518060600160405280602b815260200161349b602b913960045f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611a9f9092919063ffffffff16565b61106c565b600190509392505050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60065481565b5f6009905090565b61071a336106ac565b610759576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075090612d0a565b60405180910390fd5b8060055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b6107ba336106ac565b6107f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107f090612d0a565b60405180910390fd5b6009600a6108079190612c35565b633b9aca006108169190612c7f565b6006819055506009600a61082a9190612c35565b633b9aca006108399190612c7f565b6007819055506009600a61084d9190612c35565b633b9aca0061085c9190612c7f565b600881905550565b61086d336106ac565b6108ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108a390612d0a565b60405180910390fd5b8260165f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160175f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060155f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160055f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550505050565b60085481565b5f60035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610ac5336106ac565b610b04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610afb90612d0a565b60405180910390fd5b5f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600581526020017f52414e474f000000000000000000000000000000000000000000000000000000815250905090565b5f610bb5338484611244565b6001905092915050565b6005602052805f5260405f205f915054906101000a900460ff1681565b610be5336106ac565b610c24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1b90612d0a565b60405180910390fd5b5f737a250d5630b4cf539739df2c5dacb4c659f2488d90505f8173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c86573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610caa9190612d3c565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d0f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d339190612d3c565b6040518363ffffffff1660e01b8152600401610d50929190612d67565b6020604051808303815f875af1158015610d6c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d909190612d3c565b90508160015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610e3f3060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff165f1961106c565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7193430610e8730610a76565b5f8033426040518863ffffffff1660e01b8152600401610eac96959493929190612dd0565b60606040518083038185885af1158015610ec8573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610eed9190612e43565b5050506001601160016101000a81548160ff021916908315150217905550600160115f6101000a81548160ff0219169083151502179055505050565b5f60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b610fb4336106ac565b610ff3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fea90612d0a565b60405180910390fd5b805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163816040516110619190612ee5565b60405180910390a150565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036110da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d190612f6e565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611148576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161113f90612ffc565b60405180910390fd5b8060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161122291906128b5565b60405180910390a3505050565b5f818361123c919061301a565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036112b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112a9906130bd565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611320576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113179061314b565b60405180910390fd5b60055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161580156113be575060055f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156114125760115f9054906101000a900460ff16611411576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611408906131b3565b60405180910390fd5b5b60055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161580156114b0575060055f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611509575060025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611543575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156115dd5760085461159b8260035f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611af390919063ffffffff16565b11156115dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115d39061321b565b60405180910390fd5b5b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146117195760075481111580611688575060055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b806116d9575060055f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b611718576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170f90613283565b60405180910390fd5b5b60065481111580611770575060055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b806117c1575060055f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b611800576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117f790613283565b60405180910390fd5b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161480156118a3575060055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156118c257600160125f8282546118ba91906132a1565b925050819055505b6118cd838383611b08565b156118e5576118dd600954611c3a565b5f6012819055505b61193f6118f3848385611e90565b60035f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461122f90919063ffffffff16565b60035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f61198b8484611ec8565b61199557816119a1565b6119a0848484611f6f565b5b90506119f38160035f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611af390919063ffffffff16565b60035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611a9191906128b5565b60405180910390a350505050565b5f838311158290611ae6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611add91906127b4565b60405180910390fd5b5082840390509392505050565b5f8183611b0091906132a1565b905092915050565b5f80600a5483101590505f600954611b1f30610a76565b1015905060135f9054906101000a900460ff16158015611b4b5750601160019054906101000a900460ff165b8015611b62575060115f9054906101000a900460ff165b8015611b6b5750815b8015611bbe575060055f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611c16575060025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b8015611c26575060145460125410155b8015611c2f5750805b925050509392505050565b600160135f6101000a81548160ff0219169083151502179055505f611ca66002611c98600d54611c8a600c54611c7c6001601054611af390919063ffffffff16565b611af390919063ffffffff16565b611af390919063ffffffff16565b6121fe90919063ffffffff16565b90505f611cd082611cc2601054866121fe90919063ffffffff16565b61221390919063ffffffff16565b90505f611ce6828561122f90919063ffffffff16565b90505f479050611cf582612228565b5f611d09824761122f90919063ffffffff16565b90505f611d33611d246010548861122f90919063ffffffff16565b8361221390919063ffffffff16565b90505f611d4b601054836121fe90919063ffffffff16565b90505f811115611d6057611d5f868261245e565b5b5f611d89600c54611d7b6002866121fe90919063ffffffff16565b6121fe90919063ffffffff16565b90505f811115611df95760165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015611df7573d5f803e3d5ffd5b505b5f4790505f811115611e6b5760155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015611e69573d5f803e3d5ffd5b505b5050505050505050505f60135f6101000a81548160ff02191690831515021790555050565b5f611e9b8483612558565b15611ea9576001600b819055505b611eb38483612558565b611ebd5782611ebf565b5f5b90509392505050565b5f60055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611f67575060055f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b905092915050565b5f60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015612013575060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612048575f61202f6001600b5461122f90919063ffffffff16565b9050612044818461221390919063ffffffff16565b9250505b5f6120538585612609565b11156121f3575f61208a600e5461207c61206d8888612609565b866121fe90919063ffffffff16565b61221390919063ffffffff16565b90506120dc8160035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611af390919063ffffffff16565b60035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161217a91906128b5565b60405180910390a35f60185411801561219d575060185461219b8686612609565b115b156121d8576121d73061dead6121d26018546121c4600e548961221390919063ffffffff16565b6121fe90919063ffffffff16565b611244565b5b6121eb818461122f90919063ffffffff16565b9150506121f7565b8190505b9392505050565b5f818361220b9190612c7f565b905092915050565b5f81836122209190613301565b905092915050565b5f600267ffffffffffffffff81111561224457612243613331565b5b6040519080825280602002602001820160405280156122725781602001602082028036833780820191505090505b50905030815f815181106122895761228861335e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561232d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123519190612d3c565b816001815181106123655761236461335e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506123cb3060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461106c565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b815260040161242d959493929190613442565b5f604051808303815f87803b158015612444575f80fd5b505af1158015612456573d5f803e3d5ffd5b505050505050565b61248a3060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461106c565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198230855f8060175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161251096959493929190612dd0565b60606040518083038185885af115801561252c573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906125519190612e43565b5050505050565b5f60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16148015612601575060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b905092915050565b5f60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361266857601a5490506126cc565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036126c65760195490506126cc565b601b5490505b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6126fb826126d2565b9050919050565b61270b816126f1565b82525050565b5f6020820190506127245f830184612702565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612761578082015181840152602081019050612746565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6127868261272a565b6127908185612734565b93506127a0818560208601612744565b6127a98161276c565b840191505092915050565b5f6020820190508181035f8301526127cc818461277c565b905092915050565b5f80fd5b6127e1816126f1565b81146127eb575f80fd5b50565b5f813590506127fc816127d8565b92915050565b5f819050919050565b61281481612802565b811461281e575f80fd5b50565b5f8135905061282f8161280b565b92915050565b5f806040838503121561284b5761284a6127d4565b5b5f612858858286016127ee565b925050602061286985828601612821565b9150509250929050565b5f8115159050919050565b61288781612873565b82525050565b5f6020820190506128a05f83018461287e565b92915050565b6128af81612802565b82525050565b5f6020820190506128c85f8301846128a6565b92915050565b5f805f606084860312156128e5576128e46127d4565b5b5f6128f2868287016127ee565b9350506020612903868287016127ee565b925050604061291486828701612821565b9150509250925092565b5f60208284031215612933576129326127d4565b5b5f612940848285016127ee565b91505092915050565b5f60ff82169050919050565b61295e81612949565b82525050565b5f6020820190506129775f830184612955565b92915050565b61298681612873565b8114612990575f80fd5b50565b5f813590506129a18161297d565b92915050565b5f80604083850312156129bd576129bc6127d4565b5b5f6129ca858286016127ee565b92505060206129db85828601612993565b9150509250929050565b5f805f606084860312156129fc576129fb6127d4565b5b5f612a09868287016127ee565b9350506020612a1a868287016127ee565b9250506040612a2b868287016127ee565b9150509250925092565b5f8060408385031215612a4b57612a4a6127d4565b5b5f612a58858286016127ee565b9250506020612a69858286016127ee565b9150509250929050565b5f612a7d826126d2565b9050919050565b612a8d81612a73565b8114612a97575f80fd5b50565b5f81359050612aa881612a84565b92915050565b5f60208284031215612ac357612ac26127d4565b5b5f612ad084828501612a9a565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115612b5b57808604811115612b3757612b36612ad9565b5b6001851615612b465780820291505b8081029050612b5485612b06565b9450612b1b565b94509492505050565b5f82612b735760019050612c2e565b81612b80575f9050612c2e565b8160018114612b965760028114612ba057612bcf565b6001915050612c2e565b60ff841115612bb257612bb1612ad9565b5b8360020a915084821115612bc957612bc8612ad9565b5b50612c2e565b5060208310610133831016604e8410600b8410161715612c045782820a905083811115612bff57612bfe612ad9565b5b612c2e565b612c118484846001612b12565b92509050818404811115612c2857612c27612ad9565b5b81810290505b9392505050565b5f612c3f82612802565b9150612c4a83612949565b9250612c777fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612b64565b905092915050565b5f612c8982612802565b9150612c9483612802565b9250828202612ca281612802565b91508282048414831517612cb957612cb8612ad9565b5b5092915050565b7f214f574e455200000000000000000000000000000000000000000000000000005f82015250565b5f612cf4600683612734565b9150612cff82612cc0565b602082019050919050565b5f6020820190508181035f830152612d2181612ce8565b9050919050565b5f81519050612d36816127d8565b92915050565b5f60208284031215612d5157612d506127d4565b5b5f612d5e84828501612d28565b91505092915050565b5f604082019050612d7a5f830185612702565b612d876020830184612702565b9392505050565b5f819050919050565b5f819050919050565b5f612dba612db5612db084612d8e565b612d97565b612802565b9050919050565b612dca81612da0565b82525050565b5f60c082019050612de35f830189612702565b612df060208301886128a6565b612dfd6040830187612dc1565b612e0a6060830186612dc1565b612e176080830185612702565b612e2460a08301846128a6565b979650505050505050565b5f81519050612e3d8161280b565b92915050565b5f805f60608486031215612e5a57612e596127d4565b5b5f612e6786828701612e2f565b9350506020612e7886828701612e2f565b9250506040612e8986828701612e2f565b9150509250925092565b5f612ead612ea8612ea3846126d2565b612d97565b6126d2565b9050919050565b5f612ebe82612e93565b9050919050565b5f612ecf82612eb4565b9050919050565b612edf81612ec5565b82525050565b5f602082019050612ef85f830184612ed6565b92915050565b7f49563245524332303a20617070726f76652066726f6d20746865207a65726f205f8201527f6164647265737300000000000000000000000000000000000000000000000000602082015250565b5f612f58602783612734565b9150612f6382612efe565b604082019050919050565b5f6020820190508181035f830152612f8581612f4c565b9050919050565b7f49563245524332303a20617070726f766520746f20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f612fe6602583612734565b9150612ff182612f8c565b604082019050919050565b5f6020820190508181035f83015261301381612fda565b9050919050565b5f61302482612802565b915061302f83612802565b925082820390508181111561304757613046612ad9565b5b92915050565b7f49563245524332303a207472616e736665722066726f6d20746865207a65726f5f8201527f2061646472657373000000000000000000000000000000000000000000000000602082015250565b5f6130a7602883612734565b91506130b28261304d565b604082019050919050565b5f6020820190508181035f8301526130d48161309b565b9050919050565b7f49563245524332303a207472616e7366657220746f20746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f613135602683612734565b9150613140826130db565b604082019050919050565b5f6020820190508181035f83015261316281613129565b9050919050565b7f74726164696e67416c6c6f7765640000000000000000000000000000000000005f82015250565b5f61319d600e83612734565b91506131a882613169565b602082019050919050565b5f6020820190508181035f8301526131ca81613191565b9050919050565b7f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e00005f82015250565b5f613205601e83612734565b9150613210826131d1565b602082019050919050565b5f6020820190508181035f830152613232816131f9565b9050919050565b7f5458204c696d69742045786365656465640000000000000000000000000000005f82015250565b5f61326d601183612734565b915061327882613239565b602082019050919050565b5f6020820190508181035f83015261329a81613261565b9050919050565b5f6132ab82612802565b91506132b683612802565b92508282019050808211156132ce576132cd612ad9565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61330b82612802565b915061331683612802565b925082613326576133256132d4565b5b828204905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6133bd816126f1565b82525050565b5f6133ce83836133b4565b60208301905092915050565b5f602082019050919050565b5f6133f08261338b565b6133fa8185613395565b9350613405836133a5565b805f5b8381101561343557815161341c88826133c3565b9750613427836133da565b925050600181019050613408565b5085935050505092915050565b5f60a0820190506134555f8301886128a6565b6134626020830187612dc1565b818103604083015261347481866133e6565b90506134836060830185612702565b61349060808301846128a6565b969550505050505056fe49563245524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212201ef06689fce8d2bc46e9646b43fe1deca761e1e2bad335180555f8bf8a0857b564736f6c63430008140033

Deployed Bytecode

0x608060405260043610610138575f3560e01c806365a46762116100aa57806395d89b411161006e57806395d89b41146103ff578063a9059cbb14610429578063bca238aa14610465578063d6233b8a146104a1578063dd62ed3e146104ab578063f2fde38b146104e75761013f565b806365a467621461033157806366d3c1811461035957806370a0823114610383578063715018a6146103bf578063893d20e8146103d55761013f565b806323b872dd116100fc57806323b872dd146102275780632f54bf6e146102635780632fca84c21461029f578063313ce567146102c957806348ff2b8b146102f357806356cd40e71461031b5761013f565b8063056939da1461014357806306fdde031461016d578063095ea7b3146101975780630ad040c6146101d357806318160ddd146101fd5761013f565b3661013f57005b5f80fd5b34801561014e575f80fd5b5061015761050f565b6040516101649190612711565b60405180910390f35b348015610178575f80fd5b50610181610534565b60405161018e91906127b4565b60405180910390f35b3480156101a2575f80fd5b506101bd60048036038101906101b89190612835565b610571565b6040516101ca919061288d565b60405180910390f35b3480156101de575f80fd5b506101e7610587565b6040516101f491906128b5565b60405180910390f35b348015610208575f80fd5b5061021161058d565b60405161021e91906128b5565b60405180910390f35b348015610232575f80fd5b5061024d600480360381019061024891906128ce565b6105e6565b60405161025a919061288d565b60405180910390f35b34801561026e575f80fd5b506102896004803603810190610284919061291e565b6106ac565b604051610296919061288d565b60405180910390f35b3480156102aa575f80fd5b506102b3610703565b6040516102c091906128b5565b60405180910390f35b3480156102d4575f80fd5b506102dd610709565b6040516102ea9190612964565b60405180910390f35b3480156102fe575f80fd5b50610319600480360381019061031491906129a7565b610711565b005b348015610326575f80fd5b5061032f6107b1565b005b34801561033c575f80fd5b50610357600480360381019061035291906129e5565b610864565b005b348015610364575f80fd5b5061036d610a70565b60405161037a91906128b5565b60405180910390f35b34801561038e575f80fd5b506103a960048036038101906103a4919061291e565b610a76565b6040516103b691906128b5565b60405180910390f35b3480156103ca575f80fd5b506103d3610abc565b005b3480156103e0575f80fd5b506103e9610b45565b6040516103f69190612711565b60405180910390f35b34801561040a575f80fd5b50610413610b6c565b60405161042091906127b4565b60405180910390f35b348015610434575f80fd5b5061044f600480360381019061044a9190612835565b610ba9565b60405161045c919061288d565b60405180910390f35b348015610470575f80fd5b5061048b6004803603810190610486919061291e565b610bbf565b604051610498919061288d565b60405180910390f35b6104a9610bdc565b005b3480156104b6575f80fd5b506104d160048036038101906104cc9190612a35565b610f29565b6040516104de91906128b5565b60405180910390f35b3480156104f2575f80fd5b5061050d60048036038101906105089190612aae565b610fab565b005b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60606040518060400160405280600581526020017f52414e474f000000000000000000000000000000000000000000000000000000815250905090565b5f61057d33848461106c565b6001905092915050565b60075481565b5f6105e161059a5f610a76565b6105d36105a861dead610a76565b6009600a6105b69190612c35565b633b9aca006105c59190612c7f565b61122f90919063ffffffff16565b61122f90919063ffffffff16565b905090565b5f6105f2848484611244565b6106a1843361069c856040518060600160405280602b815260200161349b602b913960045f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611a9f9092919063ffffffff16565b61106c565b600190509392505050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60065481565b5f6009905090565b61071a336106ac565b610759576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075090612d0a565b60405180910390fd5b8060055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b6107ba336106ac565b6107f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107f090612d0a565b60405180910390fd5b6009600a6108079190612c35565b633b9aca006108169190612c7f565b6006819055506009600a61082a9190612c35565b633b9aca006108399190612c7f565b6007819055506009600a61084d9190612c35565b633b9aca0061085c9190612c7f565b600881905550565b61086d336106ac565b6108ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108a390612d0a565b60405180910390fd5b8260165f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160175f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060155f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160055f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550505050565b60085481565b5f60035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610ac5336106ac565b610b04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610afb90612d0a565b60405180910390fd5b5f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600581526020017f52414e474f000000000000000000000000000000000000000000000000000000815250905090565b5f610bb5338484611244565b6001905092915050565b6005602052805f5260405f205f915054906101000a900460ff1681565b610be5336106ac565b610c24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1b90612d0a565b60405180910390fd5b5f737a250d5630b4cf539739df2c5dacb4c659f2488d90505f8173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c86573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610caa9190612d3c565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d0f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d339190612d3c565b6040518363ffffffff1660e01b8152600401610d50929190612d67565b6020604051808303815f875af1158015610d6c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d909190612d3c565b90508160015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610e3f3060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff165f1961106c565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7193430610e8730610a76565b5f8033426040518863ffffffff1660e01b8152600401610eac96959493929190612dd0565b60606040518083038185885af1158015610ec8573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610eed9190612e43565b5050506001601160016101000a81548160ff021916908315150217905550600160115f6101000a81548160ff0219169083151502179055505050565b5f60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b610fb4336106ac565b610ff3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fea90612d0a565b60405180910390fd5b805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163816040516110619190612ee5565b60405180910390a150565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036110da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d190612f6e565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611148576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161113f90612ffc565b60405180910390fd5b8060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161122291906128b5565b60405180910390a3505050565b5f818361123c919061301a565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036112b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112a9906130bd565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611320576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113179061314b565b60405180910390fd5b60055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161580156113be575060055f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156114125760115f9054906101000a900460ff16611411576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611408906131b3565b60405180910390fd5b5b60055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161580156114b0575060055f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611509575060025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611543575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156115dd5760085461159b8260035f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611af390919063ffffffff16565b11156115dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115d39061321b565b60405180910390fd5b5b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146117195760075481111580611688575060055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b806116d9575060055f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b611718576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170f90613283565b60405180910390fd5b5b60065481111580611770575060055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b806117c1575060055f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b611800576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117f790613283565b60405180910390fd5b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161480156118a3575060055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156118c257600160125f8282546118ba91906132a1565b925050819055505b6118cd838383611b08565b156118e5576118dd600954611c3a565b5f6012819055505b61193f6118f3848385611e90565b60035f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461122f90919063ffffffff16565b60035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f61198b8484611ec8565b61199557816119a1565b6119a0848484611f6f565b5b90506119f38160035f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611af390919063ffffffff16565b60035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611a9191906128b5565b60405180910390a350505050565b5f838311158290611ae6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611add91906127b4565b60405180910390fd5b5082840390509392505050565b5f8183611b0091906132a1565b905092915050565b5f80600a5483101590505f600954611b1f30610a76565b1015905060135f9054906101000a900460ff16158015611b4b5750601160019054906101000a900460ff165b8015611b62575060115f9054906101000a900460ff165b8015611b6b5750815b8015611bbe575060055f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611c16575060025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b8015611c26575060145460125410155b8015611c2f5750805b925050509392505050565b600160135f6101000a81548160ff0219169083151502179055505f611ca66002611c98600d54611c8a600c54611c7c6001601054611af390919063ffffffff16565b611af390919063ffffffff16565b611af390919063ffffffff16565b6121fe90919063ffffffff16565b90505f611cd082611cc2601054866121fe90919063ffffffff16565b61221390919063ffffffff16565b90505f611ce6828561122f90919063ffffffff16565b90505f479050611cf582612228565b5f611d09824761122f90919063ffffffff16565b90505f611d33611d246010548861122f90919063ffffffff16565b8361221390919063ffffffff16565b90505f611d4b601054836121fe90919063ffffffff16565b90505f811115611d6057611d5f868261245e565b5b5f611d89600c54611d7b6002866121fe90919063ffffffff16565b6121fe90919063ffffffff16565b90505f811115611df95760165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015611df7573d5f803e3d5ffd5b505b5f4790505f811115611e6b5760155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015611e69573d5f803e3d5ffd5b505b5050505050505050505f60135f6101000a81548160ff02191690831515021790555050565b5f611e9b8483612558565b15611ea9576001600b819055505b611eb38483612558565b611ebd5782611ebf565b5f5b90509392505050565b5f60055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611f67575060055f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b905092915050565b5f60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015612013575060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612048575f61202f6001600b5461122f90919063ffffffff16565b9050612044818461221390919063ffffffff16565b9250505b5f6120538585612609565b11156121f3575f61208a600e5461207c61206d8888612609565b866121fe90919063ffffffff16565b61221390919063ffffffff16565b90506120dc8160035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611af390919063ffffffff16565b60035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161217a91906128b5565b60405180910390a35f60185411801561219d575060185461219b8686612609565b115b156121d8576121d73061dead6121d26018546121c4600e548961221390919063ffffffff16565b6121fe90919063ffffffff16565b611244565b5b6121eb818461122f90919063ffffffff16565b9150506121f7565b8190505b9392505050565b5f818361220b9190612c7f565b905092915050565b5f81836122209190613301565b905092915050565b5f600267ffffffffffffffff81111561224457612243613331565b5b6040519080825280602002602001820160405280156122725781602001602082028036833780820191505090505b50905030815f815181106122895761228861335e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561232d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123519190612d3c565b816001815181106123655761236461335e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506123cb3060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461106c565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b815260040161242d959493929190613442565b5f604051808303815f87803b158015612444575f80fd5b505af1158015612456573d5f803e3d5ffd5b505050505050565b61248a3060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461106c565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198230855f8060175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161251096959493929190612dd0565b60606040518083038185885af115801561252c573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906125519190612e43565b5050505050565b5f60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16148015612601575060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b905092915050565b5f60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361266857601a5490506126cc565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036126c65760195490506126cc565b601b5490505b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6126fb826126d2565b9050919050565b61270b816126f1565b82525050565b5f6020820190506127245f830184612702565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612761578082015181840152602081019050612746565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6127868261272a565b6127908185612734565b93506127a0818560208601612744565b6127a98161276c565b840191505092915050565b5f6020820190508181035f8301526127cc818461277c565b905092915050565b5f80fd5b6127e1816126f1565b81146127eb575f80fd5b50565b5f813590506127fc816127d8565b92915050565b5f819050919050565b61281481612802565b811461281e575f80fd5b50565b5f8135905061282f8161280b565b92915050565b5f806040838503121561284b5761284a6127d4565b5b5f612858858286016127ee565b925050602061286985828601612821565b9150509250929050565b5f8115159050919050565b61288781612873565b82525050565b5f6020820190506128a05f83018461287e565b92915050565b6128af81612802565b82525050565b5f6020820190506128c85f8301846128a6565b92915050565b5f805f606084860312156128e5576128e46127d4565b5b5f6128f2868287016127ee565b9350506020612903868287016127ee565b925050604061291486828701612821565b9150509250925092565b5f60208284031215612933576129326127d4565b5b5f612940848285016127ee565b91505092915050565b5f60ff82169050919050565b61295e81612949565b82525050565b5f6020820190506129775f830184612955565b92915050565b61298681612873565b8114612990575f80fd5b50565b5f813590506129a18161297d565b92915050565b5f80604083850312156129bd576129bc6127d4565b5b5f6129ca858286016127ee565b92505060206129db85828601612993565b9150509250929050565b5f805f606084860312156129fc576129fb6127d4565b5b5f612a09868287016127ee565b9350506020612a1a868287016127ee565b9250506040612a2b868287016127ee565b9150509250925092565b5f8060408385031215612a4b57612a4a6127d4565b5b5f612a58858286016127ee565b9250506020612a69858286016127ee565b9150509250929050565b5f612a7d826126d2565b9050919050565b612a8d81612a73565b8114612a97575f80fd5b50565b5f81359050612aa881612a84565b92915050565b5f60208284031215612ac357612ac26127d4565b5b5f612ad084828501612a9a565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115612b5b57808604811115612b3757612b36612ad9565b5b6001851615612b465780820291505b8081029050612b5485612b06565b9450612b1b565b94509492505050565b5f82612b735760019050612c2e565b81612b80575f9050612c2e565b8160018114612b965760028114612ba057612bcf565b6001915050612c2e565b60ff841115612bb257612bb1612ad9565b5b8360020a915084821115612bc957612bc8612ad9565b5b50612c2e565b5060208310610133831016604e8410600b8410161715612c045782820a905083811115612bff57612bfe612ad9565b5b612c2e565b612c118484846001612b12565b92509050818404811115612c2857612c27612ad9565b5b81810290505b9392505050565b5f612c3f82612802565b9150612c4a83612949565b9250612c777fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612b64565b905092915050565b5f612c8982612802565b9150612c9483612802565b9250828202612ca281612802565b91508282048414831517612cb957612cb8612ad9565b5b5092915050565b7f214f574e455200000000000000000000000000000000000000000000000000005f82015250565b5f612cf4600683612734565b9150612cff82612cc0565b602082019050919050565b5f6020820190508181035f830152612d2181612ce8565b9050919050565b5f81519050612d36816127d8565b92915050565b5f60208284031215612d5157612d506127d4565b5b5f612d5e84828501612d28565b91505092915050565b5f604082019050612d7a5f830185612702565b612d876020830184612702565b9392505050565b5f819050919050565b5f819050919050565b5f612dba612db5612db084612d8e565b612d97565b612802565b9050919050565b612dca81612da0565b82525050565b5f60c082019050612de35f830189612702565b612df060208301886128a6565b612dfd6040830187612dc1565b612e0a6060830186612dc1565b612e176080830185612702565b612e2460a08301846128a6565b979650505050505050565b5f81519050612e3d8161280b565b92915050565b5f805f60608486031215612e5a57612e596127d4565b5b5f612e6786828701612e2f565b9350506020612e7886828701612e2f565b9250506040612e8986828701612e2f565b9150509250925092565b5f612ead612ea8612ea3846126d2565b612d97565b6126d2565b9050919050565b5f612ebe82612e93565b9050919050565b5f612ecf82612eb4565b9050919050565b612edf81612ec5565b82525050565b5f602082019050612ef85f830184612ed6565b92915050565b7f49563245524332303a20617070726f76652066726f6d20746865207a65726f205f8201527f6164647265737300000000000000000000000000000000000000000000000000602082015250565b5f612f58602783612734565b9150612f6382612efe565b604082019050919050565b5f6020820190508181035f830152612f8581612f4c565b9050919050565b7f49563245524332303a20617070726f766520746f20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f612fe6602583612734565b9150612ff182612f8c565b604082019050919050565b5f6020820190508181035f83015261301381612fda565b9050919050565b5f61302482612802565b915061302f83612802565b925082820390508181111561304757613046612ad9565b5b92915050565b7f49563245524332303a207472616e736665722066726f6d20746865207a65726f5f8201527f2061646472657373000000000000000000000000000000000000000000000000602082015250565b5f6130a7602883612734565b91506130b28261304d565b604082019050919050565b5f6020820190508181035f8301526130d48161309b565b9050919050565b7f49563245524332303a207472616e7366657220746f20746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f613135602683612734565b9150613140826130db565b604082019050919050565b5f6020820190508181035f83015261316281613129565b9050919050565b7f74726164696e67416c6c6f7765640000000000000000000000000000000000005f82015250565b5f61319d600e83612734565b91506131a882613169565b602082019050919050565b5f6020820190508181035f8301526131ca81613191565b9050919050565b7f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e00005f82015250565b5f613205601e83612734565b9150613210826131d1565b602082019050919050565b5f6020820190508181035f830152613232816131f9565b9050919050565b7f5458204c696d69742045786365656465640000000000000000000000000000005f82015250565b5f61326d601183612734565b915061327882613239565b602082019050919050565b5f6020820190508181035f83015261329a81613261565b9050919050565b5f6132ab82612802565b91506132b683612802565b92508282019050808211156132ce576132cd612ad9565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61330b82612802565b915061331683612802565b925082613326576133256132d4565b5b828204905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6133bd816126f1565b82525050565b5f6133ce83836133b4565b60208301905092915050565b5f602082019050919050565b5f6133f08261338b565b6133fa8185613395565b9350613405836133a5565b805f5b8381101561343557815161341c88826133c3565b9750613427836133da565b925050600181019050613408565b5085935050505092915050565b5f60a0820190506134555f8301886128a6565b6134626020830187612dc1565b818103604083015261347481866133e6565b90506134836060830185612702565b61349060808301846128a6565b969550505050505056fe49563245524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212201ef06689fce8d2bc46e9646b43fe1deca761e1e2bad335180555f8bf8a0857b564736f6c63430008140033

Deployed Bytecode Sourcemap

5998:10280:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6096:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9070:67;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8133:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6685:59;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8272:132;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13638:312;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4857:87;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6621:57;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8410:67;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8592:110;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9771:165;;;;;;;;;;;;;:::i;:::-;;11750:311;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6751:60;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8483:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4950:77;;;;;;;;;;;;;:::i;:::-;;8708:78;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9143:71;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8792:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6566:46;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9226:537;;;:::i;:::-;;8937:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4740:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6096:21;;;;;;;;;;;;;:::o;9070:67::-;9107:13;9130:5;;;;;;;;;;;;;;;;;9123:12;;9070:67;:::o;8133:133::-;8208:4;8215:37;8224:10;8236:7;8245:6;8215:8;:37::i;:::-;8260:4;8253:11;;8133:133;;;;:::o;6685:59::-;;;;:::o;8272:132::-;8325:7;8342:60;8380:21;8398:1;8380:9;:21::i;:::-;8342:33;8359:15;6308:42;8359:9;:15::i;:::-;6267:1;6416:2;:15;;;;:::i;:::-;6399:13;:33;;;;:::i;:::-;8342:16;;:33;;;;:::i;:::-;:37;;:60;;;;:::i;:::-;8335:67;;8272:132;:::o;13638:312::-;13736:4;13753:36;13763:6;13771:9;13782:6;13753:9;:36::i;:::-;13800:120;13809:6;13817:10;13829:90;13865:6;13829:90;;;;;;;;;;;;;;;;;:11;:19;13841:6;13829:19;;;;;;;;;;;;;;;:31;13849:10;13829:31;;;;;;;;;;;;;;;;:35;;:90;;;;;:::i;:::-;13800:8;:120::i;:::-;13938:4;13931:11;;13638:312;;;;;:::o;4857:87::-;4912:4;4937:5;;;;;;;;;;;4926:16;;:7;:16;;;4919:23;;4857:87;;;:::o;6621:57::-;;;;:::o;8410:67::-;8451:5;6267:1;8459:16;;8410:67;:::o;8592:110::-;4648:19;4656:10;4648:7;:19::i;:::-;4640:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;8692:8:::1;8666:13;:23;8680:8;8666:23;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;8592:110:::0;;:::o;9771:165::-;4648:19;4656:10;4648:7;:19::i;:::-;4640:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;6267:1:::1;6416:2;:15;;;;:::i;:::-;6399:13;:33;;;;:::i;:::-;9823:11;:26;;;;6267:1;6416:2;:15;;;;:::i;:::-;6399:13;:33;;;;:::i;:::-;9860:13;:28;;;;6267:1;6416:2;:15;;;;:::i;:::-;6399:13;:33;;;;:::i;:::-;9899:14;:29;;;;9771:165::o:0;11750:311::-;4648:19;4656:10;4648:7;:19::i;:::-;4640:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;11877:10:::1;11864;;:23;;;;;;;;;;;;;;;;;;11903:10;11889:11;;:24;;;;;;;;;;;;;;;;;;11928:12;11915:10;;:25;;;;;;;;;;;;;;;;;;11979:4;11951:13;:25;11965:10;11951:25;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;12013:4;11985:13;:25;11999:10;11985:25;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;12049:4;12019:13;:27;12033:12;12019:27;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;11750:311:::0;;;:::o;6751:60::-;;;;:::o;8483:103::-;8549:7;8566:9;:18;8576:7;8566:18;;;;;;;;;;;;;;;;8559:25;;8483:103;;;:::o;4950:77::-;4648:19;4656:10;4648:7;:19::i;:::-;4640:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;5022:1:::1;5006:5:::0;::::1;:18;;;;;;;;;;;;;;;;;;4950:77::o:0;8708:78::-;8760:7;8778:5;;;;;;;;;;;8771:12;;8708:78;:::o;9143:71::-;9182:13;9205:7;;;;;;;;;;;;;;;;;9198:14;;9143:71;:::o;8792:139::-;8870:4;8877:40;8887:10;8899:9;8910:6;8877:9;:40::i;:::-;8925:4;8918:11;;8792:139;;;;:::o;6566:46::-;;;;;;;;;;;;;;;;;;;;;;:::o;9226:537::-;4648:19;4656:10;4648:7;:19::i;:::-;4640:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;9287:16:::1;9315:42;9287:71;;9369:13;9395:7;:15;;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9385:39;;;9433:4;9440:7;:12;;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9385:70;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9369:86;;9475:7;9466:6;;:16;;;;;;;;;;;;;;;;;;9502:5;9493:6;;:14;;;;;;;;;;;;;;;;;;9518:53;9535:4;9550:6;;;;;;;;;;;9568:1;9559:11;9518:8;:53::i;:::-;9583:6;;;;;;;;;;;:22;;;9613:9;9632:4;9638:24;9656:4;9638:9;:24::i;:::-;9663:1;9665::::0;9667:10:::1;9678:15;9583:111;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;9719:4;9705:11;;:18;;;;;;;;;;;;;;;;;;9751:4;9734:14;;:21;;;;;;;;;;;;;;;;;;9276:487;;9226:537::o:0;8937:127::-;9018:7;9035:11;:18;9047:5;9035:18;;;;;;;;;;;;;;;:27;9054:7;9035:27;;;;;;;;;;;;;;;;9028:34;;8937:127;;;;:::o;4740:111::-;4648:19;4656:10;4648:7;:19::i;:::-;4640:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;4814:3:::1;4806:5;::::0;:11:::1;;;;;;;;;;;;;;;;;;4824:25;4845:3;4824:25;;;;;;:::i;:::-;;;;;;;;4740:111:::0;:::o;14434:341::-;14544:1;14527:19;;:5;:19;;;14519:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;14628:1;14609:21;;:7;:21;;;14601:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;14713:6;14683:11;:18;14695:5;14683:18;;;;;;;;;;;;;;;:27;14702:7;14683:27;;;;;;;;;;;;;;;:36;;;;14751:7;14735:32;;14744:5;14735:32;;;14760:6;14735:32;;;;;;:::i;:::-;;;;;;;;14434:341;;;:::o;2562:98::-;2620:7;2651:1;2647;:5;;;;:::i;:::-;2640:12;;2562:98;;;;:::o;14783:1492::-;14898:1;14880:20;;:6;:20;;;14872:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;14985:1;14964:23;;:9;:23;;;14956:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;15045:13;:21;15059:6;15045:21;;;;;;;;;;;;;;;;;;;;;;;;;15044:22;:51;;;;;15071:13;:24;15085:9;15071:24;;;;;;;;;;;;;;;;;;;;;;;;;15070:25;15044:51;15041:123;;;15119:14;;;;;;;;;;;15111:41;;;;;;;;;;;;:::i;:::-;;;;;;;;;15041:123;15178:13;:21;15192:6;15178:21;;;;;;;;;;;;;;;;;;;;;;;;;15177:22;:51;;;;;15204:13;:24;15218:9;15204:24;;;;;;;;;;;;;;;;;;;;;;;;;15203:25;15177:51;:83;;;;;15253:6;;;;;;;;;;;15232:28;;:9;:28;;;;15177:83;:113;;;;;6308:42;15264:26;;:9;:26;;;;15177:113;15174:239;;;15352:14;;15315:32;15340:6;15315:9;:20;15325:9;15315:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;15314:52;;15306:95;;;;;;;;;;;;:::i;:::-;;;;;;;;;15174:239;15436:6;;;;;;;;;;;15426:16;;:6;:16;;;15423:153;;15476:13;;15466:6;:23;;:48;;;;15493:13;:21;15507:6;15493:21;;;;;;;;;;;;;;;;;;;;;;;;;15466:48;:76;;;;15518:13;:24;15532:9;15518:24;;;;;;;;;;;;;;;;;;;;;;;;;15466:76;15458:106;;;;;;;;;;;;:::i;:::-;;;;;;;;;15423:153;15604:11;;15594:6;:21;;:46;;;;15619:13;:21;15633:6;15619:21;;;;;;;;;;;;;;;;;;;;;;;;;15594:46;:74;;;;15644:13;:24;15658:9;15644:24;;;;;;;;;;;;;;;;;;;;;;;;;15594:74;15586:104;;;;;;;;;;;;:::i;:::-;;;;;;;;;15718:6;;;;;;;;;;;15705:19;;:9;:19;;;:45;;;;;15729:13;:21;15743:6;15729:21;;;;;;;;;;;;;;;;;;;;;;;;;15728:22;15705:45;15702:99;;;15787:1;15766:9;;:23;;;;;;;:::i;:::-;;;;;;;;15702:99;15814:41;15829:6;15837:9;15848:6;15814:14;:41::i;:::-;15811:125;;;15871:29;15886:13;;15871:14;:29::i;:::-;15922:1;15902:9;:22;;;;15811:125;15966:57;15988:34;15996:6;16004;16012:9;15988:7;:34::i;:::-;15966:9;:17;15976:6;15966:17;;;;;;;;;;;;;;;;:21;;:57;;;;:::i;:::-;15946:9;:17;15956:6;15946:17;;;;;;;;;;;;;;;:77;;;;16034:22;16059:29;16070:6;16078:9;16059:10;:29::i;:::-;:75;;16128:6;16059:75;;;16091:34;16099:6;16107:9;16118:6;16091:7;:34::i;:::-;16059:75;16034:100;;16168:40;16193:14;16168:9;:20;16178:9;16168:20;;;;;;;;;;;;;;;;:24;;:40;;;;:::i;:::-;16145:9;:20;16155:9;16145:20;;;;;;;;;;;;;;;:63;;;;16241:9;16224:43;;16233:6;16224:43;;;16252:14;16224:43;;;;;;:::i;:::-;;;;;;;;14861:1414;14783:1492;;;:::o;2880:240::-;3000:7;3058:1;3053;:6;;3061:12;3045:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3100:1;3096;:5;3089:12;;2880:240;;;;;:::o;2456:98::-;2514:7;2545:1;2541;:5;;;;:::i;:::-;2534:12;;2456:98;;;;:::o;11339:403::-;11437:4;11454:13;11480:14;;11470:6;:24;;11454:40;;11505:19;11555:13;;11527:24;11545:4;11527:9;:24::i;:::-;:41;;11505:63;;11587:8;;;;;;;;;;;11586:9;:24;;;;;11599:11;;;;;;;;;;;11586:24;:42;;;;;11614:14;;;;;;;;;;;11586:42;:54;;;;;11632:8;11586:54;:80;;;;;11645:13;:21;11659:6;11645:21;;;;;;;;;;;;;;;;;;;;;;;;;11644:22;11586:80;:103;;;;;11683:6;;;;;;;;;;;11670:19;;:9;:19;;;11586:103;:130;;;;;11706:10;;11693:9;;:23;;11586:130;:148;;;;;11720:14;11586:148;11579:155;;;;11339:403;;;;;:::o;9944:1043::-;7728:4;7717:8;;:15;;;;;;;;;;;;;;;;;;10016:20:::1;10039:58;10095:1;10040:49;10082:6;;10040:37;10064:12;;10040:19;10057:1;10040:12;;:16;;:19;;;;:::i;:::-;:23;;:37;;;;:::i;:::-;:41;;:49;;;;:::i;:::-;10039:55;;:58;;;;:::i;:::-;10016:81;;10108:32;10143:46;10176:12;10143:28;10158:12;;10143:10;:14;;:28;;;;:::i;:::-;:32;;:46;;;;:::i;:::-;10108:81;;10200:14;10217:40;10232:24;10217:10;:14;;:40;;;;:::i;:::-;10200:57;;10268:22;10293:21;10268:46;;10325:21;10339:6;10325:13;:21::i;:::-;10357:20;10380:41;10406:14;10380:21;:25;;:41;;;;:::i;:::-;10357:64;;10432:19;10453:48;10470:30;10487:12;;10470;:16;;:30;;;;:::i;:::-;10453:12;:16;;:48;;;;:::i;:::-;10432:69;;10512:29;10544;10560:12;;10544:11;:15;;:29;;;;:::i;:::-;10512:61;;10619:1;10587:21;:34;10584:103;;;10623:61;10636:24;10662:21;10623:12;:61::i;:::-;10584:103;10697:20;10720:36;10743:12;;10720:18;10736:1;10720:11;:15;;:18;;;;:::i;:::-;:22;;:36;;;;:::i;:::-;10697:59;;10785:1;10770:12;:16;10767:65;;;10796:10;;;;;;;;;;;10788:28;;:42;10817:12;10788:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;10767:65;10842:23;10868:21;10842:47;;10929:1;10903:15;:28;10900:80;;;10941:10;;;;;;;;;;;10933:28;;:45;10962:15;10933:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;10900:80;10005:982;;;;;;;;;7748:5:::0;7737:8;;:16;;;;;;;;;;;;;;;;;;9944:1043;:::o;13958:228::-;14043:7;14067:32;14081:6;14089:9;14067:13;:32::i;:::-;14063:53;;;14113:1;14102:8;:12;;;;14063:53;14133:32;14147:6;14155:9;14133:13;:32::i;:::-;:45;;14172:6;14133:45;;;14168:1;14133:45;14126:52;;13958:228;;;;;:::o;12508:161::-;12586:4;12611:13;:21;12625:6;12611:21;;;;;;;;;;;;;;;;;;;;;;;;;12610:22;:51;;;;;12637:13;:24;12651:9;12637:24;;;;;;;;;;;;;;;;;;;;;;;;;12636:25;12610:51;12603:58;;12508:161;;;;:::o;12841:789::-;12927:7;12963:6;;;;;;;;;;;12950:19;;:9;:19;;;:45;;;;;12974:13;:21;12988:6;12974:21;;;;;;;;;;;;;;;;;;;;;;;;;12973:22;12950:45;12947:112;;;12998:13;13014:15;13027:1;13014:8;;:12;;:15;;;;:::i;:::-;12998:31;;13040:17;13051:5;13040:6;:10;;:17;;;;:::i;:::-;13031:26;;12996:63;12947:112;13101:1;13072:26;13080:6;13088:9;13072:7;:26::i;:::-;:30;13069:530;;;13118:17;13138:55;13181:11;;13138:38;13149:26;13157:6;13165:9;13149:7;:26::i;:::-;13138:6;:10;;:38;;;;:::i;:::-;:42;;:55;;;;:::i;:::-;13118:75;;13235:39;13264:9;13235;:24;13253:4;13235:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;13208:9;:24;13226:4;13208:24;;;;;;;;;;;;;;;:66;;;;13319:4;13294:42;;13303:6;13294:42;;;13326:9;13294:42;;;;;;:::i;:::-;;;;;;;;13378:1;13354:13;;:26;:72;;;;;13413:13;;13384:26;13392:6;13400:9;13384:7;:26::i;:::-;:42;13354:72;13351:194;;;13446:83;13464:4;6308:42;13486;13514:13;;13486:23;13497:11;;13486:6;:10;;:23;;;;:::i;:::-;:27;;:42;;;;:::i;:::-;13446:9;:83::i;:::-;13351:194;13566:21;13577:9;13566:6;:10;;:21;;;;:::i;:::-;13559:28;;;;;13069:530;13616:6;13609:13;;12841:789;;;;;;:::o;2774:98::-;2832:7;2863:1;2859;:5;;;;:::i;:::-;2852:12;;2774:98;;;;:::o;3375:::-;3433:7;3464:1;3460;:5;;;;:::i;:::-;3453:12;;3375:98;;;;:::o;12069:431::-;12132:21;12170:1;12156:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12132:40;;12201:4;12183;12188:1;12183:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;12227:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12217:4;12222:1;12217:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;12251:53;12268:4;12283:6;;;;;;;;;;;12292:11;12251:8;:53::i;:::-;12315:6;;;;;;;;;;;:57;;;12387:11;12413:1;12429:4;12456;12476:15;12315:177;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12121:379;12069:431;:::o;10995:336::-;11076:53;11093:4;11108:6;;;;;;;;;;;11117:11;11076:8;:53::i;:::-;11140:6;;;;;;;;;;;:22;;;11170:9;11203:4;11223:11;11249:1;11265;11281:11;;;;;;;;;;;11307:15;11140:183;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;10995:336;;:::o;12677:156::-;12758:4;12795:6;;;;;;;;;;;12782:19;;:9;:19;;;:43;;;;;12815:10;;;;;;;;;;;12805:20;;:6;:20;;;12782:43;12775:50;;12677:156;;;;:::o;14194:232::-;14269:7;14305:6;;;;;;;;;;;14292:19;;:9;:19;;;14289:46;;14320:13;;14313:20;;;;14289:46;14358:6;;;;;;;;;;;14348:16;;:6;:16;;;14345:42;;14373:12;;14366:19;;;;14345:42;14404:14;;14397:21;;14194:232;;;;;:::o;7:126:1:-;44:7;84:42;77:5;73:54;62:65;;7:126;;;:::o;139:96::-;176:7;205:24;223:5;205:24;:::i;:::-;194:35;;139:96;;;:::o;241:118::-;328:24;346:5;328:24;:::i;:::-;323:3;316:37;241:118;;:::o;365:222::-;458:4;496:2;485:9;481:18;473:26;;509:71;577:1;566:9;562:17;553:6;509:71;:::i;:::-;365:222;;;;:::o;593:99::-;645:6;679:5;673:12;663:22;;593:99;;;:::o;698:169::-;782:11;816:6;811:3;804:19;856:4;851:3;847:14;832:29;;698:169;;;;:::o;873:246::-;954:1;964:113;978:6;975:1;972:13;964:113;;;1063:1;1058:3;1054:11;1048:18;1044:1;1039:3;1035:11;1028:39;1000:2;997:1;993:10;988:15;;964:113;;;1111:1;1102:6;1097:3;1093:16;1086:27;935:184;873:246;;;:::o;1125:102::-;1166:6;1217:2;1213:7;1208:2;1201:5;1197:14;1193:28;1183:38;;1125:102;;;:::o;1233:377::-;1321:3;1349:39;1382:5;1349:39;:::i;:::-;1404:71;1468:6;1463:3;1404:71;:::i;:::-;1397:78;;1484:65;1542:6;1537:3;1530:4;1523:5;1519:16;1484:65;:::i;:::-;1574:29;1596:6;1574:29;:::i;:::-;1569:3;1565:39;1558:46;;1325:285;1233:377;;;;:::o;1616:313::-;1729:4;1767:2;1756:9;1752:18;1744:26;;1816:9;1810:4;1806:20;1802:1;1791:9;1787:17;1780:47;1844:78;1917:4;1908:6;1844:78;:::i;:::-;1836:86;;1616:313;;;;:::o;2016:117::-;2125:1;2122;2115:12;2262:122;2335:24;2353:5;2335:24;:::i;:::-;2328:5;2325:35;2315:63;;2374:1;2371;2364:12;2315:63;2262:122;:::o;2390:139::-;2436:5;2474:6;2461:20;2452:29;;2490:33;2517:5;2490:33;:::i;:::-;2390:139;;;;:::o;2535:77::-;2572:7;2601:5;2590:16;;2535:77;;;:::o;2618:122::-;2691:24;2709:5;2691:24;:::i;:::-;2684:5;2681:35;2671:63;;2730:1;2727;2720:12;2671:63;2618:122;:::o;2746:139::-;2792:5;2830:6;2817:20;2808:29;;2846:33;2873:5;2846:33;:::i;:::-;2746:139;;;;:::o;2891:474::-;2959:6;2967;3016:2;3004:9;2995:7;2991:23;2987:32;2984:119;;;3022:79;;:::i;:::-;2984:119;3142:1;3167:53;3212:7;3203:6;3192:9;3188:22;3167:53;:::i;:::-;3157:63;;3113:117;3269:2;3295:53;3340:7;3331:6;3320:9;3316:22;3295:53;:::i;:::-;3285:63;;3240:118;2891:474;;;;;:::o;3371:90::-;3405:7;3448:5;3441:13;3434:21;3423:32;;3371:90;;;:::o;3467:109::-;3548:21;3563:5;3548:21;:::i;:::-;3543:3;3536:34;3467:109;;:::o;3582:210::-;3669:4;3707:2;3696:9;3692:18;3684:26;;3720:65;3782:1;3771:9;3767:17;3758:6;3720:65;:::i;:::-;3582:210;;;;:::o;3798:118::-;3885:24;3903:5;3885:24;:::i;:::-;3880:3;3873:37;3798:118;;:::o;3922:222::-;4015:4;4053:2;4042:9;4038:18;4030:26;;4066:71;4134:1;4123:9;4119:17;4110:6;4066:71;:::i;:::-;3922:222;;;;:::o;4150:619::-;4227:6;4235;4243;4292:2;4280:9;4271:7;4267:23;4263:32;4260:119;;;4298:79;;:::i;:::-;4260:119;4418:1;4443:53;4488:7;4479:6;4468:9;4464:22;4443:53;:::i;:::-;4433:63;;4389:117;4545:2;4571:53;4616:7;4607:6;4596:9;4592:22;4571:53;:::i;:::-;4561:63;;4516:118;4673:2;4699:53;4744:7;4735:6;4724:9;4720:22;4699:53;:::i;:::-;4689:63;;4644:118;4150:619;;;;;:::o;4775:329::-;4834:6;4883:2;4871:9;4862:7;4858:23;4854:32;4851:119;;;4889:79;;:::i;:::-;4851:119;5009:1;5034:53;5079:7;5070:6;5059:9;5055:22;5034:53;:::i;:::-;5024:63;;4980:117;4775:329;;;;:::o;5110:86::-;5145:7;5185:4;5178:5;5174:16;5163:27;;5110:86;;;:::o;5202:112::-;5285:22;5301:5;5285:22;:::i;:::-;5280:3;5273:35;5202:112;;:::o;5320:214::-;5409:4;5447:2;5436:9;5432:18;5424:26;;5460:67;5524:1;5513:9;5509:17;5500:6;5460:67;:::i;:::-;5320:214;;;;:::o;5540:116::-;5610:21;5625:5;5610:21;:::i;:::-;5603:5;5600:32;5590:60;;5646:1;5643;5636:12;5590:60;5540:116;:::o;5662:133::-;5705:5;5743:6;5730:20;5721:29;;5759:30;5783:5;5759:30;:::i;:::-;5662:133;;;;:::o;5801:468::-;5866:6;5874;5923:2;5911:9;5902:7;5898:23;5894:32;5891:119;;;5929:79;;:::i;:::-;5891:119;6049:1;6074:53;6119:7;6110:6;6099:9;6095:22;6074:53;:::i;:::-;6064:63;;6020:117;6176:2;6202:50;6244:7;6235:6;6224:9;6220:22;6202:50;:::i;:::-;6192:60;;6147:115;5801:468;;;;;:::o;6275:619::-;6352:6;6360;6368;6417:2;6405:9;6396:7;6392:23;6388:32;6385:119;;;6423:79;;:::i;:::-;6385:119;6543:1;6568:53;6613:7;6604:6;6593:9;6589:22;6568:53;:::i;:::-;6558:63;;6514:117;6670:2;6696:53;6741:7;6732:6;6721:9;6717:22;6696:53;:::i;:::-;6686:63;;6641:118;6798:2;6824:53;6869:7;6860:6;6849:9;6845:22;6824:53;:::i;:::-;6814:63;;6769:118;6275:619;;;;;:::o;6900:474::-;6968:6;6976;7025:2;7013:9;7004:7;7000:23;6996:32;6993:119;;;7031:79;;:::i;:::-;6993:119;7151:1;7176:53;7221:7;7212:6;7201:9;7197:22;7176:53;:::i;:::-;7166:63;;7122:117;7278:2;7304:53;7349:7;7340:6;7329:9;7325:22;7304:53;:::i;:::-;7294:63;;7249:118;6900:474;;;;;:::o;7380:104::-;7425:7;7454:24;7472:5;7454:24;:::i;:::-;7443:35;;7380:104;;;:::o;7490:138::-;7571:32;7597:5;7571:32;:::i;:::-;7564:5;7561:43;7551:71;;7618:1;7615;7608:12;7551:71;7490:138;:::o;7634:155::-;7688:5;7726:6;7713:20;7704:29;;7742:41;7777:5;7742:41;:::i;:::-;7634:155;;;;:::o;7795:345::-;7862:6;7911:2;7899:9;7890:7;7886:23;7882:32;7879:119;;;7917:79;;:::i;:::-;7879:119;8037:1;8062:61;8115:7;8106:6;8095:9;8091:22;8062:61;:::i;:::-;8052:71;;8008:125;7795:345;;;;:::o;8146:180::-;8194:77;8191:1;8184:88;8291:4;8288:1;8281:15;8315:4;8312:1;8305:15;8332:102;8374:8;8421:5;8418:1;8414:13;8393:34;;8332:102;;;:::o;8440:848::-;8501:5;8508:4;8532:6;8523:15;;8556:5;8547:14;;8570:712;8591:1;8581:8;8578:15;8570:712;;;8686:4;8681:3;8677:14;8671:4;8668:24;8665:50;;;8695:18;;:::i;:::-;8665:50;8745:1;8735:8;8731:16;8728:451;;;9160:4;9153:5;9149:16;9140:25;;8728:451;9210:4;9204;9200:15;9192:23;;9240:32;9263:8;9240:32;:::i;:::-;9228:44;;8570:712;;;8440:848;;;;;;;:::o;9294:1073::-;9348:5;9539:8;9529:40;;9560:1;9551:10;;9562:5;;9529:40;9588:4;9578:36;;9605:1;9596:10;;9607:5;;9578:36;9674:4;9722:1;9717:27;;;;9758:1;9753:191;;;;9667:277;;9717:27;9735:1;9726:10;;9737:5;;;9753:191;9798:3;9788:8;9785:17;9782:43;;;9805:18;;:::i;:::-;9782:43;9854:8;9851:1;9847:16;9838:25;;9889:3;9882:5;9879:14;9876:40;;;9896:18;;:::i;:::-;9876:40;9929:5;;;9667:277;;10053:2;10043:8;10040:16;10034:3;10028:4;10025:13;10021:36;10003:2;9993:8;9990:16;9985:2;9979:4;9976:12;9972:35;9956:111;9953:246;;;10109:8;10103:4;10099:19;10090:28;;10144:3;10137:5;10134:14;10131:40;;;10151:18;;:::i;:::-;10131:40;10184:5;;9953:246;10224:42;10262:3;10252:8;10246:4;10243:1;10224:42;:::i;:::-;10209:57;;;;10298:4;10293:3;10289:14;10282:5;10279:25;10276:51;;;10307:18;;:::i;:::-;10276:51;10356:4;10349:5;10345:16;10336:25;;9294:1073;;;;;;:::o;10373:281::-;10431:5;10455:23;10473:4;10455:23;:::i;:::-;10447:31;;10499:25;10515:8;10499:25;:::i;:::-;10487:37;;10543:104;10580:66;10570:8;10564:4;10543:104;:::i;:::-;10534:113;;10373:281;;;;:::o;10660:410::-;10700:7;10723:20;10741:1;10723:20;:::i;:::-;10718:25;;10757:20;10775:1;10757:20;:::i;:::-;10752:25;;10812:1;10809;10805:9;10834:30;10852:11;10834:30;:::i;:::-;10823:41;;11013:1;11004:7;11000:15;10997:1;10994:22;10974:1;10967:9;10947:83;10924:139;;11043:18;;:::i;:::-;10924:139;10708:362;10660:410;;;;:::o;11076:156::-;11216:8;11212:1;11204:6;11200:14;11193:32;11076:156;:::o;11238:365::-;11380:3;11401:66;11465:1;11460:3;11401:66;:::i;:::-;11394:73;;11476:93;11565:3;11476:93;:::i;:::-;11594:2;11589:3;11585:12;11578:19;;11238:365;;;:::o;11609:419::-;11775:4;11813:2;11802:9;11798:18;11790:26;;11862:9;11856:4;11852:20;11848:1;11837:9;11833:17;11826:47;11890:131;12016:4;11890:131;:::i;:::-;11882:139;;11609:419;;;:::o;12034:143::-;12091:5;12122:6;12116:13;12107:22;;12138:33;12165:5;12138:33;:::i;:::-;12034:143;;;;:::o;12183:351::-;12253:6;12302:2;12290:9;12281:7;12277:23;12273:32;12270:119;;;12308:79;;:::i;:::-;12270:119;12428:1;12453:64;12509:7;12500:6;12489:9;12485:22;12453:64;:::i;:::-;12443:74;;12399:128;12183:351;;;;:::o;12540:332::-;12661:4;12699:2;12688:9;12684:18;12676:26;;12712:71;12780:1;12769:9;12765:17;12756:6;12712:71;:::i;:::-;12793:72;12861:2;12850:9;12846:18;12837:6;12793:72;:::i;:::-;12540:332;;;;;:::o;12878:85::-;12923:7;12952:5;12941:16;;12878:85;;;:::o;12969:60::-;12997:3;13018:5;13011:12;;12969:60;;;:::o;13035:158::-;13093:9;13126:61;13144:42;13153:32;13179:5;13153:32;:::i;:::-;13144:42;:::i;:::-;13126:61;:::i;:::-;13113:74;;13035:158;;;:::o;13199:147::-;13294:45;13333:5;13294:45;:::i;:::-;13289:3;13282:58;13199:147;;:::o;13352:807::-;13601:4;13639:3;13628:9;13624:19;13616:27;;13653:71;13721:1;13710:9;13706:17;13697:6;13653:71;:::i;:::-;13734:72;13802:2;13791:9;13787:18;13778:6;13734:72;:::i;:::-;13816:80;13892:2;13881:9;13877:18;13868:6;13816:80;:::i;:::-;13906;13982:2;13971:9;13967:18;13958:6;13906:80;:::i;:::-;13996:73;14064:3;14053:9;14049:19;14040:6;13996:73;:::i;:::-;14079;14147:3;14136:9;14132:19;14123:6;14079:73;:::i;:::-;13352:807;;;;;;;;;:::o;14165:143::-;14222:5;14253:6;14247:13;14238:22;;14269:33;14296:5;14269:33;:::i;:::-;14165:143;;;;:::o;14314:663::-;14402:6;14410;14418;14467:2;14455:9;14446:7;14442:23;14438:32;14435:119;;;14473:79;;:::i;:::-;14435:119;14593:1;14618:64;14674:7;14665:6;14654:9;14650:22;14618:64;:::i;:::-;14608:74;;14564:128;14731:2;14757:64;14813:7;14804:6;14793:9;14789:22;14757:64;:::i;:::-;14747:74;;14702:129;14870:2;14896:64;14952:7;14943:6;14932:9;14928:22;14896:64;:::i;:::-;14886:74;;14841:129;14314:663;;;;;:::o;14983:142::-;15033:9;15066:53;15084:34;15093:24;15111:5;15093:24;:::i;:::-;15084:34;:::i;:::-;15066:53;:::i;:::-;15053:66;;14983:142;;;:::o;15131:126::-;15181:9;15214:37;15245:5;15214:37;:::i;:::-;15201:50;;15131:126;;;:::o;15263:134::-;15321:9;15354:37;15385:5;15354:37;:::i;:::-;15341:50;;15263:134;;;:::o;15403:147::-;15498:45;15537:5;15498:45;:::i;:::-;15493:3;15486:58;15403:147;;:::o;15556:238::-;15657:4;15695:2;15684:9;15680:18;15672:26;;15708:79;15784:1;15773:9;15769:17;15760:6;15708:79;:::i;:::-;15556:238;;;;:::o;15800:226::-;15940:34;15936:1;15928:6;15924:14;15917:58;16009:9;16004:2;15996:6;15992:15;15985:34;15800:226;:::o;16032:366::-;16174:3;16195:67;16259:2;16254:3;16195:67;:::i;:::-;16188:74;;16271:93;16360:3;16271:93;:::i;:::-;16389:2;16384:3;16380:12;16373:19;;16032:366;;;:::o;16404:419::-;16570:4;16608:2;16597:9;16593:18;16585:26;;16657:9;16651:4;16647:20;16643:1;16632:9;16628:17;16621:47;16685:131;16811:4;16685:131;:::i;:::-;16677:139;;16404:419;;;:::o;16829:224::-;16969:34;16965:1;16957:6;16953:14;16946:58;17038:7;17033:2;17025:6;17021:15;17014:32;16829:224;:::o;17059:366::-;17201:3;17222:67;17286:2;17281:3;17222:67;:::i;:::-;17215:74;;17298:93;17387:3;17298:93;:::i;:::-;17416:2;17411:3;17407:12;17400:19;;17059:366;;;:::o;17431:419::-;17597:4;17635:2;17624:9;17620:18;17612:26;;17684:9;17678:4;17674:20;17670:1;17659:9;17655:17;17648:47;17712:131;17838:4;17712:131;:::i;:::-;17704:139;;17431:419;;;:::o;17856:194::-;17896:4;17916:20;17934:1;17916:20;:::i;:::-;17911:25;;17950:20;17968:1;17950:20;:::i;:::-;17945:25;;17994:1;17991;17987:9;17979:17;;18018:1;18012:4;18009:11;18006:37;;;18023:18;;:::i;:::-;18006:37;17856:194;;;;:::o;18056:227::-;18196:34;18192:1;18184:6;18180:14;18173:58;18265:10;18260:2;18252:6;18248:15;18241:35;18056:227;:::o;18289:366::-;18431:3;18452:67;18516:2;18511:3;18452:67;:::i;:::-;18445:74;;18528:93;18617:3;18528:93;:::i;:::-;18646:2;18641:3;18637:12;18630:19;;18289:366;;;:::o;18661:419::-;18827:4;18865:2;18854:9;18850:18;18842:26;;18914:9;18908:4;18904:20;18900:1;18889:9;18885:17;18878:47;18942:131;19068:4;18942:131;:::i;:::-;18934:139;;18661:419;;;:::o;19086:225::-;19226:34;19222:1;19214:6;19210:14;19203:58;19295:8;19290:2;19282:6;19278:15;19271:33;19086:225;:::o;19317:366::-;19459:3;19480:67;19544:2;19539:3;19480:67;:::i;:::-;19473:74;;19556:93;19645:3;19556:93;:::i;:::-;19674:2;19669:3;19665:12;19658:19;;19317:366;;;:::o;19689:419::-;19855:4;19893:2;19882:9;19878:18;19870:26;;19942:9;19936:4;19932:20;19928:1;19917:9;19913:17;19906:47;19970:131;20096:4;19970:131;:::i;:::-;19962:139;;19689:419;;;:::o;20114:164::-;20254:16;20250:1;20242:6;20238:14;20231:40;20114:164;:::o;20284:366::-;20426:3;20447:67;20511:2;20506:3;20447:67;:::i;:::-;20440:74;;20523:93;20612:3;20523:93;:::i;:::-;20641:2;20636:3;20632:12;20625:19;;20284:366;;;:::o;20656:419::-;20822:4;20860:2;20849:9;20845:18;20837:26;;20909:9;20903:4;20899:20;20895:1;20884:9;20880:17;20873:47;20937:131;21063:4;20937:131;:::i;:::-;20929:139;;20656:419;;;:::o;21081:180::-;21221:32;21217:1;21209:6;21205:14;21198:56;21081:180;:::o;21267:366::-;21409:3;21430:67;21494:2;21489:3;21430:67;:::i;:::-;21423:74;;21506:93;21595:3;21506:93;:::i;:::-;21624:2;21619:3;21615:12;21608:19;;21267:366;;;:::o;21639:419::-;21805:4;21843:2;21832:9;21828:18;21820:26;;21892:9;21886:4;21882:20;21878:1;21867:9;21863:17;21856:47;21920:131;22046:4;21920:131;:::i;:::-;21912:139;;21639:419;;;:::o;22064:167::-;22204:19;22200:1;22192:6;22188:14;22181:43;22064:167;:::o;22237:366::-;22379:3;22400:67;22464:2;22459:3;22400:67;:::i;:::-;22393:74;;22476:93;22565:3;22476:93;:::i;:::-;22594:2;22589:3;22585:12;22578:19;;22237:366;;;:::o;22609:419::-;22775:4;22813:2;22802:9;22798:18;22790:26;;22862:9;22856:4;22852:20;22848:1;22837:9;22833:17;22826:47;22890:131;23016:4;22890:131;:::i;:::-;22882:139;;22609:419;;;:::o;23034:191::-;23074:3;23093:20;23111:1;23093:20;:::i;:::-;23088:25;;23127:20;23145:1;23127:20;:::i;:::-;23122:25;;23170:1;23167;23163:9;23156:16;;23191:3;23188:1;23185:10;23182:36;;;23198:18;;:::i;:::-;23182:36;23034:191;;;;:::o;23231:180::-;23279:77;23276:1;23269:88;23376:4;23373:1;23366:15;23400:4;23397:1;23390:15;23417:185;23457:1;23474:20;23492:1;23474:20;:::i;:::-;23469:25;;23508:20;23526:1;23508:20;:::i;:::-;23503:25;;23547:1;23537:35;;23552:18;;:::i;:::-;23537:35;23594:1;23591;23587:9;23582:14;;23417:185;;;;:::o;23608:180::-;23656:77;23653:1;23646:88;23753:4;23750:1;23743:15;23777:4;23774:1;23767:15;23794:180;23842:77;23839:1;23832:88;23939:4;23936:1;23929:15;23963:4;23960:1;23953:15;23980:114;24047:6;24081:5;24075:12;24065:22;;23980:114;;;:::o;24100:184::-;24199:11;24233:6;24228:3;24221:19;24273:4;24268:3;24264:14;24249:29;;24100:184;;;;:::o;24290:132::-;24357:4;24380:3;24372:11;;24410:4;24405:3;24401:14;24393:22;;24290:132;;;:::o;24428:108::-;24505:24;24523:5;24505:24;:::i;:::-;24500:3;24493:37;24428:108;;:::o;24542:179::-;24611:10;24632:46;24674:3;24666:6;24632:46;:::i;:::-;24710:4;24705:3;24701:14;24687:28;;24542:179;;;;:::o;24727:113::-;24797:4;24829;24824:3;24820:14;24812:22;;24727:113;;;:::o;24876:732::-;24995:3;25024:54;25072:5;25024:54;:::i;:::-;25094:86;25173:6;25168:3;25094:86;:::i;:::-;25087:93;;25204:56;25254:5;25204:56;:::i;:::-;25283:7;25314:1;25299:284;25324:6;25321:1;25318:13;25299:284;;;25400:6;25394:13;25427:63;25486:3;25471:13;25427:63;:::i;:::-;25420:70;;25513:60;25566:6;25513:60;:::i;:::-;25503:70;;25359:224;25346:1;25343;25339:9;25334:14;;25299:284;;;25303:14;25599:3;25592:10;;25000:608;;;24876:732;;;;:::o;25614:831::-;25877:4;25915:3;25904:9;25900:19;25892:27;;25929:71;25997:1;25986:9;25982:17;25973:6;25929:71;:::i;:::-;26010:80;26086:2;26075:9;26071:18;26062:6;26010:80;:::i;:::-;26137:9;26131:4;26127:20;26122:2;26111:9;26107:18;26100:48;26165:108;26268:4;26259:6;26165:108;:::i;:::-;26157:116;;26283:72;26351:2;26340:9;26336:18;26327:6;26283:72;:::i;:::-;26365:73;26433:3;26422:9;26418:19;26409:6;26365:73;:::i;:::-;25614:831;;;;;;;;:::o

Swarm Source

ipfs://1ef06689fce8d2bc46e9646b43fe1deca761e1e2bad335180555f8bf8a0857b5
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.