ETH Price: $3,520.62 (+4.95%)

Token

Cheems (CHEEMS)
 

Overview

Max Total Supply

100,000,000 CHEEMS

Holders

282

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0 CHEEMS

Value
$0.00
0x34a24a8aea33119eec2e3264875b0d13b1b0500b
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:
CHEEMS

Compiler Version
v0.8.26+commit.8a97fa7a

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-09-23
*/

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.22;

abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}

interface IERC20 {
    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);

    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

interface IERC20Metadata is IERC20 {
    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);
}

contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

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

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

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

    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 = _msgSender();
        _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 = _msgSender();
        _approve(owner, spender, amount);
        return true;
    }

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

    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        address owner = _msgSender();
        _approve(owner, spender, _allowances[owner][spender] + addedValue);
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        address owner = _msgSender();
        uint256 currentAllowance = _allowances[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");
        unchecked {
            _balances[from] = fromBalance - amount;
        }
        _balances[to] += amount;

        emit Transfer(from, to, amount);

        _afterTokenTransfer(from, to, amount);
    }

    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

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

        _totalSupply += amount;
        _balances[account] += amount;
        emit Transfer(address(0), account, amount);

        _afterTokenTransfer(address(0), account, 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 {}

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

abstract contract Ownable is Context {
    address private _owner;

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

    constructor() {
        _transferOwnership(_msgSender());
    }

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

    modifier onlyOwner() {
        require(owner() == _msgSender(), "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);
    }
}

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

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

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

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

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

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

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

interface IUniswapV2Router02 {
    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 swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}

contract CHEEMS is ERC20, Ownable {
    using SafeMath for uint256;

    IUniswapV2Router02 private constant _router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);

    address public uniV2PairAddress;
    address public immutable feeAddress;

    uint256 public maxHoldings;
    uint256 public swapThresholdSize;

    uint256 public buyFeePercent;
    uint256 public sellFeePercent;

    bool private _inSwap;
    mapping (address => bool) private _excludedLimits;

    event FeeSwap(uint256 indexed value);

    constructor() ERC20("Cheems", "CHEEMS") payable {
        uint256 totalSupply = 100000000 * 1e18;
        uint256 lpSupply = totalSupply.mul(53).div(100);

        maxHoldings = totalSupply.mul(15).div(1000);
        swapThresholdSize = totalSupply.mul(1).div(1000);

        feeAddress = 0xC5e1a2854178b152b239068F4DC8d53cC34f26c7;

        buyFeePercent = 20;
        sellFeePercent = 20;

        _excludedLimits[feeAddress] = true;
        _excludedLimits[msg.sender] = true;
        _excludedLimits[tx.origin] = true;
        _excludedLimits[address(this)] = true;
        _excludedLimits[address(0xdead)] = true;

        _mint(tx.origin, totalSupply.sub(lpSupply));

        _mint(msg.sender, lpSupply);
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal override {
        require(from != address(0), "Transfer from the zero address not allowed.");
        require(to != address(0), "Transfer to the zero address not allowed.");
        require(amount > 0, 'Transfer amount must be greater than zero.');

        bool excluded = _excludedLimits[from] || _excludedLimits[to];
        require(uniV2PairAddress != address(0) || excluded, "Liquidity pair not yet created.");

        bool isSell = to == uniV2PairAddress;
        bool isBuy = from == uniV2PairAddress;

        if (!isSell && maxHoldings > 0 && !excluded)
            require(balanceOf(to) + amount <= maxHoldings, "Balance exceeds max holdings amount, consider using a second wallet.");

        if (
          balanceOf(address(this)) >= swapThresholdSize &&
          !_inSwap &&
          isSell &&
          !excluded 
        ) {
            _inSwap = true;
            _swapBackTokenFee();
            _inSwap = false;
        }

        uint256 fee = isBuy ? buyFeePercent : sellFeePercent;

        if (fee > 0) {
            if (!excluded && !_inSwap && (isBuy || isSell)) {
                uint256 fees = amount.mul(fee).div(100);

                if (fees > 0)
                    super._transfer(from, address(this), fees);

                amount = amount.sub(fees);
            }
        }

        super._transfer(from, to, amount);
    }

    function _swapBackTokenFee() private {
        uint256 contractBalance = balanceOf(address(this));
        if (contractBalance == 0) return;
        if (contractBalance > swapThresholdSize) contractBalance = swapThresholdSize;

        uint256 initETHBal = address(this).balance;

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = _router.WETH();

        _approve(address(this), address(_router), contractBalance);

        _router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            contractBalance,
            0,
            path,
            address(this),
            block.timestamp
        );

        uint256 ethFee = address(this).balance.sub(initETHBal);
        uint256 splitFee = ethFee.mul(5).div(100);

        ethFee = ethFee.sub(splitFee);
        payable(feeAddress).transfer(ethFee);
        payable(0xC5e1a2854178b152b239068F4DC8d53cC34f26c7).transfer(splitFee);

        emit FeeSwap(splitFee);
    }

    function openTrading() external onlyOwner {
        uniV2PairAddress = IUniswapV2Factory(_router.factory()).getPair(address(this), _router.WETH());
    }

    function updateFeeThreshold(uint256 newThreshold) external onlyOwner {
        require(newThreshold >= totalSupply().mul(1).div(100000), "Swap threshold cannot be lower than 0.001% total supply.");
        require(newThreshold <= totalSupply().mul(2).div(100), "Swap threshold cannot be higher than 2% total supply.");
        swapThresholdSize = newThreshold;
    }

    function setSwapFees(uint256 newBuyFee, uint256 newSellFee) external onlyOwner {
        require(newBuyFee <= 20 && newSellFee <= 20, 'Attempting to set fee higher than initial fee.'); // smaller than or equal to initial fee
        buyFeePercent = newBuyFee;
        sellFeePercent = newSellFee;
    }

    function disableHoldingLimit() external onlyOwner {
        maxHoldings = 0;
    }

    function removeStuckETH() external onlyOwner {
        payable(feeAddress).transfer(address(this).balance);
    }

    function removeStuckERC20(IERC20 token) external onlyOwner {
        token.transfer(feeAddress, token.balanceOf(address(this)));
    }

    receive() external payable {}
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"payable","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":"uint256","name":"value","type":"uint256"}],"name":"FeeSwap","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":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyFeePercent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":[],"name":"disableHoldingLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"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":[],"name":"maxHoldings","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"removeStuckERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeStuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellFeePercent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newBuyFee","type":"uint256"},{"internalType":"uint256","name":"newSellFee","type":"uint256"}],"name":"setSwapFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapThresholdSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":[],"name":"uniV2PairAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newThreshold","type":"uint256"}],"name":"updateFeeThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60a06040526040518060400160405280600681526020017f436865656d7300000000000000000000000000000000000000000000000000008152506040518060400160405280600681526020017f434845454d530000000000000000000000000000000000000000000000000000815250816003908161007f9190610831565b50806004908161008f9190610831565b5050506100ae6100a361038160201b60201c565b61038860201b60201c565b5f6a52b7d2dcc80cd2e400000090505f6100e560646100d760358561044b60201b90919060201c565b61046060201b90919060201c565b905061010f6103e8610101600f8561044b60201b90919060201c565b61046060201b90919060201c565b60078190555061013d6103e861012f60018561044b60201b90919060201c565b61046060201b90919060201c565b60088190555073c5e1a2854178b152b239068f4dc8d53cc34f26c773ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff168152505060146009819055506014600a819055506001600c5f60805173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600c5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600c5f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600c5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600c5f61dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555061036a3261035f838561047560201b90919060201c565b61048a60201b60201c565b61037a338261048a60201b60201c565b5050610ad1565b5f33905090565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f8183610458919061092d565b905092915050565b5f818361046d919061099b565b905092915050565b5f818361048291906109cb565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036104f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104ef90610a58565b60405180910390fd5b6105095f83836105ed60201b60201c565b8060025f82825461051a9190610a76565b92505081905550805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461056c9190610a76565b925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516105d09190610ab8565b60405180910390a36105e95f83836105f260201b60201c565b5050565b505050565b505050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061067257607f821691505b6020821081036106855761068461062e565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026106e77fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826106ac565b6106f186836106ac565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f61073561073061072b84610709565b610712565b610709565b9050919050565b5f819050919050565b61074e8361071b565b61076261075a8261073c565b8484546106b8565b825550505050565b5f90565b61077661076a565b610781818484610745565b505050565b5b818110156107a4576107995f8261076e565b600181019050610787565b5050565b601f8211156107e9576107ba8161068b565b6107c38461069d565b810160208510156107d2578190505b6107e66107de8561069d565b830182610786565b50505b505050565b5f82821c905092915050565b5f6108095f19846008026107ee565b1980831691505092915050565b5f61082183836107fa565b9150826002028217905092915050565b61083a826105f7565b67ffffffffffffffff81111561085357610852610601565b5b61085d825461065b565b6108688282856107a8565b5f60209050601f831160018114610899575f8415610887578287015190505b6108918582610816565b8655506108f8565b601f1984166108a78661068b565b5f5b828110156108ce578489015182556001820191506020850194506020810190506108a9565b868310156108eb57848901516108e7601f8916826107fa565b8355505b6001600288020188555050505b505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61093782610709565b915061094283610709565b925082820261095081610709565b9150828204841483151761096757610966610900565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6109a582610709565b91506109b083610709565b9250826109c0576109bf61096e565b5b828204905092915050565b5f6109d582610709565b91506109e083610709565b92508282039050818111156109f8576109f7610900565b5b92915050565b5f82825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f610a42601f836109fe565b9150610a4d82610a0e565b602082019050919050565b5f6020820190508181035f830152610a6f81610a36565b9050919050565b5f610a8082610709565b9150610a8b83610709565b9250828201905080821115610aa357610aa2610900565b5b92915050565b610ab281610709565b82525050565b5f602082019050610acb5f830184610aa9565b92915050565b6080516132ad610afe5f395f81816107290152818161087901528181610eb00152611dda01526132ad5ff3fe608060405260043610610184575f3560e01c806370a08231116100d0578063c83c383711610089578063dd62ed3e11610063578063dd62ed3e14610541578063e0d30d9b1461057d578063e54f4faa146105a7578063f2fde38b146105d15761018b565b8063c83c3837146104d9578063c9567bf914610501578063cc3fdd4c146105175761018b565b806370a08231146103bb578063715018a6146103f75780638da5cb5b1461040d57806395d89b4114610437578063a457c2d714610461578063a9059cbb1461049d5761018b565b8063313ce5671161013d57806353945d7b1161011757806353945d7b1461032b5780635564ad7114610355578063578878b41461036b57806359acbe4e146103935761018b565b8063313ce5671461029b57806339509351146102c557806341275358146103015761018b565b806306fdde031461018f578063095ea7b3146101b95780630f299cf1146101f557806318160ddd1461020b5780631bfb744e1461023557806323b872dd1461025f5761018b565b3661018b57005b5f80fd5b34801561019a575f80fd5b506101a36105f9565b6040516101b091906121cd565b60405180910390f35b3480156101c4575f80fd5b506101df60048036038101906101da919061227e565b610689565b6040516101ec91906122d6565b60405180910390f35b348015610200575f80fd5b506102096106ab565b005b348015610216575f80fd5b5061021f61078d565b60405161022c91906122fe565b60405180910390f35b348015610240575f80fd5b50610249610796565b60405161025691906122fe565b60405180910390f35b34801561026a575f80fd5b5061028560048036038101906102809190612317565b61079c565b60405161029291906122d6565b60405180910390f35b3480156102a6575f80fd5b506102af6107ca565b6040516102bc9190612382565b60405180910390f35b3480156102d0575f80fd5b506102eb60048036038101906102e6919061227e565b6107d2565b6040516102f891906122d6565b60405180910390f35b34801561030c575f80fd5b50610315610877565b60405161032291906123aa565b60405180910390f35b348015610336575f80fd5b5061033f61089b565b60405161034c91906123aa565b60405180910390f35b348015610360575f80fd5b506103696108c0565b005b348015610376575f80fd5b50610391600480360381019061038c91906123c3565b610945565b005b34801561039e575f80fd5b506103b960048036038101906103b491906123ee565b610aad565b005b3480156103c6575f80fd5b506103e160048036038101906103dc919061242c565b610b8c565b6040516103ee91906122fe565b60405180910390f35b348015610402575f80fd5b5061040b610bd1565b005b348015610418575f80fd5b50610421610c58565b60405161042e91906123aa565b60405180910390f35b348015610442575f80fd5b5061044b610c80565b60405161045891906121cd565b60405180910390f35b34801561046c575f80fd5b506104876004803603810190610482919061227e565b610d10565b60405161049491906122d6565b60405180910390f35b3480156104a8575f80fd5b506104c360048036038101906104be919061227e565b610df4565b6040516104d091906122d6565b60405180910390f35b3480156104e4575f80fd5b506104ff60048036038101906104fa9190612492565b610e16565b005b34801561050c575f80fd5b50610515610fa8565b005b348015610522575f80fd5b5061052b6111df565b60405161053891906122fe565b60405180910390f35b34801561054c575f80fd5b50610567600480360381019061056291906124bd565b6111e5565b60405161057491906122fe565b60405180910390f35b348015610588575f80fd5b50610591611267565b60405161059e91906122fe565b60405180910390f35b3480156105b2575f80fd5b506105bb61126d565b6040516105c891906122fe565b60405180910390f35b3480156105dc575f80fd5b506105f760048036038101906105f2919061242c565b611273565b005b60606003805461060890612528565b80601f016020809104026020016040519081016040528092919081815260200182805461063490612528565b801561067f5780601f106106565761010080835404028352916020019161067f565b820191905f5260205f20905b81548152906001019060200180831161066257829003601f168201915b5050505050905090565b5f80610693611369565b90506106a0818585611370565b600191505092915050565b6106b3611369565b73ffffffffffffffffffffffffffffffffffffffff166106d1610c58565b73ffffffffffffffffffffffffffffffffffffffff1614610727576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161071e906125a2565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166108fc4790811502906040515f60405180830381858888f1935050505015801561078a573d5f803e3d5ffd5b50565b5f600254905090565b60085481565b5f806107a6611369565b90506107b3858285611533565b6107be8585856115be565b60019150509392505050565b5f6012905090565b5f806107dc611369565b905061086c81858560015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461086791906125ed565b611370565b600191505092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6108c8611369565b73ffffffffffffffffffffffffffffffffffffffff166108e6610c58565b73ffffffffffffffffffffffffffffffffffffffff161461093c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610933906125a2565b60405180910390fd5b5f600781905550565b61094d611369565b73ffffffffffffffffffffffffffffffffffffffff1661096b610c58565b73ffffffffffffffffffffffffffffffffffffffff16146109c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109b8906125a2565b60405180910390fd5b6109f1620186a06109e360016109d561078d565b611a5e90919063ffffffff16565b611a7390919063ffffffff16565b811015610a33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a2a90612690565b60405180910390fd5b610a616064610a536002610a4561078d565b611a5e90919063ffffffff16565b611a7390919063ffffffff16565b811115610aa3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a9a9061271e565b60405180910390fd5b8060088190555050565b610ab5611369565b73ffffffffffffffffffffffffffffffffffffffff16610ad3610c58565b73ffffffffffffffffffffffffffffffffffffffff1614610b29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b20906125a2565b60405180910390fd5b60148211158015610b3b575060148111155b610b7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b71906127ac565b60405180910390fd5b8160098190555080600a819055505050565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610bd9611369565b73ffffffffffffffffffffffffffffffffffffffff16610bf7610c58565b73ffffffffffffffffffffffffffffffffffffffff1614610c4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c44906125a2565b60405180910390fd5b610c565f611a88565b565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610c8f90612528565b80601f0160208091040260200160405190810160405280929190818152602001828054610cbb90612528565b8015610d065780601f10610cdd57610100808354040283529160200191610d06565b820191905f5260205f20905b815481529060010190602001808311610ce957829003601f168201915b5050505050905090565b5f80610d1a611369565b90505f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905083811015610ddb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dd29061283a565b60405180910390fd5b610de88286868403611370565b60019250505092915050565b5f80610dfe611369565b9050610e0b8185856115be565b600191505092915050565b610e1e611369565b73ffffffffffffffffffffffffffffffffffffffff16610e3c610c58565b73ffffffffffffffffffffffffffffffffffffffff1614610e92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e89906125a2565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb7f00000000000000000000000000000000000000000000000000000000000000008373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610f0891906123aa565b602060405180830381865afa158015610f23573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f47919061286c565b6040518363ffffffff1660e01b8152600401610f64929190612897565b6020604051808303815f875af1158015610f80573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fa491906128e8565b5050565b610fb0611369565b73ffffffffffffffffffffffffffffffffffffffff16610fce610c58565b73ffffffffffffffffffffffffffffffffffffffff1614611024576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101b906125a2565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611081573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110a59190612927565b73ffffffffffffffffffffffffffffffffffffffff1663e6a4390530737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561111e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111429190612927565b6040518363ffffffff1660e01b815260040161115f929190612952565b602060405180830381865afa15801561117a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061119e9190612927565b60065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60095481565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b600a5481565b60075481565b61127b611369565b73ffffffffffffffffffffffffffffffffffffffff16611299610c58565b73ffffffffffffffffffffffffffffffffffffffff16146112ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112e6906125a2565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361135d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611354906129e9565b60405180910390fd5b61136681611a88565b50565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036113de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113d590612a77565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361144c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144390612b05565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161152691906122fe565b60405180910390a3505050565b5f61153e84846111e5565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146115b857818110156115aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115a190612b6d565b60405180910390fd5b6115b78484848403611370565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361162c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162390612bfb565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361169a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161169190612c89565b60405180910390fd5b5f81116116dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116d390612d17565b60405180910390fd5b5f600c5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16806117785750600c5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b90505f73ffffffffffffffffffffffffffffffffffffffff1660065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415806117d35750805b611812576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180990612d7f565b60405180910390fd5b5f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161490505f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16149050811580156118c757505f600754115b80156118d1575082155b1561192f57600754846118e387610b8c565b6118ed91906125ed565b111561192e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192590612e33565b60405180910390fd5b5b60085461193b30610b8c565b101580156119555750600b5f9054906101000a900460ff16155b801561195e5750815b8015611968575082155b156119a9576001600b5f6101000a81548160ff02191690831515021790555061198f611b4b565b5f600b5f6101000a81548160ff0219169083151502179055505b5f816119b757600a546119bb565b6009545b90505f811115611a4a57831580156119df5750600b5f9054906101000a900460ff16155b80156119f0575081806119ef5750825b5b15611a49575f611a1c6064611a0e8489611a5e90919063ffffffff16565b611a7390919063ffffffff16565b90505f811115611a3257611a31883083611ec9565b5b611a45818761213e90919063ffffffff16565b9550505b5b611a55878787611ec9565b50505050505050565b5f8183611a6b9190612e51565b905092915050565b5f8183611a809190612ebf565b905092915050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f611b5530610b8c565b90505f8103611b645750611ec7565b600854811115611b745760085490505b5f4790505f600267ffffffffffffffff811115611b9457611b93612eef565b5b604051908082528060200260200182016040528015611bc25781602001602082028036833780820191505090505b50905030815f81518110611bd957611bd8612f1c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c70573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c949190612927565b81600181518110611ca857611ca7612f1c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611d0130737a250d5630b4cf539739df2c5dacb4c659f2488d85611370565b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac947845f8430426040518663ffffffff1660e01b8152600401611d56959493929190613042565b5f604051808303815f87803b158015611d6d575f80fd5b505af1158015611d7f573d5f803e3d5ffd5b505050505f611d97834761213e90919063ffffffff16565b90505f611dc16064611db3600585611a5e90919063ffffffff16565b611a7390919063ffffffff16565b9050611dd6818361213e90919063ffffffff16565b91507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166108fc8390811502906040515f60405180830381858888f19350505050158015611e3b573d5f803e3d5ffd5b5073c5e1a2854178b152b239068f4dc8d53cc34f26c773ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015611e93573d5f803e3d5ffd5b50807f1cfca31204cc745553128283c3bd97acb07e803bd611f352db637c644eb59b8760405160405180910390a250505050505b565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611f37576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f2e9061310a565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611fa5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f9c90613198565b60405180910390fd5b611fb0838383612153565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015612033576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161202a90613226565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546120c191906125ed565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161212591906122fe565b60405180910390a3612138848484612158565b50505050565b5f818361214b9190613244565b905092915050565b505050565b505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61219f8261215d565b6121a98185612167565b93506121b9818560208601612177565b6121c281612185565b840191505092915050565b5f6020820190508181035f8301526121e58184612195565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61221a826121f1565b9050919050565b61222a81612210565b8114612234575f80fd5b50565b5f8135905061224581612221565b92915050565b5f819050919050565b61225d8161224b565b8114612267575f80fd5b50565b5f8135905061227881612254565b92915050565b5f8060408385031215612294576122936121ed565b5b5f6122a185828601612237565b92505060206122b28582860161226a565b9150509250929050565b5f8115159050919050565b6122d0816122bc565b82525050565b5f6020820190506122e95f8301846122c7565b92915050565b6122f88161224b565b82525050565b5f6020820190506123115f8301846122ef565b92915050565b5f805f6060848603121561232e5761232d6121ed565b5b5f61233b86828701612237565b935050602061234c86828701612237565b925050604061235d8682870161226a565b9150509250925092565b5f60ff82169050919050565b61237c81612367565b82525050565b5f6020820190506123955f830184612373565b92915050565b6123a481612210565b82525050565b5f6020820190506123bd5f83018461239b565b92915050565b5f602082840312156123d8576123d76121ed565b5b5f6123e58482850161226a565b91505092915050565b5f8060408385031215612404576124036121ed565b5b5f6124118582860161226a565b92505060206124228582860161226a565b9150509250929050565b5f60208284031215612441576124406121ed565b5b5f61244e84828501612237565b91505092915050565b5f61246182612210565b9050919050565b61247181612457565b811461247b575f80fd5b50565b5f8135905061248c81612468565b92915050565b5f602082840312156124a7576124a66121ed565b5b5f6124b48482850161247e565b91505092915050565b5f80604083850312156124d3576124d26121ed565b5b5f6124e085828601612237565b92505060206124f185828601612237565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061253f57607f821691505b602082108103612552576125516124fb565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f61258c602083612167565b915061259782612558565b602082019050919050565b5f6020820190508181035f8301526125b981612580565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6125f78261224b565b91506126028361224b565b925082820190508082111561261a576126196125c0565b5b92915050565b7f53776170207468726573686f6c642063616e6e6f74206265206c6f77657220745f8201527f68616e20302e3030312520746f74616c20737570706c792e0000000000000000602082015250565b5f61267a603883612167565b915061268582612620565b604082019050919050565b5f6020820190508181035f8301526126a78161266e565b9050919050565b7f53776170207468726573686f6c642063616e6e6f7420626520686967686572205f8201527f7468616e20322520746f74616c20737570706c792e0000000000000000000000602082015250565b5f612708603583612167565b9150612713826126ae565b604082019050919050565b5f6020820190508181035f830152612735816126fc565b9050919050565b7f417474656d7074696e6720746f207365742066656520686967686572207468615f8201527f6e20696e697469616c206665652e000000000000000000000000000000000000602082015250565b5f612796602e83612167565b91506127a18261273c565b604082019050919050565b5f6020820190508181035f8301526127c38161278a565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f612824602583612167565b915061282f826127ca565b604082019050919050565b5f6020820190508181035f83015261285181612818565b9050919050565b5f8151905061286681612254565b92915050565b5f60208284031215612881576128806121ed565b5b5f61288e84828501612858565b91505092915050565b5f6040820190506128aa5f83018561239b565b6128b760208301846122ef565b9392505050565b6128c7816122bc565b81146128d1575f80fd5b50565b5f815190506128e2816128be565b92915050565b5f602082840312156128fd576128fc6121ed565b5b5f61290a848285016128d4565b91505092915050565b5f8151905061292181612221565b92915050565b5f6020828403121561293c5761293b6121ed565b5b5f61294984828501612913565b91505092915050565b5f6040820190506129655f83018561239b565b612972602083018461239b565b9392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f6129d3602683612167565b91506129de82612979565b604082019050919050565b5f6020820190508181035f830152612a00816129c7565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f612a61602483612167565b9150612a6c82612a07565b604082019050919050565b5f6020820190508181035f830152612a8e81612a55565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f612aef602283612167565b9150612afa82612a95565b604082019050919050565b5f6020820190508181035f830152612b1c81612ae3565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000005f82015250565b5f612b57601d83612167565b9150612b6282612b23565b602082019050919050565b5f6020820190508181035f830152612b8481612b4b565b9050919050565b7f5472616e736665722066726f6d20746865207a65726f2061646472657373206e5f8201527f6f7420616c6c6f7765642e000000000000000000000000000000000000000000602082015250565b5f612be5602b83612167565b9150612bf082612b8b565b604082019050919050565b5f6020820190508181035f830152612c1281612bd9565b9050919050565b7f5472616e7366657220746f20746865207a65726f2061646472657373206e6f745f8201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000602082015250565b5f612c73602983612167565b9150612c7e82612c19565b604082019050919050565b5f6020820190508181035f830152612ca081612c67565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f2e00000000000000000000000000000000000000000000602082015250565b5f612d01602a83612167565b9150612d0c82612ca7565b604082019050919050565b5f6020820190508181035f830152612d2e81612cf5565b9050919050565b7f4c69717569646974792070616972206e6f742079657420637265617465642e005f82015250565b5f612d69601f83612167565b9150612d7482612d35565b602082019050919050565b5f6020820190508181035f830152612d9681612d5d565b9050919050565b7f42616c616e63652065786365656473206d617820686f6c64696e677320616d6f5f8201527f756e742c20636f6e7369646572207573696e672061207365636f6e642077616c60208201527f6c65742e00000000000000000000000000000000000000000000000000000000604082015250565b5f612e1d604483612167565b9150612e2882612d9d565b606082019050919050565b5f6020820190508181035f830152612e4a81612e11565b9050919050565b5f612e5b8261224b565b9150612e668361224b565b9250828202612e748161224b565b91508282048414831517612e8b57612e8a6125c0565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f612ec98261224b565b9150612ed48361224b565b925082612ee457612ee3612e92565b5b828204905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f819050919050565b5f819050919050565b5f612f75612f70612f6b84612f49565b612f52565b61224b565b9050919050565b612f8581612f5b565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b612fbd81612210565b82525050565b5f612fce8383612fb4565b60208301905092915050565b5f602082019050919050565b5f612ff082612f8b565b612ffa8185612f95565b935061300583612fa5565b805f5b8381101561303557815161301c8882612fc3565b975061302783612fda565b925050600181019050613008565b5085935050505092915050565b5f60a0820190506130555f8301886122ef565b6130626020830187612f7c565b81810360408301526130748186612fe6565b9050613083606083018561239b565b61309060808301846122ef565b9695505050505050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6130f4602583612167565b91506130ff8261309a565b604082019050919050565b5f6020820190508181035f830152613121816130e8565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f613182602383612167565b915061318d82613128565b604082019050919050565b5f6020820190508181035f8301526131af81613176565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f613210602683612167565b915061321b826131b6565b604082019050919050565b5f6020820190508181035f83015261323d81613204565b9050919050565b5f61324e8261224b565b91506132598361224b565b9250828203905081811115613271576132706125c0565b5b9291505056fea26469706673582212208108e0b583f69966431a15a4ef787811235558824701c7a5d83744fbf88623fb64736f6c634300081a0033

