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

Token

FOUR ($FOUR)
 

Overview

Max Total Supply

44,444,444,444 $FOUR

Holders

179

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
5,234,315.355466597 $FOUR

Value
$0.00
0x09fEE62F5823D863A71094259D279ee0f49E1b17
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:
FOUR

Compiler Version
v0.8.18+commit.87f61d96

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license
/**
 *Submitted for verification at Etherscan.io on 2023-04-16
*/

/**

"4 AKA $FOUR"

“1) What"

"Twitter: https://twitter.com/fourtokenwtf"
Supply: 44444444444

*/

// SPDX-License-Identifier: Unlicensed

pragma solidity ^0.8.9;

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

abstract contract Ownable is Context {
    address private _owner;

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

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        _transferOwnership(_msgSender());
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        _checkOwner();
        _;
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view virtual returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if the sender is not the owner.
     */
    function _checkOwner() internal view virtual {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(
            newOwner != address(0),
            "Ownable: new owner is the zero address"
        );
        _transferOwnership(newOwner);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Internal function without access restriction.
     */
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

interface IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;

    function factory() external pure returns (address);

    function WETH() external pure returns (address);
}

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

/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

    /**
     * @dev Emitted when the allowance of a `spender` for an `owner` is set by
     * a call to {approve}. `value` is the new allowance.
     */
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );

    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

    /**
     * @dev Returns the amount of tokens owned by `account`.
     */
    function balanceOf(address account) external view returns (uint256);

    /**
     * @dev Moves `amount` tokens from the caller's account to `to`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address to, uint256 amount) external returns (bool);

    /**
     * @dev Returns the remaining number of tokens that `spender` will be
     * allowed to spend on behalf of `owner` through {transferFrom}. This is
     * zero by default.
     *
     * This value changes when {approve} or {transferFrom} are called.
     */
    function allowance(
        address owner,
        address spender
    ) external view returns (uint256);

    /**
     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * IMPORTANT: Beware that changing an allowance with this method brings the risk
     * that someone may use both the old and the new allowance by unfortunate
     * transaction ordering. One possible solution to mitigate this race
     * condition is to first reduce the spender's allowance to 0 and set the
     * desired value afterwards:
     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
     *
     * Emits an {Approval} event.
     */
    function approve(address spender, uint256 amount) external returns (bool);

    /**
     * @dev Moves `amount` tokens from `from` to `to` using the
     * allowance mechanism. `amount` is then deducted from the caller's
     * allowance.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(
        address from,
        address to,
        uint256 amount
    ) external returns (bool);
}

contract FOUR is IERC20, Ownable {
    string private constant _name = "FOUR";
    string private constant _symbol = "$FOUR";
    uint8 private constant _decimals = 9;

    uint256 private constant _totalSupply = 44444444444 * 10 ** 9;
    uint256 private constant _maxFee = 4; 
    uint256 private _taxFeeOnBuy = 4;
    uint256 private _taxFeeOnSell = 4; 

    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFee;
    mapping(address => bool) private _isExcludedFromMax; 

    address payable private constant _developmentAddress = payable(0x925b5329e8d13b0825426F75772f7b70A312D0De);
    address payable private constant _marketingAddress = payable(0x3786DAD33e5D9D5e82F75bcb1C58462c61EbBB83);

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;

    bool private inSwap = false;

    uint256 public _maxTxAmount = 40000000000 * 10 ** 9;
    uint256 public _maxWalletSize = 40000000000 * 10 ** 9;
    uint256 public _swapTokensAtAmount = 100000000 * 10 ** 9;

    modifier lockTheSwap() {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor() {
        _balances[_msgSender()] = _totalSupply;

        uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router
                        .factory())
                        .createPair(address(this),uniswapV2Router.WETH());

        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_developmentAddress] = true;
        _isExcludedFromFee[_marketingAddress] = true;
        _isExcludedFromMax[owner()] = true;
        _isExcludedFromMax[address(this)] = true;
        _isExcludedFromMax[_developmentAddress] = true;
        _isExcludedFromMax[_marketingAddress] = true;

        emit Transfer(address(0), _msgSender(), _totalSupply);
    }

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

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

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

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

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

    function transfer(
        address recipient,
        uint256 amount
    ) public override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

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

    function approve(
        address spender,
        uint256 amount
    ) public override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public override returns (bool) {
        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(
            currentAllowance >= amount,
            "ERC20: transfer amount exceeds allowance"
        );
        unchecked {
            _approve(sender, _msgSender(), currentAllowance - amount);
        }
        _transfer(sender, recipient, amount);
        return true;
    }

    

    function _approve(address owner, address spender, uint256 amount) private {
        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 _transfer(address from, address to, uint256 amount) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount != 0, "Transfer amount must be greater than zero");


        if (!_isExcludedFromMax[from] && !_isExcludedFromMax[to]) {
            require(amount <= _maxTxAmount, "TOKEN: Max Transaction Limit");
        }

        if (!_isExcludedFromMax[from] && !_isExcludedFromMax[to]) {
            require(
                balanceOf(to) + amount < _maxWalletSize,
                "TOKEN: Balance exceeds wallet size!"
            );
        }
        uint256 contractTokenBalance = balanceOf(address(this));

        if (contractTokenBalance >= _maxTxAmount) {
            contractTokenBalance = _maxTxAmount;
        }

        bool canSwap = contractTokenBalance >= _swapTokensAtAmount && from != owner() && to != owner();

        if (
            canSwap &&
            !inSwap &&
            from != uniswapV2Pair &&
            !_isExcludedFromFee[from] &&
            !_isExcludedFromFee[to]
        ) {
            swapTokensForEth(contractTokenBalance);

            uint256 contractETHBalance = address(this).balance;
            if (contractETHBalance != 0) {
                _marketingAddress.transfer(address(this).balance);
            }
        }

        //Transfer Tokens
        uint256 _taxFee = _getTaxFee(from, to);

        _tokenTransfer(from, to, amount, _taxFee);
    }

    function _getTaxFee(
        address _from, 
        address _to
    ) internal view returns(uint256) {
        uint256 _taxFee;

        if(_from != uniswapV2Pair && _to != uniswapV2Pair){
            _taxFee = 0;
        } else if(_from == uniswapV2Pair && _to != uniswapV2Pair) {
            _taxFee = _taxFeeOnBuy;
        } else if(_to == uniswapV2Pair && _from != uniswapV2Pair) {
            _taxFee = _taxFeeOnSell;
        }


        if(_isExcludedFromFee[_from] || _isExcludedFromFee[_to]) 
        {
            _taxFee = 0;
        }

        return _taxFee;
    }

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

    function _tokenTransfer(
        address sender,
        address recipient,
        uint256 amount,
        uint256 tax
    ) private {
        uint256 tTeam = (amount * tax) / 100;
        uint256 tTransferAmount = amount - tTeam;
        _balances[sender] = _balances[sender] - amount;
        _balances[recipient] = _balances[recipient] + tTransferAmount;
        if (tTeam != 0) {
            _balances[address(this)] = _balances[address(this)] + tTeam;
            emit Transfer(sender, address(this), tTeam);
        }
        emit Transfer(sender, recipient, tTransferAmount);
    }

    // onlyOwner external
    event UpdateTaxFee(uint256 taxFeeOnBuy, uint256 taxFeeOnSell);
    function setFee(
        uint256 taxFeeOnBuy,
        uint256 taxFeeOnSell
    ) external onlyOwner {
        require(taxFeeOnBuy <= _maxFee, "Fee is too high");
        require(taxFeeOnSell <= _maxFee, "Fee is too high");
        _taxFeeOnBuy = taxFeeOnBuy;
        _taxFeeOnSell = taxFeeOnSell;
        emit UpdateTaxFee(taxFeeOnBuy, taxFeeOnSell);
    }

    //Set minimum tokens required to swap.
    event UpdateMinSwapTokenThreshold(uint256 swapTokensAtAmount);
    function setMinSwapTokensThreshold(
        uint256 swapTokensAtAmount
    ) external onlyOwner {
        _swapTokensAtAmount = swapTokensAtAmount;
        emit UpdateMinSwapTokenThreshold(swapTokensAtAmount);
    }

    event ExcludedFromFee(address indexed account, bool _exclude);
    function excludeMultipleAccountsFromFees(
        address[] calldata accounts,
        bool excluded
    ) external onlyOwner {
        for (uint256 i = 0; i < accounts.length; i++) {
            _isExcludedFromFee[accounts[i]] = excluded;
           emit ExcludedFromFee(accounts[i], excluded);
        }
    }

    event ExcludedFromMax(address indexed account, bool _exclude);
    function excludeMultipleAccountsFromMax(
        address[] memory accounts,
        bool _exclude
    ) external onlyOwner {
        for(uint256 i; i < accounts.length; i++) {
            _isExcludedFromMax[accounts[i]] = _exclude;
            emit ExcludedFromMax(accounts[i], _exclude);
        }
    }
    

    receive() external payable {}
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"_exclude","type":"bool"}],"name":"ExcludedFromFee","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"_exclude","type":"bool"}],"name":"ExcludedFromMax","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"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"UpdateMinSwapTokenThreshold","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"taxFeeOnBuy","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"taxFeeOnSell","type":"uint256"}],"name":"UpdateTaxFee","type":"event"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeMultipleAccountsFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"_exclude","type":"bool"}],"name":"excludeMultipleAccountsFromMax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"taxFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnSell","type":"uint256"}],"name":"setFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"setMinSwapTokensThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052600460015560046002556000600860146101000a81548160ff02191690831515021790555068022b1c8c1227a0000060095568022b1c8c1227a00000600a5567016345785d8a0000600b553480156200005c57600080fd5b506200007d62000071620006cb60201b60201c565b620006d360201b60201c565b680268ca62bebc341800600360006200009b620006cb60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550737a250d5630b4cf539739df2c5dacb4c659f2488d600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200019c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001c291906200082a565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200024c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200027291906200082a565b6040518363ffffffff1660e01b8152600401620002919291906200086d565b6020604051808303816000875af1158015620002b1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002d791906200082a565b600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600560006200032d6200079760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016005600073925b5329e8d13b0825426f75772f7b70a312d0de73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000733786dad33e5d9d5e82f75bcb1c58462c61ebbb8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160066000620004c46200079760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016006600073925b5329e8d13b0825426f75772f7b70a312d0de73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160066000733786dad33e5d9d5e82f75bcb1c58462c61ebbb8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000655620006cb60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef680268ca62bebc341800604051620006bd9190620008b5565b60405180910390a3620008d2565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620007f282620007c5565b9050919050565b6200080481620007e5565b81146200081057600080fd5b50565b6000815190506200082481620007f9565b92915050565b600060208284031215620008435762000842620007c0565b5b6000620008538482850162000813565b91505092915050565b6200086781620007e5565b82525050565b60006040820190506200088460008301856200085c565b6200089360208301846200085c565b9392505050565b6000819050919050565b620008af816200089a565b82525050565b6000602082019050620008cc6000830184620008a4565b92915050565b612c9380620008e26000396000f3fe60806040526004361061012e5760003560e01c806370a08231116100ab57806395d89b411161006f57806395d89b41146103dd57806398a5c31514610408578063a9059cbb14610431578063c492f0461461046e578063dd62ed3e14610497578063f2fde38b146104d457610135565b806370a0823114610308578063715018a6146103455780637d1db4a51461035c5780638da5cb5b146103875780638f9a55c0146103b257610135565b80632fd689e3116100f25780632fd689e314610235578063313ce5671461026057806341c6ee381461028b57806349bd5a5e146102b457806352f7c988146102df57610135565b806306fdde031461013a578063095ea7b3146101655780631694505e146101a257806318160ddd146101cd57806323b872dd146101f857610135565b3661013557005b600080fd5b34801561014657600080fd5b5061014f6104fd565b60405161015c9190611d1e565b60405180910390f35b34801561017157600080fd5b5061018c60048036038101906101879190611de8565b61053a565b6040516101999190611e43565b60405180910390f35b3480156101ae57600080fd5b506101b7610558565b6040516101c49190611ebd565b60405180910390f35b3480156101d957600080fd5b506101e261057e565b6040516101ef9190611ee7565b60405180910390f35b34801561020457600080fd5b5061021f600480360381019061021a9190611f02565b61058f565b60405161022c9190611e43565b60405180910390f35b34801561024157600080fd5b5061024a610686565b6040516102579190611ee7565b60405180910390f35b34801561026c57600080fd5b5061027561068c565b6040516102829190611f71565b60405180910390f35b34801561029757600080fd5b506102b260048036038101906102ad9190612100565b610695565b005b3480156102c057600080fd5b506102c961079a565b6040516102d6919061216b565b60405180910390f35b3480156102eb57600080fd5b5061030660048036038101906103019190612186565b6107c0565b005b34801561031457600080fd5b5061032f600480360381019061032a91906121c6565b61089b565b60405161033c9190611ee7565b60405180910390f35b34801561035157600080fd5b5061035a6108e4565b005b34801561036857600080fd5b506103716108f8565b60405161037e9190611ee7565b60405180910390f35b34801561039357600080fd5b5061039c6108fe565b6040516103a9919061216b565b60405180910390f35b3480156103be57600080fd5b506103c7610927565b6040516103d49190611ee7565b60405180910390f35b3480156103e957600080fd5b506103f261092d565b6040516103ff9190611d1e565b60405180910390f35b34801561041457600080fd5b5061042f600480360381019061042a91906121f3565b61096a565b005b34801561043d57600080fd5b5061045860048036038101906104539190611de8565b6109b3565b6040516104659190611e43565b60405180910390f35b34801561047a57600080fd5b506104956004803603810190610490919061227b565b6109d1565b005b3480156104a357600080fd5b506104be60048036038101906104b991906122db565b610af3565b6040516104cb9190611ee7565b60405180910390f35b3480156104e057600080fd5b506104fb60048036038101906104f691906121c6565b610b7a565b005b60606040518060400160405280600481526020017f464f555200000000000000000000000000000000000000000000000000000000815250905090565b600061054e610547610bfd565b8484610c05565b6001905092915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000680268ca62bebc341800905090565b600080600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006105db610bfd565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508281101561065b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106529061238d565b60405180910390fd5b61066f85610667610bfd565b858403610c05565b61067a858585610dce565b60019150509392505050565b600b5481565b60006009905090565b61069d61133e565b60005b82518110156107955781600660008584815181106106c1576106c06123ad565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555082818151811061072d5761072c6123ad565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff167f2805abee54b8f8811367e220e10c2da1762bea5b3295e256642ccd72486259008360405161077a9190611e43565b60405180910390a2808061078d9061240b565b9150506106a0565b505050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6107c861133e565b600482111561080c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108039061249f565b60405180910390fd5b6004811115610850576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108479061249f565b60405180910390fd5b81600181905550806002819055507f3bd44ad33925c1a81e6dea38583782e35a5124cee2473f5fe16d366f0ad0d6b6828260405161088f9291906124bf565b60405180910390a15050565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6108ec61133e565b6108f660006113bc565b565b60095481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600a5481565b60606040518060400160405280600581526020017f24464f5552000000000000000000000000000000000000000000000000000000815250905090565b61097261133e565b80600b819055507fd371a90ac9298515f0c64bbcd4159ea805a04df67586927b3709819f88912f99816040516109a89190611ee7565b60405180910390a150565b60006109c76109c0610bfd565b8484610dce565b6001905092915050565b6109d961133e565b60005b83839050811015610aed5781600560008686858181106109ff576109fe6123ad565b5b9050602002016020810190610a1491906121c6565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550838382818110610a7857610a776123ad565b5b9050602002016020810190610a8d91906121c6565b73ffffffffffffffffffffffffffffffffffffffff167f2d43abd87b27cee7b0aa8c6f7e0b4a3247b683262a83cbc2318b0df398a49aa983604051610ad29190611e43565b60405180910390a28080610ae59061240b565b9150506109dc565b50505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610b8261133e565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610bf1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610be89061255a565b60405180910390fd5b610bfa816113bc565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610c74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c6b906125ec565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610ce3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cda9061267e565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610dc19190611ee7565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610e3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e3490612710565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610eac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ea3906127a2565b60405180910390fd5b60008103610eef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ee690612834565b60405180910390fd5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015610f935750600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15610fde57600954811115610fdd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fd4906128a0565b60405180910390fd5b5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156110825750600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156110df57600a54816110948461089b565b61109e91906128c0565b106110de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d590612966565b60405180910390fd5b5b60006110ea3061089b565b905060095481106110fb5760095490505b6000600b54821015801561114257506111126108fe565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b801561118157506111516108fe565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b905080801561119d5750600860149054906101000a900460ff16155b80156111f75750600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b801561124d5750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156112a35750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561131c576112b182611480565b60004790506000811461131a57733786dad33e5d9d5e82f75bcb1c58462c61ebbb8373ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015611318573d6000803e3d6000fd5b505b505b600061132886866116f9565b9050611336868686846119dd565b505050505050565b611346610bfd565b73ffffffffffffffffffffffffffffffffffffffff166113646108fe565b73ffffffffffffffffffffffffffffffffffffffff16146113ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113b1906129d2565b60405180910390fd5b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6001600860146101000a81548160ff0219169083151502179055506000600267ffffffffffffffff8111156114b8576114b7611f91565b5b6040519080825280602002602001820160405280156114e65781602001602082028036833780820191505090505b50905030816000815181106114fe576114fd6123ad565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156115a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115c99190612a07565b816001815181106115dd576115dc6123ad565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061164430600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610c05565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016116a8959493929190612b2d565b600060405180830381600087803b1580156116c257600080fd5b505af11580156116d6573d6000803e3d6000fd5b50505050506000600860146101000a81548160ff02191690831515021790555050565b600080600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156117a85750600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156117b65760009050611928565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156118615750600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611870576001549050611927565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614801561191b5750600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156119265760025490505b5b5b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806119c95750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156119d357600090505b8091505092915050565b6000606482846119ed9190612b87565b6119f79190612bf8565b905060008184611a079190612c29565b905083600360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a549190612c29565b600360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ae291906128c0565b600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060008214611c215781600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611b7891906128c0565b600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611c189190611ee7565b60405180910390a35b8473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611c7e9190611ee7565b60405180910390a3505050505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611cc8578082015181840152602081019050611cad565b60008484015250505050565b6000601f19601f8301169050919050565b6000611cf082611c8e565b611cfa8185611c99565b9350611d0a818560208601611caa565b611d1381611cd4565b840191505092915050565b60006020820190508181036000830152611d388184611ce5565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611d7f82611d54565b9050919050565b611d8f81611d74565b8114611d9a57600080fd5b50565b600081359050611dac81611d86565b92915050565b6000819050919050565b611dc581611db2565b8114611dd057600080fd5b50565b600081359050611de281611dbc565b92915050565b60008060408385031215611dff57611dfe611d4a565b5b6000611e0d85828601611d9d565b9250506020611e1e85828601611dd3565b9150509250929050565b60008115159050919050565b611e3d81611e28565b82525050565b6000602082019050611e586000830184611e34565b92915050565b6000819050919050565b6000611e83611e7e611e7984611d54565b611e5e565b611d54565b9050919050565b6000611e9582611e68565b9050919050565b6000611ea782611e8a565b9050919050565b611eb781611e9c565b82525050565b6000602082019050611ed26000830184611eae565b92915050565b611ee181611db2565b82525050565b6000602082019050611efc6000830184611ed8565b92915050565b600080600060608486031215611f1b57611f1a611d4a565b5b6000611f2986828701611d9d565b9350506020611f3a86828701611d9d565b9250506040611f4b86828701611dd3565b9150509250925092565b600060ff82169050919050565b611f6b81611f55565b82525050565b6000602082019050611f866000830184611f62565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b611fc982611cd4565b810181811067ffffffffffffffff82111715611fe857611fe7611f91565b5b80604052505050565b6000611ffb611d40565b90506120078282611fc0565b919050565b600067ffffffffffffffff82111561202757612026611f91565b5b602082029050602081019050919050565b600080fd5b600061205061204b8461200c565b611ff1565b9050808382526020820190506020840283018581111561207357612072612038565b5b835b8181101561209c57806120888882611d9d565b845260208401935050602081019050612075565b5050509392505050565b600082601f8301126120bb576120ba611f8c565b5b81356120cb84826020860161203d565b91505092915050565b6120dd81611e28565b81146120e857600080fd5b50565b6000813590506120fa816120d4565b92915050565b6000806040838503121561211757612116611d4a565b5b600083013567ffffffffffffffff81111561213557612134611d4f565b5b612141858286016120a6565b9250506020612152858286016120eb565b9150509250929050565b61216581611d74565b82525050565b6000602082019050612180600083018461215c565b92915050565b6000806040838503121561219d5761219c611d4a565b5b60006121ab85828601611dd3565b92505060206121bc85828601611dd3565b9150509250929050565b6000602082840312156121dc576121db611d4a565b5b60006121ea84828501611d9d565b91505092915050565b60006020828403121561220957612208611d4a565b5b600061221784828501611dd3565b91505092915050565b600080fd5b60008083601f84011261223b5761223a611f8c565b5b8235905067ffffffffffffffff81111561225857612257612220565b5b60208301915083602082028301111561227457612273612038565b5b9250929050565b60008060006040848603121561229457612293611d4a565b5b600084013567ffffffffffffffff8111156122b2576122b1611d4f565b5b6122be86828701612225565b935093505060206122d1868287016120eb565b9150509250925092565b600080604083850312156122f2576122f1611d4a565b5b600061230085828601611d9d565b925050602061231185828601611d9d565b9150509250929050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000612377602883611c99565b91506123828261231b565b604082019050919050565b600060208201905081810360008301526123a68161236a565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061241682611db2565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612448576124476123dc565b5b600182019050919050565b7f46656520697320746f6f20686967680000000000000000000000000000000000600082015250565b6000612489600f83611c99565b915061249482612453565b602082019050919050565b600060208201905081810360008301526124b88161247c565b9050919050565b60006040820190506124d46000830185611ed8565b6124e16020830184611ed8565b9392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000612544602683611c99565b915061254f826124e8565b604082019050919050565b6000602082019050818103600083015261257381612537565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006125d6602483611c99565b91506125e18261257a565b604082019050919050565b60006020820190508181036000830152612605816125c9565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612668602283611c99565b91506126738261260c565b604082019050919050565b600060208201905081810360008301526126978161265b565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006126fa602583611c99565b91506127058261269e565b604082019050919050565b60006020820190508181036000830152612729816126ed565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061278c602383611c99565b915061279782612730565b604082019050919050565b600060208201905081810360008301526127bb8161277f565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b600061281e602983611c99565b9150612829826127c2565b604082019050919050565b6000602082019050818103600083015261284d81612811565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b600061288a601c83611c99565b915061289582612854565b602082019050919050565b600060208201905081810360008301526128b98161287d565b9050919050565b60006128cb82611db2565b91506128d683611db2565b92508282019050808211156128ee576128ed6123dc565b5b92915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b6000612950602383611c99565b915061295b826128f4565b604082019050919050565b6000602082019050818103600083015261297f81612943565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006129bc602083611c99565b91506129c782612986565b602082019050919050565b600060208201905081810360008301526129eb816129af565b9050919050565b600081519050612a0181611d86565b92915050565b600060208284031215612a1d57612a1c611d4a565b5b6000612a2b848285016129f2565b91505092915050565b6000819050919050565b6000612a59612a54612a4f84612a34565b611e5e565b611db2565b9050919050565b612a6981612a3e565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b612aa481611d74565b82525050565b6000612ab68383612a9b565b60208301905092915050565b6000602082019050919050565b6000612ada82612a6f565b612ae48185612a7a565b9350612aef83612a8b565b8060005b83811015612b20578151612b078882612aaa565b9750612b1283612ac2565b925050600181019050612af3565b5085935050505092915050565b600060a082019050612b426000830188611ed8565b612b4f6020830187612a60565b8181036040830152612b618186612acf565b9050612b70606083018561215c565b612b7d6080830184611ed8565b9695505050505050565b6000612b9282611db2565b9150612b9d83611db2565b9250828202612bab81611db2565b91508282048414831517612bc257612bc16123dc565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612c0382611db2565b9150612c0e83611db2565b925082612c1e57612c1d612bc9565b5b828204905092915050565b6000612c3482611db2565b9150612c3f83611db2565b9250828203905081811115612c5757612c566123dc565b5b9291505056fea264697066735822122076583300d15a1b8d7a9c3fe8f280f7d5b4ac0e4083892165b208b7b14cf001c764736f6c63430008120033

Deployed Bytecode

0x60806040526004361061012e5760003560e01c806370a08231116100ab57806395d89b411161006f57806395d89b41146103dd57806398a5c31514610408578063a9059cbb14610431578063c492f0461461046e578063dd62ed3e14610497578063f2fde38b146104d457610135565b806370a0823114610308578063715018a6146103455780637d1db4a51461035c5780638da5cb5b146103875780638f9a55c0146103b257610135565b80632fd689e3116100f25780632fd689e314610235578063313ce5671461026057806341c6ee381461028b57806349bd5a5e146102b457806352f7c988146102df57610135565b806306fdde031461013a578063095ea7b3146101655780631694505e146101a257806318160ddd146101cd57806323b872dd146101f857610135565b3661013557005b600080fd5b34801561014657600080fd5b5061014f6104fd565b60405161015c9190611d1e565b60405180910390f35b34801561017157600080fd5b5061018c60048036038101906101879190611de8565b61053a565b6040516101999190611e43565b60405180910390f35b3480156101ae57600080fd5b506101b7610558565b6040516101c49190611ebd565b60405180910390f35b3480156101d957600080fd5b506101e261057e565b6040516101ef9190611ee7565b60405180910390f35b34801561020457600080fd5b5061021f600480360381019061021a9190611f02565b61058f565b60405161022c9190611e43565b60405180910390f35b34801561024157600080fd5b5061024a610686565b6040516102579190611ee7565b60405180910390f35b34801561026c57600080fd5b5061027561068c565b6040516102829190611f71565b60405180910390f35b34801561029757600080fd5b506102b260048036038101906102ad9190612100565b610695565b005b3480156102c057600080fd5b506102c961079a565b6040516102d6919061216b565b60405180910390f35b3480156102eb57600080fd5b5061030660048036038101906103019190612186565b6107c0565b005b34801561031457600080fd5b5061032f600480360381019061032a91906121c6565b61089b565b60405161033c9190611ee7565b60405180910390f35b34801561035157600080fd5b5061035a6108e4565b005b34801561036857600080fd5b506103716108f8565b60405161037e9190611ee7565b60405180910390f35b34801561039357600080fd5b5061039c6108fe565b6040516103a9919061216b565b60405180910390f35b3480156103be57600080fd5b506103c7610927565b6040516103d49190611ee7565b60405180910390f35b3480156103e957600080fd5b506103f261092d565b6040516103ff9190611d1e565b60405180910390f35b34801561041457600080fd5b5061042f600480360381019061042a91906121f3565b61096a565b005b34801561043d57600080fd5b5061045860048036038101906104539190611de8565b6109b3565b6040516104659190611e43565b60405180910390f35b34801561047a57600080fd5b506104956004803603810190610490919061227b565b6109d1565b005b3480156104a357600080fd5b506104be60048036038101906104b991906122db565b610af3565b6040516104cb9190611ee7565b60405180910390f35b3480156104e057600080fd5b506104fb60048036038101906104f691906121c6565b610b7a565b005b60606040518060400160405280600481526020017f464f555200000000000000000000000000000000000000000000000000000000815250905090565b600061054e610547610bfd565b8484610c05565b6001905092915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000680268ca62bebc341800905090565b600080600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006105db610bfd565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508281101561065b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106529061238d565b60405180910390fd5b61066f85610667610bfd565b858403610c05565b61067a858585610dce565b60019150509392505050565b600b5481565b60006009905090565b61069d61133e565b60005b82518110156107955781600660008584815181106106c1576106c06123ad565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555082818151811061072d5761072c6123ad565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff167f2805abee54b8f8811367e220e10c2da1762bea5b3295e256642ccd72486259008360405161077a9190611e43565b60405180910390a2808061078d9061240b565b9150506106a0565b505050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6107c861133e565b600482111561080c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108039061249f565b60405180910390fd5b6004811115610850576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108479061249f565b60405180910390fd5b81600181905550806002819055507f3bd44ad33925c1a81e6dea38583782e35a5124cee2473f5fe16d366f0ad0d6b6828260405161088f9291906124bf565b60405180910390a15050565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6108ec61133e565b6108f660006113bc565b565b60095481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600a5481565b60606040518060400160405280600581526020017f24464f5552000000000000000000000000000000000000000000000000000000815250905090565b61097261133e565b80600b819055507fd371a90ac9298515f0c64bbcd4159ea805a04df67586927b3709819f88912f99816040516109a89190611ee7565b60405180910390a150565b60006109c76109c0610bfd565b8484610dce565b6001905092915050565b6109d961133e565b60005b83839050811015610aed5781600560008686858181106109ff576109fe6123ad565b5b9050602002016020810190610a1491906121c6565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550838382818110610a7857610a776123ad565b5b9050602002016020810190610a8d91906121c6565b73ffffffffffffffffffffffffffffffffffffffff167f2d43abd87b27cee7b0aa8c6f7e0b4a3247b683262a83cbc2318b0df398a49aa983604051610ad29190611e43565b60405180910390a28080610ae59061240b565b9150506109dc565b50505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610b8261133e565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610bf1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610be89061255a565b60405180910390fd5b610bfa816113bc565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610c74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c6b906125ec565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610ce3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cda9061267e565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610dc19190611ee7565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610e3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e3490612710565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610eac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ea3906127a2565b60405180910390fd5b60008103610eef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ee690612834565b60405180910390fd5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015610f935750600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15610fde57600954811115610fdd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fd4906128a0565b60405180910390fd5b5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156110825750600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156110df57600a54816110948461089b565b61109e91906128c0565b106110de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d590612966565b60405180910390fd5b5b60006110ea3061089b565b905060095481106110fb5760095490505b6000600b54821015801561114257506111126108fe565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b801561118157506111516108fe565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b905080801561119d5750600860149054906101000a900460ff16155b80156111f75750600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b801561124d5750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156112a35750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561131c576112b182611480565b60004790506000811461131a57733786dad33e5d9d5e82f75bcb1c58462c61ebbb8373ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015611318573d6000803e3d6000fd5b505b505b600061132886866116f9565b9050611336868686846119dd565b505050505050565b611346610bfd565b73ffffffffffffffffffffffffffffffffffffffff166113646108fe565b73ffffffffffffffffffffffffffffffffffffffff16146113ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113b1906129d2565b60405180910390fd5b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6001600860146101000a81548160ff0219169083151502179055506000600267ffffffffffffffff8111156114b8576114b7611f91565b5b6040519080825280602002602001820160405280156114e65781602001602082028036833780820191505090505b50905030816000815181106114fe576114fd6123ad565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156115a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115c99190612a07565b816001815181106115dd576115dc6123ad565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061164430600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610c05565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016116a8959493929190612b2d565b600060405180830381600087803b1580156116c257600080fd5b505af11580156116d6573d6000803e3d6000fd5b50505050506000600860146101000a81548160ff02191690831515021790555050565b600080600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156117a85750600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156117b65760009050611928565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156118615750600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611870576001549050611927565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614801561191b5750600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156119265760025490505b5b5b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806119c95750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156119d357600090505b8091505092915050565b6000606482846119ed9190612b87565b6119f79190612bf8565b905060008184611a079190612c29565b905083600360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a549190612c29565b600360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ae291906128c0565b600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060008214611c215781600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611b7891906128c0565b600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611c189190611ee7565b60405180910390a35b8473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611c7e9190611ee7565b60405180910390a3505050505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611cc8578082015181840152602081019050611cad565b60008484015250505050565b6000601f19601f8301169050919050565b6000611cf082611c8e565b611cfa8185611c99565b9350611d0a818560208601611caa565b611d1381611cd4565b840191505092915050565b60006020820190508181036000830152611d388184611ce5565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611d7f82611d54565b9050919050565b611d8f81611d74565b8114611d9a57600080fd5b50565b600081359050611dac81611d86565b92915050565b6000819050919050565b611dc581611db2565b8114611dd057600080fd5b50565b600081359050611de281611dbc565b92915050565b60008060408385031215611dff57611dfe611d4a565b5b6000611e0d85828601611d9d565b9250506020611e1e85828601611dd3565b9150509250929050565b60008115159050919050565b611e3d81611e28565b82525050565b6000602082019050611e586000830184611e34565b92915050565b6000819050919050565b6000611e83611e7e611e7984611d54565b611e5e565b611d54565b9050919050565b6000611e9582611e68565b9050919050565b6000611ea782611e8a565b9050919050565b611eb781611e9c565b82525050565b6000602082019050611ed26000830184611eae565b92915050565b611ee181611db2565b82525050565b6000602082019050611efc6000830184611ed8565b92915050565b600080600060608486031215611f1b57611f1a611d4a565b5b6000611f2986828701611d9d565b9350506020611f3a86828701611d9d565b9250506040611f4b86828701611dd3565b9150509250925092565b600060ff82169050919050565b611f6b81611f55565b82525050565b6000602082019050611f866000830184611f62565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b611fc982611cd4565b810181811067ffffffffffffffff82111715611fe857611fe7611f91565b5b80604052505050565b6000611ffb611d40565b90506120078282611fc0565b919050565b600067ffffffffffffffff82111561202757612026611f91565b5b602082029050602081019050919050565b600080fd5b600061205061204b8461200c565b611ff1565b9050808382526020820190506020840283018581111561207357612072612038565b5b835b8181101561209c57806120888882611d9d565b845260208401935050602081019050612075565b5050509392505050565b600082601f8301126120bb576120ba611f8c565b5b81356120cb84826020860161203d565b91505092915050565b6120dd81611e28565b81146120e857600080fd5b50565b6000813590506120fa816120d4565b92915050565b6000806040838503121561211757612116611d4a565b5b600083013567ffffffffffffffff81111561213557612134611d4f565b5b612141858286016120a6565b9250506020612152858286016120eb565b9150509250929050565b61216581611d74565b82525050565b6000602082019050612180600083018461215c565b92915050565b6000806040838503121561219d5761219c611d4a565b5b60006121ab85828601611dd3565b92505060206121bc85828601611dd3565b9150509250929050565b6000602082840312156121dc576121db611d4a565b5b60006121ea84828501611d9d565b91505092915050565b60006020828403121561220957612208611d4a565b5b600061221784828501611dd3565b91505092915050565b600080fd5b60008083601f84011261223b5761223a611f8c565b5b8235905067ffffffffffffffff81111561225857612257612220565b5b60208301915083602082028301111561227457612273612038565b5b9250929050565b60008060006040848603121561229457612293611d4a565b5b600084013567ffffffffffffffff8111156122b2576122b1611d4f565b5b6122be86828701612225565b935093505060206122d1868287016120eb565b9150509250925092565b600080604083850312156122f2576122f1611d4a565b5b600061230085828601611d9d565b925050602061231185828601611d9d565b9150509250929050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000612377602883611c99565b91506123828261231b565b604082019050919050565b600060208201905081810360008301526123a68161236a565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061241682611db2565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612448576124476123dc565b5b600182019050919050565b7f46656520697320746f6f20686967680000000000000000000000000000000000600082015250565b6000612489600f83611c99565b915061249482612453565b602082019050919050565b600060208201905081810360008301526124b88161247c565b9050919050565b60006040820190506124d46000830185611ed8565b6124e16020830184611ed8565b9392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000612544602683611c99565b915061254f826124e8565b604082019050919050565b6000602082019050818103600083015261257381612537565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006125d6602483611c99565b91506125e18261257a565b604082019050919050565b60006020820190508181036000830152612605816125c9565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612668602283611c99565b91506126738261260c565b604082019050919050565b600060208201905081810360008301526126978161265b565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006126fa602583611c99565b91506127058261269e565b604082019050919050565b60006020820190508181036000830152612729816126ed565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061278c602383611c99565b915061279782612730565b604082019050919050565b600060208201905081810360008301526127bb8161277f565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b600061281e602983611c99565b9150612829826127c2565b604082019050919050565b6000602082019050818103600083015261284d81612811565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b600061288a601c83611c99565b915061289582612854565b602082019050919050565b600060208201905081810360008301526128b98161287d565b9050919050565b60006128cb82611db2565b91506128d683611db2565b92508282019050808211156128ee576128ed6123dc565b5b92915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b6000612950602383611c99565b915061295b826128f4565b604082019050919050565b6000602082019050818103600083015261297f81612943565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006129bc602083611c99565b91506129c782612986565b602082019050919050565b600060208201905081810360008301526129eb816129af565b9050919050565b600081519050612a0181611d86565b92915050565b600060208284031215612a1d57612a1c611d4a565b5b6000612a2b848285016129f2565b91505092915050565b6000819050919050565b6000612a59612a54612a4f84612a34565b611e5e565b611db2565b9050919050565b612a6981612a3e565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b612aa481611d74565b82525050565b6000612ab68383612a9b565b60208301905092915050565b6000602082019050919050565b6000612ada82612a6f565b612ae48185612a7a565b9350612aef83612a8b565b8060005b83811015612b20578151612b078882612aaa565b9750612b1283612ac2565b925050600181019050612af3565b5085935050505092915050565b600060a082019050612b426000830188611ed8565b612b4f6020830187612a60565b8181036040830152612b618186612acf565b9050612b70606083018561215c565b612b7d6080830184611ed8565b9695505050505050565b6000612b9282611db2565b9150612b9d83611db2565b9250828202612bab81611db2565b91508282048414831517612bc257612bc16123dc565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612c0382611db2565b9150612c0e83611db2565b925082612c1e57612c1d612bc9565b5b828204905092915050565b6000612c3482611db2565b9150612c3f83611db2565b9250828203905081811115612c5757612c566123dc565b5b9291505056fea264697066735822122076583300d15a1b8d7a9c3fe8f280f7d5b4ac0e4083892165b208b7b14cf001c764736f6c63430008120033

Deployed Bytecode Sourcemap

5716:8954:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7791:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8679:186;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6559:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8068:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8873:517;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6798:56;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7977:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14312:312;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6607:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13136:365;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8176:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1563:103;;;;;;;;;;;;;:::i;:::-;;6680:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;915:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6738:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7882:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13621:220;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8303:192;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13917:319;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8503:168;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1821:238;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7791:83;7828:13;7861:5;;;;;;;;;;;;;;;;;7854:12;;7791:83;:::o;8679:186::-;8779:4;8796:39;8805:12;:10;:12::i;:::-;8819:7;8828:6;8796:8;:39::i;:::-;8853:4;8846:11;;8679:186;;;;:::o;6559:41::-;;;;;;;;;;;;;:::o;8068:100::-;8121:7;5934:21;8141:19;;8068:100;:::o;8873:517::-;9005:4;9022:24;9049:11;:19;9061:6;9049:19;;;;;;;;;;;;;;;:33;9069:12;:10;:12::i;:::-;9049:33;;;;;;;;;;;;;;;;9022:60;;9135:6;9115:16;:26;;9093:116;;;;;;;;;;;;:::i;:::-;;;;;;;;;9245:57;9254:6;9262:12;:10;:12::i;:::-;9295:6;9276:16;:25;9245:8;:57::i;:::-;9324:36;9334:6;9342:9;9353:6;9324:9;:36::i;:::-;9378:4;9371:11;;;8873:517;;;;;:::o;6798:56::-;;;;:::o;7977:83::-;8018:5;5884:1;8036:16;;7977:83;:::o;14312:312::-;801:13;:11;:13::i;:::-;14453:9:::1;14449:168;14468:8;:15;14464:1;:19;14449:168;;;14539:8;14505:18;:31;14524:8;14533:1;14524:11;;;;;;;;:::i;:::-;;;;;;;;14505:31;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;14583:8;14592:1;14583:11;;;;;;;;:::i;:::-;;;;;;;;14567:38;;;14596:8;14567:38;;;;;;:::i;:::-;;;;;;;;14485:3;;;;;:::i;:::-;;;;14449:168;;;;14312:312:::0;;:::o;6607:28::-;;;;;;;;;;;;;:::o;13136:365::-;801:13;:11;:13::i;:::-;5997:1:::1;13258:11;:22;;13250:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;5997:1;13319:12;:23;;13311:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;13388:11;13373:12;:26;;;;13426:12;13410:13;:28;;;;13454:39;13467:11;13480:12;13454:39;;;;;;;:::i;:::-;;;;;;;;13136:365:::0;;:::o;8176:119::-;8242:7;8269:9;:18;8279:7;8269:18;;;;;;;;;;;;;;;;8262:25;;8176:119;;;:::o;1563:103::-;801:13;:11;:13::i;:::-;1628:30:::1;1655:1;1628:18;:30::i;:::-;1563:103::o:0;6680:51::-;;;;:::o;915:87::-;961:7;988:6;;;;;;;;;;;981:13;;915:87;:::o;6738:53::-;;;;:::o;7882:87::-;7921:13;7954:7;;;;;;;;;;;;;;;;;7947:14;;7882:87;:::o;13621:220::-;801:13;:11;:13::i;:::-;13752:18:::1;13730:19;:40;;;;13786:47;13814:18;13786:47;;;;;;:::i;:::-;;;;;;;;13621:220:::0;:::o;8303:192::-;8406:4;8423:42;8433:12;:10;:12::i;:::-;8447:9;8458:6;8423:9;:42::i;:::-;8483:4;8476:11;;8303:192;;;;:::o;13917:319::-;801:13;:11;:13::i;:::-;14062:9:::1;14057:172;14081:8;;:15;;14077:1;:19;14057:172;;;14152:8;14118:18;:31;14137:8;;14146:1;14137:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;14118:31;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;14195:8;;14204:1;14195:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;14179:38;;;14208:8;14179:38;;;;;;:::i;:::-;;;;;;;;14098:3;;;;;:::i;:::-;;;;14057:172;;;;13917:319:::0;;;:::o;8503:168::-;8609:7;8636:11;:18;8648:5;8636:18;;;;;;;;;;;;;;;:27;8655:7;8636:27;;;;;;;;;;;;;;;;8629:34;;8503:168;;;;:::o;1821:238::-;801:13;:11;:13::i;:::-;1944:1:::1;1924:22;;:8;:22;;::::0;1902:110:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;2023:28;2042:8;2023:18;:28::i;:::-;1821:238:::0;:::o;215:98::-;268:7;295:10;288:17;;215:98;:::o;9406:335::-;9516:1;9499:19;;:5;:19;;;9491:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9597:1;9578:21;;:7;:21;;;9570:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9679:6;9649:11;:18;9661:5;9649:18;;;;;;;;;;;;;;;:27;9668:7;9649:27;;;;;;;;;;;;;;;:36;;;;9717:7;9701:32;;9710:5;9701:32;;;9726:6;9701:32;;;;;;:::i;:::-;;;;;;;;9406:335;;;:::o;9749:1575::-;9853:1;9837:18;;:4;:18;;;9829:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9930:1;9916:16;;:2;:16;;;9908:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;10001:1;9991:6;:11;9983:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;10068:18;:24;10087:4;10068:24;;;;;;;;;;;;;;;;;;;;;;;;;10067:25;:52;;;;;10097:18;:22;10116:2;10097:22;;;;;;;;;;;;;;;;;;;;;;;;;10096:23;10067:52;10063:148;;;10154:12;;10144:6;:22;;10136:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;10063:148;10228:18;:24;10247:4;10228:24;;;;;;;;;;;;;;;;;;;;;;;;;10227:25;:52;;;;;10257:18;:22;10276:2;10257:22;;;;;;;;;;;;;;;;;;;;;;;;;10256:23;10227:52;10223:221;;;10347:14;;10338:6;10322:13;10332:2;10322:9;:13::i;:::-;:22;;;;:::i;:::-;:39;10296:136;;;;;;;;;;;;:::i;:::-;;;;;;;;;10223:221;10454:28;10485:24;10503:4;10485:9;:24::i;:::-;10454:55;;10550:12;;10526:20;:36;10522:104;;10602:12;;10579:35;;10522:104;10638:12;10677:19;;10653:20;:43;;:62;;;;;10708:7;:5;:7::i;:::-;10700:15;;:4;:15;;;;10653:62;:79;;;;;10725:7;:5;:7::i;:::-;10719:13;;:2;:13;;;;10653:79;10638:94;;10763:7;:31;;;;;10788:6;;;;;;;;;;;10787:7;10763:31;:69;;;;;10819:13;;;;;;;;;;;10811:21;;:4;:21;;;;10763:69;:111;;;;;10850:18;:24;10869:4;10850:24;;;;;;;;;;;;;;;;;;;;;;;;;10849:25;10763:111;:151;;;;;10892:18;:22;10911:2;10892:22;;;;;;;;;;;;;;;;;;;;;;;;;10891:23;10763:151;10745:440;;;10941:38;10958:20;10941:16;:38::i;:::-;10996:26;11025:21;10996:50;;11087:1;11065:18;:23;11061:113;;6507:42;11109:26;;:49;11136:21;11109:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11061:113;10926:259;10745:440;11224:15;11242:20;11253:4;11259:2;11242:10;:20::i;:::-;11224:38;;11275:41;11290:4;11296:2;11300:6;11308:7;11275:14;:41::i;:::-;9818:1506;;;9749:1575;;;:::o;1080:132::-;1155:12;:10;:12::i;:::-;1144:23;;:7;:5;:7::i;:::-;:23;;;1136:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1080:132::o;2219:191::-;2293:16;2312:6;;;;;;;;;;;2293:25;;2338:8;2329:6;;:17;;;;;;;;;;;;;;;;;;2393:8;2362:40;;2383:8;2362:40;;;;;;;;;;;;2282:128;2219:191;:::o;11938:483::-;6906:4;6897:6;;:13;;;;;;;;;;;;;;;;;;12016:21:::1;12054:1;12040:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12016:40;;12085:4;12067;12072:1;12067:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;12111:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12101:4;12106:1;12101:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;12144:62;12161:4;12176:15;;;;;;;;;;;12194:11;12144:8;:62::i;:::-;12217:15;;;;;;;;;;;:66;;;12298:11;12324:1;12340:4;12367;12387:15;12217:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;12005:416;6942:5:::0;6933:6;;:14;;;;;;;;;;;;;;;;;;11938:483;:::o;11332:598::-;11428:7;11448:15;11488:13;;;;;;;;;;;11479:22;;:5;:22;;;;:46;;;;;11512:13;;;;;;;;;;;11505:20;;:3;:20;;;;11479:46;11476:301;;;11551:1;11541:11;;11476:301;;;11582:13;;;;;;;;;;;11573:22;;:5;:22;;;:46;;;;;11606:13;;;;;;;;;;;11599:20;;:3;:20;;;;11573:46;11570:207;;;11646:12;;11636:22;;11570:207;;;11686:13;;;;;;;;;;;11679:20;;:3;:20;;;:46;;;;;11712:13;;;;;;;;;;;11703:22;;:5;:22;;;;11679:46;11676:101;;;11752:13;;11742:23;;11676:101;11570:207;11476:301;11794:18;:25;11813:5;11794:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;11823:18;:23;11842:3;11823:23;;;;;;;;;;;;;;;;;;;;;;;;;11794:52;11791:105;;;11883:1;11873:11;;11791:105;11915:7;11908:14;;;11332:598;;;;:::o;12429:604::-;12579:13;12612:3;12605;12596:6;:12;;;;:::i;:::-;12595:20;;;;:::i;:::-;12579:36;;12626:23;12661:5;12652:6;:14;;;;:::i;:::-;12626:40;;12717:6;12697:9;:17;12707:6;12697:17;;;;;;;;;;;;;;;;:26;;;;:::i;:::-;12677:9;:17;12687:6;12677:17;;;;;;;;;;;;;;;:46;;;;12780:15;12757:9;:20;12767:9;12757:20;;;;;;;;;;;;;;;;:38;;;;:::i;:::-;12734:9;:20;12744:9;12734:20;;;;;;;;;;;;;;;:61;;;;12819:1;12810:5;:10;12806:160;;12891:5;12864:9;:24;12882:4;12864:24;;;;;;;;;;;;;;;;:32;;;;:::i;:::-;12837:9;:24;12855:4;12837:24;;;;;;;;;;;;;;;:59;;;;12941:4;12916:38;;12925:6;12916:38;;;12948:5;12916:38;;;;;;:::i;:::-;;;;;;;;12806:160;12998:9;12981:44;;12990:6;12981:44;;;13009:15;12981:44;;;;;;:::i;:::-;;;;;;;;12568:465;;12429:604;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1349:75::-;1382:6;1415:2;1409:9;1399:19;;1349:75;:::o;1430:117::-;1539:1;1536;1529:12;1553:117;1662:1;1659;1652:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:60::-;3474:3;3495:5;3488:12;;3446:60;;;:::o;3512:142::-;3562:9;3595:53;3613:34;3622:24;3640:5;3622:24;:::i;:::-;3613:34;:::i;:::-;3595:53;:::i;:::-;3582:66;;3512:142;;;:::o;3660:126::-;3710:9;3743:37;3774:5;3743:37;:::i;:::-;3730:50;;3660:126;;;:::o;3792:152::-;3868:9;3901:37;3932:5;3901:37;:::i;:::-;3888:50;;3792:152;;;:::o;3950:183::-;4063:63;4120:5;4063:63;:::i;:::-;4058:3;4051:76;3950:183;;:::o;4139:274::-;4258:4;4296:2;4285:9;4281:18;4273:26;;4309:97;4403:1;4392:9;4388:17;4379:6;4309:97;:::i;:::-;4139:274;;;;:::o;4419:118::-;4506:24;4524:5;4506:24;:::i;:::-;4501:3;4494:37;4419:118;;:::o;4543:222::-;4636:4;4674:2;4663:9;4659:18;4651:26;;4687:71;4755:1;4744:9;4740:17;4731:6;4687:71;:::i;:::-;4543:222;;;;:::o;4771:619::-;4848:6;4856;4864;4913:2;4901:9;4892:7;4888:23;4884:32;4881:119;;;4919:79;;:::i;:::-;4881:119;5039:1;5064:53;5109:7;5100:6;5089:9;5085:22;5064:53;:::i;:::-;5054:63;;5010:117;5166:2;5192:53;5237:7;5228:6;5217:9;5213:22;5192:53;:::i;:::-;5182:63;;5137:118;5294:2;5320:53;5365:7;5356:6;5345:9;5341:22;5320:53;:::i;:::-;5310:63;;5265:118;4771:619;;;;;:::o;5396:86::-;5431:7;5471:4;5464:5;5460:16;5449:27;;5396:86;;;:::o;5488:112::-;5571:22;5587:5;5571:22;:::i;:::-;5566:3;5559:35;5488:112;;:::o;5606:214::-;5695:4;5733:2;5722:9;5718:18;5710:26;;5746:67;5810:1;5799:9;5795:17;5786:6;5746:67;:::i;:::-;5606:214;;;;:::o;5826:117::-;5935:1;5932;5925:12;5949:180;5997:77;5994:1;5987:88;6094:4;6091:1;6084:15;6118:4;6115:1;6108:15;6135:281;6218:27;6240:4;6218:27;:::i;:::-;6210:6;6206:40;6348:6;6336:10;6333:22;6312:18;6300:10;6297:34;6294:62;6291:88;;;6359:18;;:::i;:::-;6291:88;6399:10;6395:2;6388:22;6178:238;6135:281;;:::o;6422:129::-;6456:6;6483:20;;:::i;:::-;6473:30;;6512:33;6540:4;6532:6;6512:33;:::i;:::-;6422:129;;;:::o;6557:311::-;6634:4;6724:18;6716:6;6713:30;6710:56;;;6746:18;;:::i;:::-;6710:56;6796:4;6788:6;6784:17;6776:25;;6856:4;6850;6846:15;6838:23;;6557:311;;;:::o;6874:117::-;6983:1;6980;6973:12;7014:710;7110:5;7135:81;7151:64;7208:6;7151:64;:::i;:::-;7135:81;:::i;:::-;7126:90;;7236:5;7265:6;7258:5;7251:21;7299:4;7292:5;7288:16;7281:23;;7352:4;7344:6;7340:17;7332:6;7328:30;7381:3;7373:6;7370:15;7367:122;;;7400:79;;:::i;:::-;7367:122;7515:6;7498:220;7532:6;7527:3;7524:15;7498:220;;;7607:3;7636:37;7669:3;7657:10;7636:37;:::i;:::-;7631:3;7624:50;7703:4;7698:3;7694:14;7687:21;;7574:144;7558:4;7553:3;7549:14;7542:21;;7498:220;;;7502:21;7116:608;;7014:710;;;;;:::o;7747:370::-;7818:5;7867:3;7860:4;7852:6;7848:17;7844:27;7834:122;;7875:79;;:::i;:::-;7834:122;7992:6;7979:20;8017:94;8107:3;8099:6;8092:4;8084:6;8080:17;8017:94;:::i;:::-;8008:103;;7824:293;7747:370;;;;:::o;8123:116::-;8193:21;8208:5;8193:21;:::i;:::-;8186:5;8183:32;8173:60;;8229:1;8226;8219:12;8173:60;8123:116;:::o;8245:133::-;8288:5;8326:6;8313:20;8304:29;;8342:30;8366:5;8342:30;:::i;:::-;8245:133;;;;:::o;8384:678::-;8474:6;8482;8531:2;8519:9;8510:7;8506:23;8502:32;8499:119;;;8537:79;;:::i;:::-;8499:119;8685:1;8674:9;8670:17;8657:31;8715:18;8707:6;8704:30;8701:117;;;8737:79;;:::i;:::-;8701:117;8842:78;8912:7;8903:6;8892:9;8888:22;8842:78;:::i;:::-;8832:88;;8628:302;8969:2;8995:50;9037:7;9028:6;9017:9;9013:22;8995:50;:::i;:::-;8985:60;;8940:115;8384:678;;;;;:::o;9068:118::-;9155:24;9173:5;9155:24;:::i;:::-;9150:3;9143:37;9068:118;;:::o;9192:222::-;9285:4;9323:2;9312:9;9308:18;9300:26;;9336:71;9404:1;9393:9;9389:17;9380:6;9336:71;:::i;:::-;9192:222;;;;:::o;9420:474::-;9488:6;9496;9545:2;9533:9;9524:7;9520:23;9516:32;9513:119;;;9551:79;;:::i;:::-;9513:119;9671:1;9696:53;9741:7;9732:6;9721:9;9717:22;9696:53;:::i;:::-;9686:63;;9642:117;9798:2;9824:53;9869:7;9860:6;9849:9;9845:22;9824:53;:::i;:::-;9814:63;;9769:118;9420:474;;;;;:::o;9900:329::-;9959:6;10008:2;9996:9;9987:7;9983:23;9979:32;9976:119;;;10014:79;;:::i;:::-;9976:119;10134:1;10159:53;10204:7;10195:6;10184:9;10180:22;10159:53;:::i;:::-;10149:63;;10105:117;9900:329;;;;:::o;10235:::-;10294:6;10343:2;10331:9;10322:7;10318:23;10314:32;10311:119;;;10349:79;;:::i;:::-;10311:119;10469:1;10494:53;10539:7;10530:6;10519:9;10515:22;10494:53;:::i;:::-;10484:63;;10440:117;10235:329;;;;:::o;10570:117::-;10679:1;10676;10669:12;10710:568;10783:8;10793:6;10843:3;10836:4;10828:6;10824:17;10820:27;10810:122;;10851:79;;:::i;:::-;10810:122;10964:6;10951:20;10941:30;;10994:18;10986:6;10983:30;10980:117;;;11016:79;;:::i;:::-;10980:117;11130:4;11122:6;11118:17;11106:29;;11184:3;11176:4;11168:6;11164:17;11154:8;11150:32;11147:41;11144:128;;;11191:79;;:::i;:::-;11144:128;10710:568;;;;;:::o;11284:698::-;11376:6;11384;11392;11441:2;11429:9;11420:7;11416:23;11412:32;11409:119;;;11447:79;;:::i;:::-;11409:119;11595:1;11584:9;11580:17;11567:31;11625:18;11617:6;11614:30;11611:117;;;11647:79;;:::i;:::-;11611:117;11760:80;11832:7;11823:6;11812:9;11808:22;11760:80;:::i;:::-;11742:98;;;;11538:312;11889:2;11915:50;11957:7;11948:6;11937:9;11933:22;11915:50;:::i;:::-;11905:60;;11860:115;11284:698;;;;;:::o;11988:474::-;12056:6;12064;12113:2;12101:9;12092:7;12088:23;12084:32;12081:119;;;12119:79;;:::i;:::-;12081:119;12239:1;12264:53;12309:7;12300:6;12289:9;12285:22;12264:53;:::i;:::-;12254:63;;12210:117;12366:2;12392:53;12437:7;12428:6;12417:9;12413:22;12392:53;:::i;:::-;12382:63;;12337:118;11988:474;;;;;:::o;12468:227::-;12608:34;12604:1;12596:6;12592:14;12585:58;12677:10;12672:2;12664:6;12660:15;12653:35;12468:227;:::o;12701:366::-;12843:3;12864:67;12928:2;12923:3;12864:67;:::i;:::-;12857:74;;12940:93;13029:3;12940:93;:::i;:::-;13058:2;13053:3;13049:12;13042:19;;12701:366;;;:::o;13073:419::-;13239:4;13277:2;13266:9;13262:18;13254:26;;13326:9;13320:4;13316:20;13312:1;13301:9;13297:17;13290:47;13354:131;13480:4;13354:131;:::i;:::-;13346:139;;13073:419;;;:::o;13498:180::-;13546:77;13543:1;13536:88;13643:4;13640:1;13633:15;13667:4;13664:1;13657:15;13684:180;13732:77;13729:1;13722:88;13829:4;13826:1;13819:15;13853:4;13850:1;13843:15;13870:233;13909:3;13932:24;13950:5;13932:24;:::i;:::-;13923:33;;13978:66;13971:5;13968:77;13965:103;;14048:18;;:::i;:::-;13965:103;14095:1;14088:5;14084:13;14077:20;;13870:233;;;:::o;14109:165::-;14249:17;14245:1;14237:6;14233:14;14226:41;14109:165;:::o;14280:366::-;14422:3;14443:67;14507:2;14502:3;14443:67;:::i;:::-;14436:74;;14519:93;14608:3;14519:93;:::i;:::-;14637:2;14632:3;14628:12;14621:19;;14280:366;;;:::o;14652:419::-;14818:4;14856:2;14845:9;14841:18;14833:26;;14905:9;14899:4;14895:20;14891:1;14880:9;14876:17;14869:47;14933:131;15059:4;14933:131;:::i;:::-;14925:139;;14652:419;;;:::o;15077:332::-;15198:4;15236:2;15225:9;15221:18;15213:26;;15249:71;15317:1;15306:9;15302:17;15293:6;15249:71;:::i;:::-;15330:72;15398:2;15387:9;15383:18;15374:6;15330:72;:::i;:::-;15077:332;;;;;:::o;15415:225::-;15555:34;15551:1;15543:6;15539:14;15532:58;15624:8;15619:2;15611:6;15607:15;15600:33;15415:225;:::o;15646:366::-;15788:3;15809:67;15873:2;15868:3;15809:67;:::i;:::-;15802:74;;15885:93;15974:3;15885:93;:::i;:::-;16003:2;15998:3;15994:12;15987:19;;15646:366;;;:::o;16018:419::-;16184:4;16222:2;16211:9;16207:18;16199:26;;16271:9;16265:4;16261:20;16257:1;16246:9;16242:17;16235:47;16299:131;16425:4;16299:131;:::i;:::-;16291:139;;16018:419;;;:::o;16443:223::-;16583:34;16579:1;16571:6;16567:14;16560:58;16652:6;16647:2;16639:6;16635:15;16628:31;16443:223;:::o;16672:366::-;16814:3;16835:67;16899:2;16894:3;16835:67;:::i;:::-;16828:74;;16911:93;17000:3;16911:93;:::i;:::-;17029:2;17024:3;17020:12;17013:19;;16672:366;;;:::o;17044:419::-;17210:4;17248:2;17237:9;17233:18;17225:26;;17297:9;17291:4;17287:20;17283:1;17272:9;17268:17;17261:47;17325:131;17451:4;17325:131;:::i;:::-;17317:139;;17044:419;;;:::o;17469:221::-;17609:34;17605:1;17597:6;17593:14;17586:58;17678:4;17673:2;17665:6;17661:15;17654:29;17469:221;:::o;17696:366::-;17838:3;17859:67;17923:2;17918:3;17859:67;:::i;:::-;17852:74;;17935:93;18024:3;17935:93;:::i;:::-;18053:2;18048:3;18044:12;18037:19;;17696:366;;;:::o;18068:419::-;18234:4;18272:2;18261:9;18257:18;18249:26;;18321:9;18315:4;18311:20;18307:1;18296:9;18292:17;18285:47;18349:131;18475:4;18349:131;:::i;:::-;18341:139;;18068:419;;;:::o;18493:224::-;18633:34;18629:1;18621:6;18617:14;18610:58;18702:7;18697:2;18689:6;18685:15;18678:32;18493:224;:::o;18723:366::-;18865:3;18886:67;18950:2;18945:3;18886:67;:::i;:::-;18879:74;;18962:93;19051:3;18962:93;:::i;:::-;19080:2;19075:3;19071:12;19064:19;;18723:366;;;:::o;19095:419::-;19261:4;19299:2;19288:9;19284:18;19276:26;;19348:9;19342:4;19338:20;19334:1;19323:9;19319:17;19312:47;19376:131;19502:4;19376:131;:::i;:::-;19368:139;;19095:419;;;:::o;19520:222::-;19660:34;19656:1;19648:6;19644:14;19637:58;19729:5;19724:2;19716:6;19712:15;19705:30;19520:222;:::o;19748:366::-;19890:3;19911:67;19975:2;19970:3;19911:67;:::i;:::-;19904:74;;19987:93;20076:3;19987:93;:::i;:::-;20105:2;20100:3;20096:12;20089:19;;19748:366;;;:::o;20120:419::-;20286:4;20324:2;20313:9;20309:18;20301:26;;20373:9;20367:4;20363:20;20359:1;20348:9;20344:17;20337:47;20401:131;20527:4;20401:131;:::i;:::-;20393:139;;20120:419;;;:::o;20545:228::-;20685:34;20681:1;20673:6;20669:14;20662:58;20754:11;20749:2;20741:6;20737:15;20730:36;20545:228;:::o;20779:366::-;20921:3;20942:67;21006:2;21001:3;20942:67;:::i;:::-;20935:74;;21018:93;21107:3;21018:93;:::i;:::-;21136:2;21131:3;21127:12;21120:19;;20779:366;;;:::o;21151:419::-;21317:4;21355:2;21344:9;21340:18;21332:26;;21404:9;21398:4;21394:20;21390:1;21379:9;21375:17;21368:47;21432:131;21558:4;21432:131;:::i;:::-;21424:139;;21151:419;;;:::o;21576:178::-;21716:30;21712:1;21704:6;21700:14;21693:54;21576:178;:::o;21760:366::-;21902:3;21923:67;21987:2;21982:3;21923:67;:::i;:::-;21916:74;;21999:93;22088:3;21999:93;:::i;:::-;22117:2;22112:3;22108:12;22101:19;;21760:366;;;:::o;22132:419::-;22298:4;22336:2;22325:9;22321:18;22313:26;;22385:9;22379:4;22375:20;22371:1;22360:9;22356:17;22349:47;22413:131;22539:4;22413:131;:::i;:::-;22405:139;;22132:419;;;:::o;22557:191::-;22597:3;22616:20;22634:1;22616:20;:::i;:::-;22611:25;;22650:20;22668:1;22650:20;:::i;:::-;22645:25;;22693:1;22690;22686:9;22679:16;;22714:3;22711:1;22708:10;22705:36;;;22721:18;;:::i;:::-;22705:36;22557:191;;;;:::o;22754:222::-;22894:34;22890:1;22882:6;22878:14;22871:58;22963:5;22958:2;22950:6;22946:15;22939:30;22754:222;:::o;22982:366::-;23124:3;23145:67;23209:2;23204:3;23145:67;:::i;:::-;23138:74;;23221:93;23310:3;23221:93;:::i;:::-;23339:2;23334:3;23330:12;23323:19;;22982:366;;;:::o;23354:419::-;23520:4;23558:2;23547:9;23543:18;23535:26;;23607:9;23601:4;23597:20;23593:1;23582:9;23578:17;23571:47;23635:131;23761:4;23635:131;:::i;:::-;23627:139;;23354:419;;;:::o;23779:182::-;23919:34;23915:1;23907:6;23903:14;23896:58;23779:182;:::o;23967:366::-;24109:3;24130:67;24194:2;24189:3;24130:67;:::i;:::-;24123:74;;24206:93;24295:3;24206:93;:::i;:::-;24324:2;24319:3;24315:12;24308:19;;23967:366;;;:::o;24339:419::-;24505:4;24543:2;24532:9;24528:18;24520:26;;24592:9;24586:4;24582:20;24578:1;24567:9;24563:17;24556:47;24620:131;24746:4;24620:131;:::i;:::-;24612:139;;24339:419;;;:::o;24764:143::-;24821:5;24852:6;24846:13;24837:22;;24868:33;24895:5;24868:33;:::i;:::-;24764:143;;;;:::o;24913:351::-;24983:6;25032:2;25020:9;25011:7;25007:23;25003:32;25000:119;;;25038:79;;:::i;:::-;25000:119;25158:1;25183:64;25239:7;25230:6;25219:9;25215:22;25183:64;:::i;:::-;25173:74;;25129:128;24913:351;;;;:::o;25270:85::-;25315:7;25344:5;25333:16;;25270:85;;;:::o;25361:158::-;25419:9;25452:61;25470:42;25479:32;25505:5;25479:32;:::i;:::-;25470:42;:::i;:::-;25452:61;:::i;:::-;25439:74;;25361:158;;;:::o;25525:147::-;25620:45;25659:5;25620:45;:::i;:::-;25615:3;25608:58;25525:147;;:::o;25678:114::-;25745:6;25779:5;25773:12;25763:22;;25678:114;;;:::o;25798:184::-;25897:11;25931:6;25926:3;25919:19;25971:4;25966:3;25962:14;25947:29;;25798:184;;;;:::o;25988:132::-;26055:4;26078:3;26070:11;;26108:4;26103:3;26099:14;26091:22;;25988:132;;;:::o;26126:108::-;26203:24;26221:5;26203:24;:::i;:::-;26198:3;26191:37;26126:108;;:::o;26240:179::-;26309:10;26330:46;26372:3;26364:6;26330:46;:::i;:::-;26408:4;26403:3;26399:14;26385:28;;26240:179;;;;:::o;26425:113::-;26495:4;26527;26522:3;26518:14;26510:22;;26425:113;;;:::o;26574:732::-;26693:3;26722:54;26770:5;26722:54;:::i;:::-;26792:86;26871:6;26866:3;26792:86;:::i;:::-;26785:93;;26902:56;26952:5;26902:56;:::i;:::-;26981:7;27012:1;26997:284;27022:6;27019:1;27016:13;26997:284;;;27098:6;27092:13;27125:63;27184:3;27169:13;27125:63;:::i;:::-;27118:70;;27211:60;27264:6;27211:60;:::i;:::-;27201:70;;27057:224;27044:1;27041;27037:9;27032:14;;26997:284;;;27001:14;27297:3;27290:10;;26698:608;;;26574:732;;;;:::o;27312:831::-;27575:4;27613:3;27602:9;27598:19;27590:27;;27627:71;27695:1;27684:9;27680:17;27671:6;27627:71;:::i;:::-;27708:80;27784:2;27773:9;27769:18;27760:6;27708:80;:::i;:::-;27835:9;27829:4;27825:20;27820:2;27809:9;27805:18;27798:48;27863:108;27966:4;27957:6;27863:108;:::i;:::-;27855:116;;27981:72;28049:2;28038:9;28034:18;28025:6;27981:72;:::i;:::-;28063:73;28131:3;28120:9;28116:19;28107:6;28063:73;:::i;:::-;27312:831;;;;;;;;:::o;28149:410::-;28189:7;28212:20;28230:1;28212:20;:::i;:::-;28207:25;;28246:20;28264:1;28246:20;:::i;:::-;28241:25;;28301:1;28298;28294:9;28323:30;28341:11;28323:30;:::i;:::-;28312:41;;28502:1;28493:7;28489:15;28486:1;28483:22;28463:1;28456:9;28436:83;28413:139;;28532:18;;:::i;:::-;28413:139;28197:362;28149:410;;;;:::o;28565:180::-;28613:77;28610:1;28603:88;28710:4;28707:1;28700:15;28734:4;28731:1;28724:15;28751:185;28791:1;28808:20;28826:1;28808:20;:::i;:::-;28803:25;;28842:20;28860:1;28842:20;:::i;:::-;28837:25;;28881:1;28871:35;;28886:18;;:::i;:::-;28871:35;28928:1;28925;28921:9;28916:14;;28751:185;;;;:::o;28942:194::-;28982:4;29002:20;29020:1;29002:20;:::i;:::-;28997:25;;29036:20;29054:1;29036:20;:::i;:::-;29031:25;;29080:1;29077;29073:9;29065:17;;29104:1;29098:4;29095:11;29092:37;;;29109:18;;:::i;:::-;29092:37;28942:194;;;;:::o

Swarm Source

ipfs://76583300d15a1b8d7a9c3fe8f280f7d5b4ac0e4083892165b208b7b14cf001c7
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.