Deployed Bytecode

0x608060405260043610610184575f3560e01c806370a08231116100d0578063c83c383711610089578063dd62ed3e11610063578063dd62ed3e14610541578063e0d30d9b1461057d578063e54f4faa146105a7578063f2fde38b146105d15761018b565b8063c83c3837146104d9578063c9567bf914610501578063cc3fdd4c146105175761018b565b806370a08231146103bb578063715018a6146103f75780638da5cb5b1461040d57806395d89b4114610437578063a457c2d714610461578063a9059cbb1461049d5761018b565b8063313ce5671161013d57806353945d7b1161011757806353945d7b1461032b5780635564ad7114610355578063578878b41461036b57806359acbe4e146103935761018b565b8063313ce5671461029b57806339509351146102c557806341275358146103015761018b565b806306fdde031461018f578063095ea7b3146101b95780630f299cf1146101f557806318160ddd1461020b5780631bfb744e1461023557806323b872dd1461025f5761018b565b3661018b57005b5f80fd5b34801561019a575f80fd5b506101a36105f9565b6040516101b091906121cd565b60405180910390f35b3480156101c4575f80fd5b506101df60048036038101906101da919061227e565b610689565b6040516101ec91906122d6565b60405180910390f35b348015610200575f80fd5b506102096106ab565b005b348015610216575f80fd5b5061021f61078d565b60405161022c91906122fe565b60405180910390f35b348015610240575f80fd5b50610249610796565b60405161025691906122fe565b60405180910390f35b34801561026a575f80fd5b5061028560048036038101906102809190612317565b61079c565b60405161029291906122d6565b60405180910390f35b3480156102a6575f80fd5b506102af6107ca565b6040516102bc9190612382565b60405180910390f35b3480156102d0575f80fd5b506102eb60048036038101906102e6919061227e565b6107d2565b6040516102f891906122d6565b60405180910390f35b34801561030c575f80fd5b50610315610877565b60405161032291906123aa565b60405180910390f35b348015610336575f80fd5b5061033f61089b565b60405161034c91906123aa565b60405180910390f35b348015610360575f80fd5b506103696108c0565b005b348015610376575f80fd5b50610391600480360381019061038c91906123c3565b610945565b005b34801561039e575f80fd5b506103b960048036038101906103b491906123ee565b610aad565b005b3480156103c6575f80fd5b506103e160048036038101906103dc919061242c565b610b8c565b6040516103ee91906122fe565b60405180910390f35b348015610402575f80fd5b5061040b610bd1565b005b348015610418575f80fd5b50610421610c58565b60405161042e91906123aa565b60405180910390f35b348015610442575f80fd5b5061044b610c80565b60405161045891906121cd565b60405180910390f35b34801561046c575f80fd5b506104876004803603810190610482919061227e565b610d10565b60405161049491906122d6565b60405180910390f35b3480156104a8575f80fd5b506104c360048036038101906104be919061227e565b610df4565b6040516104d091906122d6565b60405180910390f35b3480156104e4575f80fd5b506104ff60048036038101906104fa9190612492565b610e16565b005b34801561050c575f80fd5b50610515610fa8565b005b348015610522575f80fd5b5061052b6111df565b60405161053891906122fe565b60405180910390f35b34801561054c575f80fd5b50610567600480360381019061056291906124bd565b6111e5565b60405161057491906122fe565b60405180910390f35b348015610588575f80fd5b50610591611267565b60405161059e91906122fe565b60405180910390f35b3480156105b2575f80fd5b506105bb61126d565b6040516105c891906122fe565b60405180910390f35b3480156105dc575f80fd5b506105f760048036038101906105f2919061242c565b611273565b005b60606003805461060890612528565b80601f016020809104026020016040519081016040528092919081815260200182805461063490612528565b801561067f5780601f106106565761010080835404028352916020019161067f565b820191905f5260205f20905b81548152906001019060200180831161066257829003601f168201915b5050505050905090565b5f80610693611369565b90506106a0818585611370565b600191505092915050565b6106b3611369565b73ffffffffffffffffffffffffffffffffffffffff166106d1610c58565b73ffffffffffffffffffffffffffffffffffffffff1614610727576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161071e906125a2565b60405180910390fd5b7f000000000000000000000000c5e1a2854178b152b239068f4dc8d53cc34f26c773ffffffffffffffffffffffffffffffffffffffff166108fc4790811502906040515f60405180830381858888f1935050505015801561078a573d5f803e3d5ffd5b50565b5f600254905090565b60085481565b5f806107a6611369565b90506107b3858285611533565b6107be8585856115be565b60019150509392505050565b5f6012905090565b5f806107dc611369565b905061086c81858560015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461086791906125ed565b611370565b600191505092915050565b7f000000000000000000000000c5e1a2854178b152b239068f4dc8d53cc34f26c781565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6108c8611369565b73ffffffffffffffffffffffffffffffffffffffff166108e6610c58565b73ffffffffffffffffffffffffffffffffffffffff161461093c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610933906125a2565b60405180910390fd5b5f600781905550565b61094d611369565b73ffffffffffffffffffffffffffffffffffffffff1661096b610c58565b73ffffffffffffffffffffffffffffffffffffffff16146109c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109b8906125a2565b60405180910390fd5b6109f1620186a06109e360016109d561078d565b611a5e90919063ffffffff16565b611a7390919063ffffffff16565b811015610a33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a2a90612690565b60405180910390fd5b610a616064610a536002610a4561078d565b611a5e90919063ffffffff16565b611a7390919063ffffffff16565b811115610aa3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a9a9061271e565b60405180910390fd5b8060088190555050565b610ab5611369565b73ffffffffffffffffffffffffffffffffffffffff16610ad3610c58565b73ffffffffffffffffffffffffffffffffffffffff1614610b29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b20906125a2565b60405180910390fd5b60148211158015610b3b575060148111155b610b7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b71906127ac565b60405180910390fd5b8160098190555080600a819055505050565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610bd9611369565b73ffffffffffffffffffffffffffffffffffffffff16610bf7610c58565b73ffffffffffffffffffffffffffffffffffffffff1614610c4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c44906125a2565b60405180910390fd5b610c565f611a88565b565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610c8f90612528565b80601f0160208091040260200160405190810160405280929190818152602001828054610cbb90612528565b8015610d065780601f10610cdd57610100808354040283529160200191610d06565b820191905f5260205f20905b815481529060010190602001808311610ce957829003601f168201915b5050505050905090565b5f80610d1a611369565b90505f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905083811015610ddb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dd29061283a565b60405180910390fd5b610de88286868403611370565b60019250505092915050565b5f80610dfe611369565b9050610e0b8185856115be565b600191505092915050565b610e1e611369565b73ffffffffffffffffffffffffffffffffffffffff16610e3c610c58565b73ffffffffffffffffffffffffffffffffffffffff1614610e92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e89906125a2565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb7f000000000000000000000000c5e1a2854178b152b239068f4dc8d53cc34f26c78373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610f0891906123aa565b602060405180830381865afa158015610f23573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f47919061286c565b6040518363ffffffff1660e01b8152600401610f64929190612897565b6020604051808303815f875af1158015610f80573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fa491906128e8565b5050565b610fb0611369565b73ffffffffffffffffffffffffffffffffffffffff16610fce610c58565b73ffffffffffffffffffffffffffffffffffffffff1614611024576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101b906125a2565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611081573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110a59190612927565b73ffffffffffffffffffffffffffffffffffffffff1663e6a4390530737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561111e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111429190612927565b6040518363ffffffff1660e01b815260040161115f929190612952565b602060405180830381865afa15801561117a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061119e9190612927565b60065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60095481565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b600a5481565b60075481565b61127b611369565b73ffffffffffffffffffffffffffffffffffffffff16611299610c58565b73ffffffffffffffffffffffffffffffffffffffff16146112ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112e6906125a2565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361135d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611354906129e9565b60405180910390fd5b61136681611a88565b50565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036113de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113d590612a77565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361144c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144390612b05565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161152691906122fe565b60405180910390a3505050565b5f61153e84846111e5565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146115b857818110156115aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115a190612b6d565b60405180910390fd5b6115b78484848403611370565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361162c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162390612bfb565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361169a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161169190612c89565b60405180910390fd5b5f81116116dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116d390612d17565b60405180910390fd5b5f600c5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16806117785750600c5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b90505f73ffffffffffffffffffffffffffffffffffffffff1660065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415806117d35750805b611812576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180990612d7f565b60405180910390fd5b5f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161490505f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16149050811580156118c757505f600754115b80156118d1575082155b1561192f57600754846118e387610b8c565b6118ed91906125ed565b111561192e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192590612e33565b60405180910390fd5b5b60085461193b30610b8c565b101580156119555750600b5f9054906101000a900460ff16155b801561195e5750815b8015611968575082155b156119a9576001600b5f6101000a81548160ff02191690831515021790555061198f611b4b565b5f600b5f6101000a81548160ff0219169083151502179055505b5f816119b757600a546119bb565b6009545b90505f811115611a4a57831580156119df5750600b5f9054906101000a900460ff16155b80156119f0575081806119ef5750825b5b15611a49575f611a1c6064611a0e8489611a5e90919063ffffffff16565b611a7390919063ffffffff16565b90505f811115611a3257611a31883083611ec9565b5b611a45818761213e90919063ffffffff16565b9550505b5b611a55878787611ec9565b50505050505050565b5f8183611a6b9190612e51565b905092915050565b5f8183611a809190612ebf565b905092915050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f611b5530610b8c565b90505f8103611b645750611ec7565b600854811115611b745760085490505b5f4790505f600267ffffffffffffffff811115611b9457611b93612eef565b5b604051908082528060200260200182016040528015611bc25781602001602082028036833780820191505090505b50905030815f81518110611bd957611bd8612f1c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c70573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c949190612927565b81600181518110611ca857611ca7612f1c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611d0130737a250d5630b4cf539739df2c5dacb4c659f2488d85611370565b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac947845f8430426040518663ffffffff1660e01b8152600401611d56959493929190613042565b5f604051808303815f87803b158015611d6d575f80fd5b505af1158015611d7f573d5f803e3d5ffd5b505050505f611d97834761213e90919063ffffffff16565b90505f611dc16064611db3600585611a5e90919063ffffffff16565b611a7390919063ffffffff16565b9050611dd6818361213e90919063ffffffff16565b91507f000000000000000000000000c5e1a2854178b152b239068f4dc8d53cc34f26c773ffffffffffffffffffffffffffffffffffffffff166108fc8390811502906040515f60405180830381858888f19350505050158015611e3b573d5f803e3d5ffd5b5073c5e1a2854178b152b239068f4dc8d53cc34f26c773ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015611e93573d5f803e3d5ffd5b50807f1cfca31204cc745553128283c3bd97acb07e803bd611f352db637c644eb59b8760405160405180910390a250505050505b565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611f37576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f2e9061310a565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611fa5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f9c90613198565b60405180910390fd5b611fb0838383612153565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015612033576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161202a90613226565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546120c191906125ed565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161212591906122fe565b60405180910390a3612138848484612158565b50505050565b5f818361214b9190613244565b905092915050565b505050565b505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61219f8261215d565b6121a98185612167565b93506121b9818560208601612177565b6121c281612185565b840191505092915050565b5f6020820190508181035f8301526121e58184612195565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61221a826121f1565b9050919050565b61222a81612210565b8114612234575f80fd5b50565b5f8135905061224581612221565b92915050565b5f819050919050565b61225d8161224b565b8114612267575f80fd5b50565b5f8135905061227881612254565b92915050565b5f8060408385031215612294576122936121ed565b5b5f6122a185828601612237565b92505060206122b28582860161226a565b9150509250929050565b5f8115159050919050565b6122d0816122bc565b82525050565b5f6020820190506122e95f8301846122c7565b92915050565b6122f88161224b565b82525050565b5f6020820190506123115f8301846122ef565b92915050565b5f805f6060848603121561232e5761232d6121ed565b5b5f61233b86828701612237565b935050602061234c86828701612237565b925050604061235d8682870161226a565b9150509250925092565b5f60ff82169050919050565b61237c81612367565b82525050565b5f6020820190506123955f830184612373565b92915050565b6123a481612210565b82525050565b5f6020820190506123bd5f83018461239b565b92915050565b5f602082840312156123d8576123d76121ed565b5b5f6123e58482850161226a565b91505092915050565b5f8060408385031215612404576124036121ed565b5b5f6124118582860161226a565b92505060206124228582860161226a565b9150509250929050565b5f60208284031215612441576124406121ed565b5b5f61244e84828501612237565b91505092915050565b5f61246182612210565b9050919050565b61247181612457565b811461247b575f80fd5b50565b5f8135905061248c81612468565b92915050565b5f602082840312156124a7576124a66121ed565b5b5f6124b48482850161247e565b91505092915050565b5f80604083850312156124d3576124d26121ed565b5b5f6124e085828601612237565b92505060206124f185828601612237565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061253f57607f821691505b602082108103612552576125516124fb565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f61258c602083612167565b915061259782612558565b602082019050919050565b5f6020820190508181035f8301526125b981612580565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6125f78261224b565b91506126028361224b565b925082820190508082111561261a576126196125c0565b5b92915050565b7f53776170207468726573686f6c642063616e6e6f74206265206c6f77657220745f8201527f68616e20302e3030312520746f74616c20737570706c792e0000000000000000602082015250565b5f61267a603883612167565b915061268582612620565b604082019050919050565b5f6020820190508181035f8301526126a78161266e565b9050919050565b7f53776170207468726573686f6c642063616e6e6f7420626520686967686572205f8201527f7468616e20322520746f74616c20737570706c792e0000000000000000000000602082015250565b5f612708603583612167565b9150612713826126ae565b604082019050919050565b5f6020820190508181035f830152612735816126fc565b9050919050565b7f417474656d7074696e6720746f207365742066656520686967686572207468615f8201527f6e20696e697469616c206665652e000000000000000000000000000000000000602082015250565b5f612796602e83612167565b91506127a18261273c565b604082019050919050565b5f6020820190508181035f8301526127c38161278a565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f612824602583612167565b915061282f826127ca565b604082019050919050565b5f6020820190508181035f83015261285181612818565b9050919050565b5f8151905061286681612254565b92915050565b5f60208284031215612881576128806121ed565b5b5f61288e84828501612858565b91505092915050565b5f6040820190506128aa5f83018561239b565b6128b760208301846122ef565b9392505050565b6128c7816122bc565b81146128d1575f80fd5b50565b5f815190506128e2816128be565b92915050565b5f602082840312156128fd576128fc6121ed565b5b5f61290a848285016128d4565b91505092915050565b5f8151905061292181612221565b92915050565b5f6020828403121561293c5761293b6121ed565b5b5f61294984828501612913565b91505092915050565b5f6040820190506129655f83018561239b565b612972602083018461239b565b9392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f6129d3602683612167565b91506129de82612979565b604082019050919050565b5f6020820190508181035f830152612a00816129c7565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f612a61602483612167565b9150612a6c82612a07565b604082019050919050565b5f6020820190508181035f830152612a8e81612a55565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f612aef602283612167565b9150612afa82612a95565b604082019050919050565b5f6020820190508181035f830152612b1c81612ae3565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000005f82015250565b5f612b57601d83612167565b9150612b6282612b23565b602082019050919050565b5f6020820190508181035f830152612b8481612b4b565b9050919050565b7f5472616e736665722066726f6d20746865207a65726f2061646472657373206e5f8201527f6f7420616c6c6f7765642e000000000000000000000000000000000000000000602082015250565b5f612be5602b83612167565b9150612bf082612b8b565b604082019050919050565b5f6020820190508181035f830152612c1281612bd9565b9050919050565b7f5472616e7366657220746f20746865207a65726f2061646472657373206e6f745f8201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000602082015250565b5f612c73602983612167565b9150612c7e82612c19565b604082019050919050565b5f6020820190508181035f830152612ca081612c67565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f2e00000000000000000000000000000000000000000000602082015250565b5f612d01602a83612167565b9150612d0c82612ca7565b604082019050919050565b5f6020820190508181035f830152612d2e81612cf5565b9050919050565b7f4c69717569646974792070616972206e6f742079657420637265617465642e005f82015250565b5f612d69601f83612167565b9150612d7482612d35565b602082019050919050565b5f6020820190508181035f830152612d9681612d5d565b9050919050565b7f42616c616e63652065786365656473206d617820686f6c64696e677320616d6f5f8201527f756e742c20636f6e7369646572207573696e672061207365636f6e642077616c60208201527f6c65742e00000000000000000000000000000000000000000000000000000000604082015250565b5f612e1d604483612167565b9150612e2882612d9d565b606082019050919050565b5f6020820190508181035f830152612e4a81612e11565b9050919050565b5f612e5b8261224b565b9150612e668361224b565b9250828202612e748161224b565b91508282048414831517612e8b57612e8a6125c0565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f612ec98261224b565b9150612ed48361224b565b925082612ee457612ee3612e92565b5b828204905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f819050919050565b5f819050919050565b5f612f75612f70612f6b84612f49565b612f52565b61224b565b9050919050565b612f8581612f5b565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b612fbd81612210565b82525050565b5f612fce8383612fb4565b60208301905092915050565b5f602082019050919050565b5f612ff082612f8b565b612ffa8185612f95565b935061300583612fa5565b805f5b8381101561303557815161301c8882612fc3565b975061302783612fda565b925050600181019050613008565b5085935050505092915050565b5f60a0820190506130555f8301886122ef565b6130626020830187612f7c565b81810360408301526130748186612fe6565b9050613083606083018561239b565b61309060808301846122ef565b9695505050505050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6130f4602583612167565b91506130ff8261309a565b604082019050919050565b5f6020820190508181035f830152613121816130e8565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f613182602383612167565b915061318d82613128565b604082019050919050565b5f6020820190508181035f8301526131af81613176565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f613210602683612167565b915061321b826131b6565b604082019050919050565b5f6020820190508181035f83015261323d81613204565b9050919050565b5f61324e8261224b565b91506132598361224b565b9250828203905081811115613271576132706125c0565b5b9291505056fea26469706673582212208108e0b583f69966431a15a4ef787811235558824701c7a5d83744fbf88623fb64736f6c634300081a0033

Deployed Bytecode Sourcemap

9349:5078:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1632:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2564:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14128:115;;;;;;;;;;;;;:::i;:::-;;1953:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9657:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2773:295;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1852:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3076:240;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9580:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9542:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14036:84;;;;;;;;;;;;;:::i;:::-;;13344:370;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13722:306;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2069:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7031:103;;;;;;;;;;;;;:::i;:::-;;6808:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1740:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3324:438;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2204:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14251:136;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13181:155;;;;;;;;;;;;;:::i;:::-;;9698:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2405:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9733:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9624:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7142:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1632:100;1686:13;1719:5;1712:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1632:100;:::o;2564:201::-;2647:4;2664:13;2680:12;:10;:12::i;:::-;2664:28;;2703:32;2712:5;2719:7;2728:6;2703:8;:32::i;:::-;2753:4;2746:11;;;2564:201;;;;:::o;14128:115::-;6954:12;:10;:12::i;:::-;6943:23;;:7;:5;:7::i;:::-;:23;;;6935:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14192:10:::1;14184:28;;:51;14213:21;14184:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;14128:115::o:0;1953:108::-;2014:7;2041:12;;2034:19;;1953:108;:::o;9657:32::-;;;;:::o;2773:295::-;2904:4;2921:15;2939:12;:10;:12::i;:::-;2921:30;;2962:38;2978:4;2984:7;2993:6;2962:15;:38::i;:::-;3011:27;3021:4;3027:2;3031:6;3011:9;:27::i;:::-;3056:4;3049:11;;;2773:295;;;;;:::o;1852:93::-;1910:5;1935:2;1928:9;;1852:93;:::o;3076:240::-;3164:4;3181:13;3197:12;:10;:12::i;:::-;3181:28;;3220:66;3229:5;3236:7;3275:10;3245:11;:18;3257:5;3245:18;;;;;;;;;;;;;;;:27;3264:7;3245:27;;;;;;;;;;;;;;;;:40;;;;:::i;:::-;3220:8;:66::i;:::-;3304:4;3297:11;;;3076:240;;;;:::o;9580:35::-;;;:::o;9542:31::-;;;;;;;;;;;;;:::o;14036:84::-;6954:12;:10;:12::i;:::-;6943:23;;:7;:5;:7::i;:::-;:23;;;6935:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14111:1:::1;14097:11;:15;;;;14036:84::o:0;13344:370::-;6954:12;:10;:12::i;:::-;6943:23;;:7;:5;:7::i;:::-;:23;;;6935:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13448:32:::1;13473:6;13448:20;13466:1;13448:13;:11;:13::i;:::-;:17;;:20;;;;:::i;:::-;:24;;:32;;;;:::i;:::-;13432:12;:48;;13424:117;;;;;;;;;;;;:::i;:::-;;;;;;;;;13576:29;13601:3;13576:20;13594:1;13576:13;:11;:13::i;:::-;:17;;:20;;;;:::i;:::-;:24;;:29;;;;:::i;:::-;13560:12;:45;;13552:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;13694:12;13674:17;:32;;;;13344:370:::0;:::o;13722:306::-;6954:12;:10;:12::i;:::-;6943:23;;:7;:5;:7::i;:::-;:23;;;6935:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13833:2:::1;13820:9;:15;;:35;;;;;13853:2;13839:10;:16;;13820:35;13812:94;;;;;;;;;;;;:::i;:::-;;;;;;;;;13973:9;13957:13;:25;;;;14010:10;13993:14;:27;;;;13722:306:::0;;:::o;2069:127::-;2143:7;2170:9;:18;2180:7;2170:18;;;;;;;;;;;;;;;;2163:25;;2069:127;;;:::o;7031:103::-;6954:12;:10;:12::i;:::-;6943:23;;:7;:5;:7::i;:::-;:23;;;6935:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7096:30:::1;7123:1;7096:18;:30::i;:::-;7031:103::o:0;6808:87::-;6854:7;6881:6;;;;;;;;;;;6874:13;;6808:87;:::o;1740:104::-;1796:13;1829:7;1822:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1740:104;:::o;3324:438::-;3417:4;3434:13;3450:12;:10;:12::i;:::-;3434:28;;3473:24;3500:11;:18;3512:5;3500:18;;;;;;;;;;;;;;;:27;3519:7;3500:27;;;;;;;;;;;;;;;;3473:54;;3566:15;3546:16;:35;;3538:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;3659:60;3668:5;3675:7;3703:15;3684:16;:34;3659:8;:60::i;:::-;3750:4;3743:11;;;;3324:438;;;;:::o;2204:193::-;2283:4;2300:13;2316:12;:10;:12::i;:::-;2300:28;;2339;2349:5;2356:2;2360:6;2339:9;:28::i;:::-;2385:4;2378:11;;;2204:193;;;;:::o;14251:136::-;6954:12;:10;:12::i;:::-;6943:23;;:7;:5;:7::i;:::-;:23;;;6935:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14321:5:::1;:14;;;14336:10;14348:5;:15;;;14372:4;14348:30;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14321:58;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;14251:136:::0;:::o;13181:155::-;6954:12;:10;:12::i;:::-;6943:23;;:7;:5;:7::i;:::-;:23;;;6935:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9490:42:::1;13271:15;;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13253:44;;;13306:4;9490:42;13313:12;;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13253:75;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13234:16;;:94;;;;;;;;;;;;;;;;;;13181:155::o:0;9698:28::-;;;;:::o;2405:151::-;2494:7;2521:11;:18;2533:5;2521:18;;;;;;;;;;;;;;;:27;2540:7;2521:27;;;;;;;;;;;;;;;;2514:34;;2405:151;;;;:::o;9733:29::-;;;;:::o;9624:26::-;;;;:::o;7142:201::-;6954:12;:10;:12::i;:::-;6943:23;;:7;:5;:7::i;:::-;:23;;;6935:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7251:1:::1;7231:22;;:8;:22;;::::0;7223:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;7307:28;7326:8;7307:18;:28::i;:::-;7142:201:::0;:::o;96:98::-;149:7;176:10;169:17;;96:98;:::o;5455:380::-;5608:1;5591:19;;:5;:19;;;5583:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5689:1;5670:21;;:7;:21;;;5662:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5773:6;5743:11;:18;5755:5;5743:18;;;;;;;;;;;;;;;:27;5762:7;5743:27;;;;;;;;;;;;;;;:36;;;;5811:7;5795:32;;5804:5;5795:32;;;5820:6;5795:32;;;;;;:::i;:::-;;;;;;;;5455:380;;;:::o;5843:453::-;5978:24;6005:25;6015:5;6022:7;6005:9;:25::i;:::-;5978:52;;6065:17;6045:16;:37;6041:248;;6127:6;6107:16;:26;;6099:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6211:51;6220:5;6227:7;6255:6;6236:16;:25;6211:8;:51::i;:::-;6041:248;5967:329;5843:453;;;:::o;10646:1506::-;10794:1;10778:18;;:4;:18;;;10770:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;10877:1;10863:16;;:2;:16;;;10855:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;10953:1;10944:6;:10;10936:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;11014:13;11030:15;:21;11046:4;11030:21;;;;;;;;;;;;;;;;;;;;;;;;;:44;;;;11055:15;:19;11071:2;11055:19;;;;;;;;;;;;;;;;;;;;;;;;;11030:44;11014:60;;11121:1;11093:30;;:16;;;;;;;;;;;:30;;;;:42;;;;11127:8;11093:42;11085:86;;;;;;;;;;;;:::i;:::-;;;;;;;;;11184:11;11204:16;;;;;;;;;;;11198:22;;:2;:22;;;11184:36;;11231:10;11252:16;;;;;;;;;;;11244:24;;:4;:24;;;11231:37;;11286:6;11285:7;:26;;;;;11310:1;11296:11;;:15;11285:26;:39;;;;;11316:8;11315:9;11285:39;11281:176;;;11373:11;;11363:6;11347:13;11357:2;11347:9;:13::i;:::-;:22;;;;:::i;:::-;:37;;11339:118;;;;;;;;;;;;:::i;:::-;;;;;;;;;11281:176;11514:17;;11486:24;11504:4;11486:9;:24::i;:::-;:45;;:68;;;;;11547:7;;;;;;;;;;;11546:8;11486:68;:89;;;;;11569:6;11486:89;:113;;;;;11591:8;11590:9;11486:113;11470:247;;;11637:4;11627:7;;:14;;;;;;;;;;;;;;;;;;11656:19;:17;:19::i;:::-;11700:5;11690:7;;:15;;;;;;;;;;;;;;;;;;11470:247;11729:11;11743:5;:38;;11767:14;;11743:38;;;11751:13;;11743:38;11729:52;;11804:1;11798:3;:7;11794:305;;;11827:8;11826:9;:21;;;;;11840:7;;;;;;;;;;;11839:8;11826:21;:42;;;;;11852:5;:15;;;;11861:6;11852:15;11826:42;11822:266;;;11889:12;11904:24;11924:3;11904:15;11915:3;11904:6;:10;;:15;;;;:::i;:::-;:19;;:24;;;;:::i;:::-;11889:39;;11960:1;11953:4;:8;11949:77;;;11984:42;12000:4;12014;12021;11984:15;:42::i;:::-;11949:77;12056:16;12067:4;12056:6;:10;;:16;;;;:::i;:::-;12047:25;;11870:218;11822:266;11794:305;12111:33;12127:4;12133:2;12137:6;12111:15;:33::i;:::-;10759:1393;;;;10646:1506;;;:::o;7785:98::-;7843:7;7874:1;7870;:5;;;;:::i;:::-;7863:12;;7785:98;;;;:::o;7891:::-;7949:7;7980:1;7976;:5;;;;:::i;:::-;7969:12;;7891:98;;;;:::o;7351:191::-;7425:16;7444:6;;;;;;;;;;;7425:25;;7470:8;7461:6;;:17;;;;;;;;;;;;;;;;;;7525:8;7494:40;;7515:8;7494:40;;;;;;;;;;;;7414:128;7351:191;:::o;12160:1013::-;12208:23;12234:24;12252:4;12234:9;:24::i;:::-;12208:50;;12292:1;12273:15;:20;12269:33;;12295:7;;;12269:33;12334:17;;12316:15;:35;12312:76;;;12371:17;;12353:35;;12312:76;12401:18;12422:21;12401:42;;12456:21;12494:1;12480:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12456:40;;12525:4;12507;12512:1;12507:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;9490:42;12551:12;;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12541:4;12546:1;12541:7;;;;;;;;:::i;:::-;;;;;;;:24;;;;;;;;;;;12578:58;12595:4;9490:42;12620:15;12578:8;:58::i;:::-;9490:42;12649:58;;;12722:15;12752:1;12768:4;12795;12815:15;12649:192;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12854:14;12871:37;12897:10;12871:21;:25;;:37;;;;:::i;:::-;12854:54;;12919:16;12938:22;12956:3;12938:13;12949:1;12938:6;:10;;:13;;;;:::i;:::-;:17;;:22;;;;:::i;:::-;12919:41;;12982:20;12993:8;12982:6;:10;;:20;;;;:::i;:::-;12973:29;;13021:10;13013:28;;:36;13042:6;13013:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13068:42;13060:60;;:70;13121:8;13060:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13156:8;13148:17;;;;;;;;;;12197:976;;;;;12160:1013;:::o;3770:671::-;3917:1;3901:18;;:4;:18;;;3893:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;3994:1;3980:16;;:2;:16;;;3972:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;4049:38;4070:4;4076:2;4080:6;4049:20;:38::i;:::-;4100:19;4122:9;:15;4132:4;4122:15;;;;;;;;;;;;;;;;4100:37;;4171:6;4156:11;:21;;4148:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;4288:6;4274:11;:20;4256:9;:15;4266:4;4256:15;;;;;;;;;;;;;;;:38;;;;4333:6;4316:9;:13;4326:2;4316:13;;;;;;;;;;;;;;;;:23;;;;;;;:::i;:::-;;;;;;;;4372:2;4357:26;;4366:4;4357:26;;;4376:6;4357:26;;;;;;:::i;:::-;;;;;;;;4396:37;4416:4;4422:2;4426:6;4396:19;:37::i;:::-;3882:559;3770:671;;;:::o;7679:98::-;7737:7;7768:1;7764;:5;;;;:::i;:::-;7757:12;;7679:98;;;;:::o;6304:125::-;;;;:::o;6437:124::-;;;;:::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:139::-;376:6;371:3;366;360:23;417:1;408:6;403:3;399:16;392:27;287:139;;;:::o;432:102::-;473:6;524:2;520:7;515:2;508:5;504:14;500:28;490:38;;432:102;;;:::o;540:377::-;628:3;656:39;689:5;656:39;:::i;:::-;711:71;775:6;770:3;711:71;:::i;:::-;704:78;;791:65;849:6;844:3;837:4;830:5;826:16;791:65;:::i;:::-;881:29;903:6;881:29;:::i;:::-;876:3;872:39;865:46;;632:285;540:377;;;;:::o;923:313::-;1036:4;1074:2;1063:9;1059:18;1051:26;;1123:9;1117:4;1113:20;1109:1;1098:9;1094:17;1087:47;1151:78;1224:4;1215:6;1151:78;:::i;:::-;1143:86;;923:313;;;;:::o;1323:117::-;1432:1;1429;1422:12;1569:126;1606:7;1646:42;1639:5;1635:54;1624:65;;1569:126;;;:::o;1701:96::-;1738:7;1767:24;1785:5;1767:24;:::i;:::-;1756:35;;1701:96;;;:::o;1803:122::-;1876:24;1894:5;1876:24;:::i;:::-;1869:5;1866:35;1856:63;;1915:1;1912;1905:12;1856:63;1803:122;:::o;1931:139::-;1977:5;2015:6;2002:20;1993:29;;2031:33;2058:5;2031:33;:::i;:::-;1931:139;;;;:::o;2076:77::-;2113:7;2142:5;2131:16;;2076:77;;;:::o;2159:122::-;2232:24;2250:5;2232:24;:::i;:::-;2225:5;2222:35;2212:63;;2271:1;2268;2261:12;2212:63;2159:122;:::o;2287:139::-;2333:5;2371:6;2358:20;2349:29;;2387:33;2414:5;2387:33;:::i;:::-;2287:139;;;;:::o;2432:474::-;2500:6;2508;2557:2;2545:9;2536:7;2532:23;2528:32;2525:119;;;2563:79;;:::i;:::-;2525:119;2683:1;2708:53;2753:7;2744:6;2733:9;2729:22;2708:53;:::i;:::-;2698:63;;2654:117;2810:2;2836:53;2881:7;2872:6;2861:9;2857:22;2836:53;:::i;:::-;2826:63;;2781:118;2432:474;;;;;:::o;2912:90::-;2946:7;2989:5;2982:13;2975:21;2964:32;;2912:90;;;:::o;3008:109::-;3089:21;3104:5;3089:21;:::i;:::-;3084:3;3077:34;3008:109;;:::o;3123:210::-;3210:4;3248:2;3237:9;3233:18;3225:26;;3261:65;3323:1;3312:9;3308:17;3299:6;3261:65;:::i;:::-;3123:210;;;;:::o;3339:118::-;3426:24;3444:5;3426:24;:::i;:::-;3421:3;3414:37;3339:118;;:::o;3463:222::-;3556:4;3594:2;3583:9;3579:18;3571:26;;3607:71;3675:1;3664:9;3660:17;3651:6;3607:71;:::i;:::-;3463:222;;;;:::o;3691:619::-;3768:6;3776;3784;3833:2;3821:9;3812:7;3808:23;3804:32;3801:119;;;3839:79;;:::i;:::-;3801:119;3959:1;3984:53;4029:7;4020:6;4009:9;4005:22;3984:53;:::i;:::-;3974:63;;3930:117;4086:2;4112:53;4157:7;4148:6;4137:9;4133:22;4112:53;:::i;:::-;4102:63;;4057:118;4214:2;4240:53;4285:7;4276:6;4265:9;4261:22;4240:53;:::i;:::-;4230:63;;4185:118;3691:619;;;;;:::o;4316:86::-;4351:7;4391:4;4384:5;4380:16;4369:27;;4316:86;;;:::o;4408:112::-;4491:22;4507:5;4491:22;:::i;:::-;4486:3;4479:35;4408:112;;:::o;4526:214::-;4615:4;4653:2;4642:9;4638:18;4630:26;;4666:67;4730:1;4719:9;4715:17;4706:6;4666:67;:::i;:::-;4526:214;;;;:::o;4746:118::-;4833:24;4851:5;4833:24;:::i;:::-;4828:3;4821:37;4746:118;;:::o;4870:222::-;4963:4;5001:2;4990:9;4986:18;4978:26;;5014:71;5082:1;5071:9;5067:17;5058:6;5014:71;:::i;:::-;4870:222;;;;:::o;5098:329::-;5157:6;5206:2;5194:9;5185:7;5181:23;5177:32;5174:119;;;5212:79;;:::i;:::-;5174:119;5332:1;5357:53;5402:7;5393:6;5382:9;5378:22;5357:53;:::i;:::-;5347:63;;5303:117;5098:329;;;;:::o;5433:474::-;5501:6;5509;5558:2;5546:9;5537:7;5533:23;5529:32;5526:119;;;5564:79;;:::i;:::-;5526:119;5684:1;5709:53;5754:7;5745:6;5734:9;5730:22;5709:53;:::i;:::-;5699:63;;5655:117;5811:2;5837:53;5882:7;5873:6;5862:9;5858:22;5837:53;:::i;:::-;5827:63;;5782:118;5433:474;;;;;:::o;5913:329::-;5972:6;6021:2;6009:9;6000:7;5996:23;5992:32;5989:119;;;6027:79;;:::i;:::-;5989:119;6147:1;6172:53;6217:7;6208:6;6197:9;6193:22;6172:53;:::i;:::-;6162:63;;6118:117;5913:329;;;;:::o;6248:109::-;6298:7;6327:24;6345:5;6327:24;:::i;:::-;6316:35;;6248:109;;;:::o;6363:148::-;6449:37;6480:5;6449:37;:::i;:::-;6442:5;6439:48;6429:76;;6501:1;6498;6491:12;6429:76;6363:148;:::o;6517:165::-;6576:5;6614:6;6601:20;6592:29;;6630:46;6670:5;6630:46;:::i;:::-;6517:165;;;;:::o;6688:355::-;6760:6;6809:2;6797:9;6788:7;6784:23;6780:32;6777:119;;;6815:79;;:::i;:::-;6777:119;6935:1;6960:66;7018:7;7009:6;6998:9;6994:22;6960:66;:::i;:::-;6950:76;;6906:130;6688:355;;;;:::o;7049:474::-;7117:6;7125;7174:2;7162:9;7153:7;7149:23;7145:32;7142:119;;;7180:79;;:::i;:::-;7142:119;7300:1;7325:53;7370:7;7361:6;7350:9;7346:22;7325:53;:::i;:::-;7315:63;;7271:117;7427:2;7453:53;7498:7;7489:6;7478:9;7474:22;7453:53;:::i;:::-;7443:63;;7398:118;7049:474;;;;;:::o;7529:180::-;7577:77;7574:1;7567:88;7674:4;7671:1;7664:15;7698:4;7695:1;7688:15;7715:320;7759:6;7796:1;7790:4;7786:12;7776:22;;7843:1;7837:4;7833:12;7864:18;7854:81;;7920:4;7912:6;7908:17;7898:27;;7854:81;7982:2;7974:6;7971:14;7951:18;7948:38;7945:84;;8001:18;;:::i;:::-;7945:84;7766:269;7715:320;;;:::o;8041:182::-;8181:34;8177:1;8169:6;8165:14;8158:58;8041:182;:::o;8229:366::-;8371:3;8392:67;8456:2;8451:3;8392:67;:::i;:::-;8385:74;;8468:93;8557:3;8468:93;:::i;:::-;8586:2;8581:3;8577:12;8570:19;;8229:366;;;:::o;8601:419::-;8767:4;8805:2;8794:9;8790:18;8782:26;;8854:9;8848:4;8844:20;8840:1;8829:9;8825:17;8818:47;8882:131;9008:4;8882:131;:::i;:::-;8874:139;;8601:419;;;:::o;9026:180::-;9074:77;9071:1;9064:88;9171:4;9168:1;9161:15;9195:4;9192:1;9185:15;9212:191;9252:3;9271:20;9289:1;9271:20;:::i;:::-;9266:25;;9305:20;9323:1;9305:20;:::i;:::-;9300:25;;9348:1;9345;9341:9;9334:16;;9369:3;9366:1;9363:10;9360:36;;;9376:18;;:::i;:::-;9360:36;9212:191;;;;:::o;9409:243::-;9549:34;9545:1;9537:6;9533:14;9526:58;9618:26;9613:2;9605:6;9601:15;9594:51;9409:243;:::o;9658:366::-;9800:3;9821:67;9885:2;9880:3;9821:67;:::i;:::-;9814:74;;9897:93;9986:3;9897:93;:::i;:::-;10015:2;10010:3;10006:12;9999:19;;9658:366;;;:::o;10030:419::-;10196:4;10234:2;10223:9;10219:18;10211:26;;10283:9;10277:4;10273:20;10269:1;10258:9;10254:17;10247:47;10311:131;10437:4;10311:131;:::i;:::-;10303:139;;10030:419;;;:::o;10455:240::-;10595:34;10591:1;10583:6;10579:14;10572:58;10664:23;10659:2;10651:6;10647:15;10640:48;10455:240;:::o;10701:366::-;10843:3;10864:67;10928:2;10923:3;10864:67;:::i;:::-;10857:74;;10940:93;11029:3;10940:93;:::i;:::-;11058:2;11053:3;11049:12;11042:19;;10701:366;;;:::o;11073:419::-;11239:4;11277:2;11266:9;11262:18;11254:26;;11326:9;11320:4;11316:20;11312:1;11301:9;11297:17;11290:47;11354:131;11480:4;11354:131;:::i;:::-;11346:139;;11073:419;;;:::o;11498:233::-;11638:34;11634:1;11626:6;11622:14;11615:58;11707:16;11702:2;11694:6;11690:15;11683:41;11498:233;:::o;11737:366::-;11879:3;11900:67;11964:2;11959:3;11900:67;:::i;:::-;11893:74;;11976:93;12065:3;11976:93;:::i;:::-;12094:2;12089:3;12085:12;12078:19;;11737:366;;;:::o;12109:419::-;12275:4;12313:2;12302:9;12298:18;12290:26;;12362:9;12356:4;12352:20;12348:1;12337:9;12333:17;12326:47;12390:131;12516:4;12390:131;:::i;:::-;12382:139;;12109:419;;;:::o;12534:224::-;12674:34;12670:1;12662:6;12658:14;12651:58;12743:7;12738:2;12730:6;12726:15;12719:32;12534:224;:::o;12764:366::-;12906:3;12927:67;12991:2;12986:3;12927:67;:::i;:::-;12920:74;;13003:93;13092:3;13003:93;:::i;:::-;13121:2;13116:3;13112:12;13105:19;;12764:366;;;:::o;13136:419::-;13302:4;13340:2;13329:9;13325:18;13317:26;;13389:9;13383:4;13379:20;13375:1;13364:9;13360:17;13353:47;13417:131;13543:4;13417:131;:::i;:::-;13409:139;;13136:419;;;:::o;13561:143::-;13618:5;13649:6;13643:13;13634:22;;13665:33;13692:5;13665:33;:::i;:::-;13561:143;;;;:::o;13710:351::-;13780:6;13829:2;13817:9;13808:7;13804:23;13800:32;13797:119;;;13835:79;;:::i;:::-;13797:119;13955:1;13980:64;14036:7;14027:6;14016:9;14012:22;13980:64;:::i;:::-;13970:74;;13926:128;13710:351;;;;:::o;14067:332::-;14188:4;14226:2;14215:9;14211:18;14203:26;;14239:71;14307:1;14296:9;14292:17;14283:6;14239:71;:::i;:::-;14320:72;14388:2;14377:9;14373:18;14364:6;14320:72;:::i;:::-;14067:332;;;;;:::o;14405:116::-;14475:21;14490:5;14475:21;:::i;:::-;14468:5;14465:32;14455:60;;14511:1;14508;14501:12;14455:60;14405:116;:::o;14527:137::-;14581:5;14612:6;14606:13;14597:22;;14628:30;14652:5;14628:30;:::i;:::-;14527:137;;;;:::o;14670:345::-;14737:6;14786:2;14774:9;14765:7;14761:23;14757:32;14754:119;;;14792:79;;:::i;:::-;14754:119;14912:1;14937:61;14990:7;14981:6;14970:9;14966:22;14937:61;:::i;:::-;14927:71;;14883:125;14670:345;;;;:::o;15021:143::-;15078:5;15109:6;15103:13;15094:22;;15125:33;15152:5;15125:33;:::i;:::-;15021:143;;;;:::o;15170:351::-;15240:6;15289:2;15277:9;15268:7;15264:23;15260:32;15257:119;;;15295:79;;:::i;:::-;15257:119;15415:1;15440:64;15496:7;15487:6;15476:9;15472:22;15440:64;:::i;:::-;15430:74;;15386:128;15170:351;;;;:::o;15527:332::-;15648:4;15686:2;15675:9;15671:18;15663:26;;15699:71;15767:1;15756:9;15752:17;15743:6;15699:71;:::i;:::-;15780:72;15848:2;15837:9;15833:18;15824:6;15780:72;:::i;:::-;15527:332;;;;;:::o;15865:225::-;16005:34;16001:1;15993:6;15989:14;15982:58;16074:8;16069:2;16061:6;16057:15;16050:33;15865:225;:::o;16096:366::-;16238:3;16259:67;16323:2;16318:3;16259:67;:::i;:::-;16252:74;;16335:93;16424:3;16335:93;:::i;:::-;16453:2;16448:3;16444:12;16437:19;;16096:366;;;:::o;16468:419::-;16634:4;16672:2;16661:9;16657:18;16649:26;;16721:9;16715:4;16711:20;16707:1;16696:9;16692:17;16685:47;16749:131;16875:4;16749:131;:::i;:::-;16741:139;;16468:419;;;:::o;16893:223::-;17033:34;17029:1;17021:6;17017:14;17010:58;17102:6;17097:2;17089:6;17085:15;17078:31;16893:223;:::o;17122:366::-;17264:3;17285:67;17349:2;17344:3;17285:67;:::i;:::-;17278:74;;17361:93;17450:3;17361:93;:::i;:::-;17479:2;17474:3;17470:12;17463:19;;17122:366;;;:::o;17494:419::-;17660:4;17698:2;17687:9;17683:18;17675:26;;17747:9;17741:4;17737:20;17733:1;17722:9;17718:17;17711:47;17775:131;17901:4;17775:131;:::i;:::-;17767:139;;17494:419;;;:::o;17919:221::-;18059:34;18055:1;18047:6;18043:14;18036:58;18128:4;18123:2;18115:6;18111:15;18104:29;17919:221;:::o;18146:366::-;18288:3;18309:67;18373:2;18368:3;18309:67;:::i;:::-;18302:74;;18385:93;18474:3;18385:93;:::i;:::-;18503:2;18498:3;18494:12;18487:19;;18146:366;;;:::o;18518:419::-;18684:4;18722:2;18711:9;18707:18;18699:26;;18771:9;18765:4;18761:20;18757:1;18746:9;18742:17;18735:47;18799:131;18925:4;18799:131;:::i;:::-;18791:139;;18518:419;;;:::o;18943:179::-;19083:31;19079:1;19071:6;19067:14;19060:55;18943:179;:::o;19128:366::-;19270:3;19291:67;19355:2;19350:3;19291:67;:::i;:::-;19284:74;;19367:93;19456:3;19367:93;:::i;:::-;19485:2;19480:3;19476:12;19469:19;;19128:366;;;:::o;19500:419::-;19666:4;19704:2;19693:9;19689:18;19681:26;;19753:9;19747:4;19743:20;19739:1;19728:9;19724:17;19717:47;19781:131;19907:4;19781:131;:::i;:::-;19773:139;;19500:419;;;:::o;19925:230::-;20065:34;20061:1;20053:6;20049:14;20042:58;20134:13;20129:2;20121:6;20117:15;20110:38;19925:230;:::o;20161:366::-;20303:3;20324:67;20388:2;20383:3;20324:67;:::i;:::-;20317:74;;20400:93;20489:3;20400:93;:::i;:::-;20518:2;20513:3;20509:12;20502:19;;20161:366;;;:::o;20533:419::-;20699:4;20737:2;20726:9;20722:18;20714:26;;20786:9;20780:4;20776:20;20772:1;20761:9;20757:17;20750:47;20814:131;20940:4;20814:131;:::i;:::-;20806:139;;20533:419;;;:::o;20958:228::-;21098:34;21094:1;21086:6;21082:14;21075:58;21167:11;21162:2;21154:6;21150:15;21143:36;20958:228;:::o;21192:366::-;21334:3;21355:67;21419:2;21414:3;21355:67;:::i;:::-;21348:74;;21431:93;21520:3;21431:93;:::i;:::-;21549:2;21544:3;21540:12;21533:19;;21192:366;;;:::o;21564:419::-;21730:4;21768:2;21757:9;21753:18;21745:26;;21817:9;21811:4;21807:20;21803:1;21792:9;21788:17;21781:47;21845:131;21971:4;21845:131;:::i;:::-;21837:139;;21564:419;;;:::o;21989:229::-;22129:34;22125:1;22117:6;22113:14;22106:58;22198:12;22193:2;22185:6;22181:15;22174:37;21989:229;:::o;22224:366::-;22366:3;22387:67;22451:2;22446:3;22387:67;:::i;:::-;22380:74;;22463:93;22552:3;22463:93;:::i;:::-;22581:2;22576:3;22572:12;22565:19;;22224:366;;;:::o;22596:419::-;22762:4;22800:2;22789:9;22785:18;22777:26;;22849:9;22843:4;22839:20;22835:1;22824:9;22820:17;22813:47;22877:131;23003:4;22877:131;:::i;:::-;22869:139;;22596:419;;;:::o;23021:181::-;23161:33;23157:1;23149:6;23145:14;23138:57;23021:181;:::o;23208:366::-;23350:3;23371:67;23435:2;23430:3;23371:67;:::i;:::-;23364:74;;23447:93;23536:3;23447:93;:::i;:::-;23565:2;23560:3;23556:12;23549:19;;23208:366;;;:::o;23580:419::-;23746:4;23784:2;23773:9;23769:18;23761:26;;23833:9;23827:4;23823:20;23819:1;23808:9;23804:17;23797:47;23861:131;23987:4;23861:131;:::i;:::-;23853:139;;23580:419;;;:::o;24005:292::-;24145:34;24141:1;24133:6;24129:14;24122:58;24214:34;24209:2;24201:6;24197:15;24190:59;24283:6;24278:2;24270:6;24266:15;24259:31;24005:292;:::o;24303:366::-;24445:3;24466:67;24530:2;24525:3;24466:67;:::i;:::-;24459:74;;24542:93;24631:3;24542:93;:::i;:::-;24660:2;24655:3;24651:12;24644:19;;24303:366;;;:::o;24675:419::-;24841:4;24879:2;24868:9;24864:18;24856:26;;24928:9;24922:4;24918:20;24914:1;24903:9;24899:17;24892:47;24956:131;25082:4;24956:131;:::i;:::-;24948:139;;24675:419;;;:::o;25100:410::-;25140:7;25163:20;25181:1;25163:20;:::i;:::-;25158:25;;25197:20;25215:1;25197:20;:::i;:::-;25192:25;;25252:1;25249;25245:9;25274:30;25292:11;25274:30;:::i;:::-;25263:41;;25453:1;25444:7;25440:15;25437:1;25434:22;25414:1;25407:9;25387:83;25364:139;;25483:18;;:::i;:::-;25364:139;25148:362;25100:410;;;;:::o;25516:180::-;25564:77;25561:1;25554:88;25661:4;25658:1;25651:15;25685:4;25682:1;25675:15;25702:185;25742:1;25759:20;25777:1;25759:20;:::i;:::-;25754:25;;25793:20;25811:1;25793:20;:::i;:::-;25788:25;;25832:1;25822:35;;25837:18;;:::i;:::-;25822:35;25879:1;25876;25872:9;25867:14;;25702:185;;;;:::o;25893:180::-;25941:77;25938:1;25931:88;26038:4;26035:1;26028:15;26062:4;26059:1;26052:15;26079:180;26127:77;26124:1;26117:88;26224:4;26221:1;26214:15;26248:4;26245:1;26238:15;26265:85;26310:7;26339:5;26328:16;;26265:85;;;:::o;26356:60::-;26384:3;26405:5;26398:12;;26356:60;;;:::o;26422:158::-;26480:9;26513:61;26531:42;26540:32;26566:5;26540:32;:::i;:::-;26531:42;:::i;:::-;26513:61;:::i;:::-;26500:74;;26422:158;;;:::o;26586:147::-;26681:45;26720:5;26681:45;:::i;:::-;26676:3;26669:58;26586:147;;:::o;26739:114::-;26806:6;26840:5;26834:12;26824:22;;26739:114;;;:::o;26859:184::-;26958:11;26992:6;26987:3;26980:19;27032:4;27027:3;27023:14;27008:29;;26859:184;;;;:::o;27049:132::-;27116:4;27139:3;27131:11;;27169:4;27164:3;27160:14;27152:22;;27049:132;;;:::o;27187:108::-;27264:24;27282:5;27264:24;:::i;:::-;27259:3;27252:37;27187:108;;:::o;27301:179::-;27370:10;27391:46;27433:3;27425:6;27391:46;:::i;:::-;27469:4;27464:3;27460:14;27446:28;;27301:179;;;;:::o;27486:113::-;27556:4;27588;27583:3;27579:14;27571:22;;27486:113;;;:::o;27635:732::-;27754:3;27783:54;27831:5;27783:54;:::i;:::-;27853:86;27932:6;27927:3;27853:86;:::i;:::-;27846:93;;27963:56;28013:5;27963:56;:::i;:::-;28042:7;28073:1;28058:284;28083:6;28080:1;28077:13;28058:284;;;28159:6;28153:13;28186:63;28245:3;28230:13;28186:63;:::i;:::-;28179:70;;28272:60;28325:6;28272:60;:::i;:::-;28262:70;;28118:224;28105:1;28102;28098:9;28093:14;;28058:284;;;28062:14;28358:3;28351:10;;27759:608;;;27635:732;;;;:::o;28373:831::-;28636:4;28674:3;28663:9;28659:19;28651:27;;28688:71;28756:1;28745:9;28741:17;28732:6;28688:71;:::i;:::-;28769:80;28845:2;28834:9;28830:18;28821:6;28769:80;:::i;:::-;28896:9;28890:4;28886:20;28881:2;28870:9;28866:18;28859:48;28924:108;29027:4;29018:6;28924:108;:::i;:::-;28916:116;;29042:72;29110:2;29099:9;29095:18;29086:6;29042:72;:::i;:::-;29124:73;29192:3;29181:9;29177:19;29168:6;29124:73;:::i;:::-;28373:831;;;;;;;;:::o;29210:224::-;29350:34;29346:1;29338:6;29334:14;29327:58;29419:7;29414:2;29406:6;29402:15;29395:32;29210:224;:::o;29440:366::-;29582:3;29603:67;29667:2;29662:3;29603:67;:::i;:::-;29596:74;;29679:93;29768:3;29679:93;:::i;:::-;29797:2;29792:3;29788:12;29781:19;;29440:366;;;:::o;29812:419::-;29978:4;30016:2;30005:9;30001:18;29993:26;;30065:9;30059:4;30055:20;30051:1;30040:9;30036:17;30029:47;30093:131;30219:4;30093:131;:::i;:::-;30085:139;;29812:419;;;:::o;30237:222::-;30377:34;30373:1;30365:6;30361:14;30354:58;30446:5;30441:2;30433:6;30429:15;30422:30;30237:222;:::o;30465:366::-;30607:3;30628:67;30692:2;30687:3;30628:67;:::i;:::-;30621:74;;30704:93;30793:3;30704:93;:::i;:::-;30822:2;30817:3;30813:12;30806:19;;30465:366;;;:::o;30837:419::-;31003:4;31041:2;31030:9;31026:18;31018:26;;31090:9;31084:4;31080:20;31076:1;31065:9;31061:17;31054:47;31118:131;31244:4;31118:131;:::i;:::-;31110:139;;30837:419;;;:::o;31262:225::-;31402:34;31398:1;31390:6;31386:14;31379:58;31471:8;31466:2;31458:6;31454:15;31447:33;31262:225;:::o;31493:366::-;31635:3;31656:67;31720:2;31715:3;31656:67;:::i;:::-;31649:74;;31732:93;31821:3;31732:93;:::i;:::-;31850:2;31845:3;31841:12;31834:19;;31493:366;;;:::o;31865:419::-;32031:4;32069:2;32058:9;32054:18;32046:26;;32118:9;32112:4;32108:20;32104:1;32093:9;32089:17;32082:47;32146:131;32272:4;32146:131;:::i;:::-;32138:139;;31865:419;;;:::o;32290:194::-;32330:4;32350:20;32368:1;32350:20;:::i;:::-;32345:25;;32384:20;32402:1;32384:20;:::i;:::-;32379:25;;32428:1;32425;32421:9;32413:17;;32452:1;32446:4;32443:11;32440:37;;;32457:18;;:::i;:::-;32440:37;32290:194;;;;:::o

Swarm Source

ipfs://8108e0b583f69966431a15a4ef787811235558824701c7a5d83744fbf88623fb
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.