ETH Price: $3,396.08 (+3.56%)
 

Overview

Max Total Supply

1,000,000,000,000 WPEPE4.0

Holders

29

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Filtered by Token Holder
wellnesskoenig.eth
Balance
5,295,940,855.113136263 WPEPE4.0

Value
$0.00
0xe5bec2d28fcfad3758d20b99c051752b931a5eb5
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:
WPEPE4

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, GNU GPLv2 license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: Unlicensed

pragma solidity ^0.8.19;

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);
}

interface Token {
    function transferFrom(address, address, uint) external returns (bool);
    function transfer(address, uint) external returns (bool);
}

interface IUniswapV2Factory {
    event PairCreated(address indexed token0, address indexed token1, address pair, uint);

    function feeTo() external view returns (address);
    function feeToSetter() external view returns (address);

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

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

    function setFeeTo(address) external;
    function setFeeToSetter(address) external;
}

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

    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint amountA, uint amountB);

    function removeLiquidityETHWithPermit(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint amountToken, uint amountETH);

    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);

    function swapTokensForExactTokens(
        uint amountOut,
        uint amountInMax,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);

    function swapExactETHForTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable returns (uint[] memory amounts);

    function swapTokensForExactETH(
        uint amountOut,
        uint amountInMax,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);

    function swapExactTokensForETH(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);

    function swapETHForExactTokens(
        uint amountOut,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable returns (uint[] memory amounts);

    function quote(
        uint amountA,
        uint reserveA,
        uint reserveB
    ) external pure returns (uint amountB);

    function getAmountOut(
        uint amountIn,
        uint reserveIn,
        uint reserveOut
    ) external pure returns (uint amountOut);

    function getAmountIn(
        uint amountOut,
        uint reserveIn,
        uint reserveOut
    ) external pure returns (uint amountIn);

    function getAmountsOut(uint amountIn, address[] calldata path)
        external
        view
        returns (uint[] memory amounts);

    function getAmountsIn(uint amountOut, address[] calldata path)
        external
        view
        returns (uint[] memory amounts);
}

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token,
        uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    ) external returns (uint256 amountETH);

    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint256 amountETH);

    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;

    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable;

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

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



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;
        return c;
    }

}

contract Ownable is Context {
    address private _owner;
    address private _previousOwner;

    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

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

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

    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }
    
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    function transferOwnership(address newOwner) public virtual onlyOwner {
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }

}

contract WPEPE4 is Context, IERC20, Ownable {
    
    using SafeMath for uint256;
    mapping (address => uint256) private _rOwned;
    mapping (address => uint256) private _tOwned;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _isExcludedFromFee;
    mapping(address => bool) private _botList;
    
    uint256 private constant MAX = ~uint256(0);
    uint256 private constant _tTotal = 1000000000000 * 10**9;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    
    uint256 private _redisFeeOnBuy = 0;
    uint256 private _taxFeeOnBuy = 0;
    
    uint256 private _redisFeeOnSell = 0;
    uint256 private _taxFeeOnSell = 6;
    
    uint256 private _redisFee;
    uint256 private _taxFee;
    
    string private constant _name = unicode"WPEPE 4.0";
    string private constant _symbol = unicode"WPEPE4.0";
    uint8 private constant _decimals = 9;

    address routerAddress = 0x3fC91A3afd70395Cd496C647d5a6CC9D4B2b7FAD;
    
    address payable private _developmentAddress = payable(0x2D5FDCdA1C6a6b77e253BefEf1A9545cA9CD6727);
    address payable private _marketingAddress = payable(0x2D5FDCdA1C6a6b77e253BefEf1A9545cA9CD6727);

    IUniswapV2Router02 public router;
    address public pair;
    
    bool private inSwap = false;
    bool private swapEnabled = true;
    
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }
    constructor () {
        _rOwned[_msgSender()] = _rTotal;
        
        IUniswapV2Router02 _router = IUniswapV2Router02(routerAddress);
        router = _router;

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

        emit Transfer(address(0x0000000000000000000000000000000000000000), _msgSender(), _tTotal);
    }

    modifier onlyDev() {	
        require(owner() == _msgSender() || _developmentAddress == _msgSender(), "Caller is not the dev");	
        _;	
    }

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

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

    function setPair(address  _pair) public onlyDev{
        pair = _pair;
    }

    function setRouterAdress(address  _router) public onlyDev{
        IUniswapV2Router02 mRouter = IUniswapV2Router02(_router);
        router = mRouter;
    }

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

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

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

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


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

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

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

    function tokenFromReflection(uint256 rAmount) private view returns(uint256) {
        require(rAmount <= _rTotal, "Amount must be less than total reflections");
        uint256 currentRate =  _getRate();
        return rAmount.div(currentRate);
    }

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

    function _transfer(address from, address to, uint256 amount) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(!_botList[from], "blackList for bot");
        require(amount > 0, "Transfer amount must be greater than zero");
        
        _redisFee = 0;
        _taxFee = 0;
        
        if (from != owner() && to != owner()) {
            
            uint256 contractTokenBalance = balanceOf(address(this));
            if (!inSwap && from != pair && swapEnabled && contractTokenBalance > 0) {
                swapTokensForEth(contractTokenBalance);
                uint256 contractETHBalance = address(this).balance;
                if(contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
            }
            
            if(from == pair && to != address(router)) {
                _redisFee = _redisFeeOnBuy;
                _taxFee = _taxFeeOnBuy;
            }
    
            if (to == pair && from != address(router)) {
                _redisFee = _redisFeeOnSell;
                _taxFee = _taxFeeOnSell;
            }
            
            if ((_isExcludedFromFee[from] || _isExcludedFromFee[to]) || (from != pair && to != pair)) {
                _redisFee = 0;
                _taxFee = 0;
            }
            
        }

        _tokenTransfer(from,to,amount);
    }

    function swapTokensForEth(uint256 tokenAmount) private lockTheSwap {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();
        _approve(address(this), address(router), tokenAmount);
        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }
        
    function sendETHToFee(uint256 amount) private {
        _developmentAddress.transfer(amount.div(2));
        _marketingAddress.transfer(amount.div(2));
    }
    
    function _tokenTransfer(address sender, address recipient, uint256 amount) private {
        _transferStandard(sender, recipient, amount);
    }

    event tokensRescued(address indexed token, address indexed to, uint amount);
    function rescueForeignTokens(address _tokenAddr, address _to, uint _amount) public onlyDev() {
        require(_tokenAddr != address(this), "You're not able to rescue native tokens");
        emit tokensRescued(_tokenAddr, _to, _amount);	
        Token(_tokenAddr).transfer(_to, _amount);
    }
    
    event devAddressUpdated(address indexed previous, address indexed adr);
    function setNewDevAddress(address payable dev) public onlyDev() {
        emit devAddressUpdated(_developmentAddress, dev);	
        _developmentAddress = dev;
        _isExcludedFromFee[_developmentAddress] = true;
    }
    
    event marketingAddressUpdated(address indexed previous, address indexed adr);
    function setNewMarketingAddress(address payable markt) public onlyDev() {
        emit marketingAddressUpdated(_marketingAddress, markt);	
        _marketingAddress = markt;
        _isExcludedFromFee[_marketingAddress] = true;
    }

    function _transferStandard(address sender, address recipient, uint256 tAmount) private {
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tTeam) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); 
        _takeTeam(tTeam);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _takeTeam(uint256 tTeam) private {
        uint256 currentRate =  _getRate();
        uint256 rTeam = tTeam.mul(currentRate);
        _rOwned[address(this)] = _rOwned[address(this)].add(rTeam);
    }

    function _reflectFee(uint256 rFee, uint256 tFee) private {
        _rTotal = _rTotal.sub(rFee);
        _tFeeTotal = _tFeeTotal.add(tFee);
    }

    receive() external payable {}
    
    function _getValues(uint256 tAmount) private view returns (uint256, uint256, uint256, uint256, uint256, uint256) {
        (uint256 tTransferAmount, uint256 tFee, uint256 tTeam) = _getTValues(tAmount, _redisFee, _taxFee);
        uint256 currentRate =  _getRate();
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(tAmount, tFee, tTeam, currentRate);
        return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tTeam);
    }

    function _getTValues(uint256 tAmount, uint256 taxFee, uint256 TeamFee) private pure returns (uint256, uint256, uint256) {
        uint256 tFee = tAmount.mul(taxFee).div(100);
        uint256 tTeam = tAmount.mul(TeamFee).div(100);
        uint256 tTransferAmount = tAmount.sub(tFee).sub(tTeam);
        return (tTransferAmount, tFee, tTeam);
    }

    function _getRValues(uint256 tAmount, uint256 tFee, uint256 tTeam, uint256 currentRate) private pure returns (uint256, uint256, uint256) {
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rFee = tFee.mul(currentRate);
        uint256 rTeam = tTeam.mul(currentRate);
        uint256 rTransferAmount = rAmount.sub(rFee).sub(rTeam);
        return (rAmount, rTransferAmount, rFee);
    }

	function _getRate() private view returns(uint256) {
        (uint256 rSupply, uint256 tSupply) = _getCurrentSupply();
        return rSupply.div(tSupply);
    }

    function _getCurrentSupply() private view returns(uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;      
        if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);
        return (rSupply, tSupply);
    }

    function manualswap() external {
        require(_msgSender() == _developmentAddress || _msgSender() == _marketingAddress || _msgSender() == owner());
        uint256 contractBalance = balanceOf(address(this));
        swapTokensForEth(contractBalance);
    }

    function manualsend() external {
        require(_msgSender() == _developmentAddress || _msgSender() == _marketingAddress || _msgSender() == owner());
        uint256 contractETHBalance = address(this).balance;
        sendETHToFee(contractETHBalance);
    }
    

    function toggleSwap(bool _swapEnabled) public onlyDev {
        swapEnabled = _swapEnabled;
    }

    function excludeMultipleAccountsFromFees(address[] calldata accounts, bool excluded) public onlyDev {
        for(uint256 i = 0; i < accounts.length; i++) {
            _isExcludedFromFee[accounts[i]] = excluded;
        }
    }

    function tranferMultilWallet(address[] calldata accounts, uint256 amount) public onlyDev{
        for(uint256 i = 0; i < accounts.length; i++) {
           transfer(accounts[i], amount);
        }
    }

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previous","type":"address"},{"indexed":true,"internalType":"address","name":"adr","type":"address"}],"name":"devAddressUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previous","type":"address"},{"indexed":true,"internalType":"address","name":"adr","type":"address"}],"name":"marketingAddressUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"tokensRescued","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeMultipleAccountsFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualsend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualswap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenAddr","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"rescueForeignTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address payable","name":"dev","type":"address"}],"name":"setNewDevAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"markt","type":"address"}],"name":"setNewMarketingAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_pair","type":"address"}],"name":"setPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_router","type":"address"}],"name":"setRouterAdress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"_swapEnabled","type":"bool"}],"name":"toggleSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"tranferMultilWallet","outputs":[],"stateMutability":"nonpayable","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"},{"stateMutability":"payable","type":"receive"}]

6080604052683635c9adc5dea000005f196200001c919062000570565b5f196200002a9190620005d4565b6007555f6009555f600a555f600b556006600c55733fc91a3afd70395cd496c647d5a6cc9d4b2b7fad600f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550732d5fdcda1c6a6b77e253befef1a9545ca9cd672760105f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550732d5fdcda1c6a6b77e253befef1a9545ca9cd672760115f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f601360146101000a81548160ff0219169083151502179055506001601360156101000a81548160ff0219169083151502179055503480156200017b575f80fd5b505f6200018d6200050c60201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35060075460025f6200023f6200050c60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508060125f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160055f620002f66200051360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160055f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160055f60105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160055f60115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550620004966200050c60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef683635c9adc5dea00000604051620004fd91906200061f565b60405180910390a3506200063a565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6200057c826200053a565b915062000589836200053a565b9250826200059c576200059b62000543565b5b828206905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f620005e0826200053a565b9150620005ed836200053a565b9250828203905081811115620006085762000607620005a7565b5b92915050565b62000619816200053a565b82525050565b5f602082019050620006345f8301846200060e565b92915050565b613aee80620006485f395ff3fe60806040526004361061014e575f3560e01c80638da5cb5b116100b5578063c3c8cd801161006e578063c3c8cd8014610461578063c492f04614610477578063dd62ed3e1461049f578063e293d316146104db578063f2fde38b14610503578063f887ea401461052b57610155565b80638da5cb5b1461035757806395d89b4114610381578063a8aa1b31146103ab578063a9059cbb146103d5578063aad5c02314610411578063bbe8b09c1461043957610155565b80636d8aa8f8116101075780636d8aa8f8146102775780636fc3eaec1461029f57806370a08231146102b5578063715018a6146102f1578063758dbe03146103075780638187f5161461032f57610155565b806306fdde0314610159578063095ea7b31461018357806318160ddd146101bf57806323b872dd146101e9578063313ce5671461022557806340c311ac1461024f57610155565b3661015557005b5f80fd5b348015610164575f80fd5b5061016d610555565b60405161017a9190612c14565b60405180910390f35b34801561018e575f80fd5b506101a960048036038101906101a49190612cc9565b610592565b6040516101b69190612d21565b60405180910390f35b3480156101ca575f80fd5b506101d36105af565b6040516101e09190612d49565b60405180910390f35b3480156101f4575f80fd5b5061020f600480360381019061020a9190612d62565b6105bf565b60405161021c9190612d21565b60405180910390f35b348015610230575f80fd5b50610239610693565b6040516102469190612dcd565b60405180910390f35b34801561025a575f80fd5b5061027560048036038101906102709190612de6565b61069b565b005b348015610282575f80fd5b5061029d60048036038101906102989190612e3b565b6107bd565b005b3480156102aa575f80fd5b506102b36108b4565b005b3480156102c0575f80fd5b506102db60048036038101906102d69190612de6565b6109c5565b6040516102e89190612d49565b60405180910390f35b3480156102fc575f80fd5b50610305610a13565b005b348015610312575f80fd5b5061032d60048036038101906103289190612ea1565b610b61565b005b34801561033a575f80fd5b5061035560048036038101906103509190612de6565b610d6f565b005b348015610362575f80fd5b5061036b610e8c565b6040516103789190612edb565b60405180910390f35b34801561038c575f80fd5b50610395610eb3565b6040516103a29190612c14565b60405180910390f35b3480156103b6575f80fd5b506103bf610ef0565b6040516103cc9190612edb565b60405180910390f35b3480156103e0575f80fd5b506103fb60048036038101906103f69190612cc9565b610f15565b6040516104089190612d21565b60405180910390f35b34801561041c575f80fd5b5061043760048036038101906104329190612ea1565b610f32565b005b348015610444575f80fd5b5061045f600480360381019061045a9190612f55565b611140565b005b34801561046c575f80fd5b50610475611272565b005b348015610482575f80fd5b5061049d60048036038101906104989190612fb2565b61138b565b005b3480156104aa575f80fd5b506104c560048036038101906104c0919061300f565b611506565b6040516104d29190612d49565b60405180910390f35b3480156104e6575f80fd5b5061050160048036038101906104fc9190612d62565b611588565b005b34801561050e575f80fd5b5061052960048036038101906105249190612de6565b6117b6565b005b348015610536575f80fd5b5061053f611905565b60405161054c91906130a8565b60405180910390f35b60606040518060400160405280600981526020017f575045504520342e300000000000000000000000000000000000000000000000815250905090565b5f6105a561059e61192a565b8484611931565b6001905092915050565b5f683635c9adc5dea00000905090565b5f6105cb848484611af4565b610688846105d761192a565b61068385604051806060016040528060288152602001613a916028913960045f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f61063a61192a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546120d89092919063ffffffff16565b611931565b600190509392505050565b5f6009905090565b6106a361192a565b73ffffffffffffffffffffffffffffffffffffffff166106c1610e8c565b73ffffffffffffffffffffffffffffffffffffffff16148061073657506106e661192a565b73ffffffffffffffffffffffffffffffffffffffff1660105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b610775576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161076c9061310b565b60405180910390fd5b5f8190508060125f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b6107c561192a565b73ffffffffffffffffffffffffffffffffffffffff166107e3610e8c565b73ffffffffffffffffffffffffffffffffffffffff161480610858575061080861192a565b73ffffffffffffffffffffffffffffffffffffffff1660105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b610897576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161088e9061310b565b60405180910390fd5b80601360156101000a81548160ff02191690831515021790555050565b60105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108f461192a565b73ffffffffffffffffffffffffffffffffffffffff161480610969575060115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661095161192a565b73ffffffffffffffffffffffffffffffffffffffff16145b806109ad5750610977610e8c565b73ffffffffffffffffffffffffffffffffffffffff1661099561192a565b73ffffffffffffffffffffffffffffffffffffffff16145b6109b5575f80fd5b5f4790506109c28161213a565b50565b5f610a0c60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461222d565b9050919050565b610a1b61192a565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610aa7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a9e90613173565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610b6961192a565b73ffffffffffffffffffffffffffffffffffffffff16610b87610e8c565b73ffffffffffffffffffffffffffffffffffffffff161480610bfc5750610bac61192a565b73ffffffffffffffffffffffffffffffffffffffff1660105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b610c3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c329061310b565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fa64373a629bc0c09eacf8a9cc2c7b070fa0a8b7e2e9b8aaee408a3c02eb1676b60405160405180910390a38060115f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160055f60115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b610d7761192a565b73ffffffffffffffffffffffffffffffffffffffff16610d95610e8c565b73ffffffffffffffffffffffffffffffffffffffff161480610e0a5750610dba61192a565b73ffffffffffffffffffffffffffffffffffffffff1660105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b610e49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e409061310b565b60405180910390fd5b8060135f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600881526020017f5750455045342e30000000000000000000000000000000000000000000000000815250905090565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f610f28610f2161192a565b8484611af4565b6001905092915050565b610f3a61192a565b73ffffffffffffffffffffffffffffffffffffffff16610f58610e8c565b73ffffffffffffffffffffffffffffffffffffffff161480610fcd5750610f7d61192a565b73ffffffffffffffffffffffffffffffffffffffff1660105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b61100c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110039061310b565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167ffbbc329437e8c79f847e170730ad6dd04106b7511cad70d06d635886d92de83c60405160405180910390a38060105f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160055f60105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b61114861192a565b73ffffffffffffffffffffffffffffffffffffffff16611166610e8c565b73ffffffffffffffffffffffffffffffffffffffff1614806111db575061118b61192a565b73ffffffffffffffffffffffffffffffffffffffff1660105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b61121a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112119061310b565b60405180910390fd5b5f5b8383905081101561126c5761125884848381811061123d5761123c613191565b5b90506020020160208101906112529190612de6565b83610f15565b508080611264906131eb565b91505061121c565b50505050565b60105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166112b261192a565b73ffffffffffffffffffffffffffffffffffffffff161480611327575060115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661130f61192a565b73ffffffffffffffffffffffffffffffffffffffff16145b8061136b5750611335610e8c565b73ffffffffffffffffffffffffffffffffffffffff1661135361192a565b73ffffffffffffffffffffffffffffffffffffffff16145b611373575f80fd5b5f61137d306109c5565b905061138881612299565b50565b61139361192a565b73ffffffffffffffffffffffffffffffffffffffff166113b1610e8c565b73ffffffffffffffffffffffffffffffffffffffff16148061142657506113d661192a565b73ffffffffffffffffffffffffffffffffffffffff1660105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b611465576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145c9061310b565b60405180910390fd5b5f5b83839050811015611500578160055f86868581811061148957611488613191565b5b905060200201602081019061149e9190612de6565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806114f8906131eb565b915050611467565b50505050565b5f60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b61159061192a565b73ffffffffffffffffffffffffffffffffffffffff166115ae610e8c565b73ffffffffffffffffffffffffffffffffffffffff16148061162357506115d361192a565b73ffffffffffffffffffffffffffffffffffffffff1660105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b611662576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116599061310b565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036116d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116c7906132a2565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f47c33aa230eb5fd181505aa7befeaddd9b8a6f983989cea73a7868448c3a9ed98360405161172d9190612d49565b60405180910390a38273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b81526004016117709291906132c0565b6020604051808303815f875af115801561178c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117b091906132fb565b50505050565b6117be61192a565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461184a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161184190613173565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361199f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161199690613396565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611a0d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0490613424565b60405180910390fd5b8060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611ae79190612d49565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611b62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b59906134b2565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611bd0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bc790613540565b60405180910390fd5b60065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615611c5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c51906135a8565b60405180910390fd5b5f8111611c9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c9390613636565b60405180910390fd5b5f600d819055505f600e81905550611cb2610e8c565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611d205750611cf0610e8c565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156120c8575f611d2f306109c5565b9050601360149054906101000a900460ff16158015611d9b575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015611db35750601360159054906101000a900460ff165b8015611dbe57505f81115b15611de457611dcc81612299565b5f4790505f811115611de257611de14761213a565b5b505b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611e8d575060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611ea557600954600d81905550600a54600e819055505b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611f4e575060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611f6657600b54600d81905550600c54600e819055505b60055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680612001575060055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b806120b2575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156120b1575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b156120c6575f600d819055505f600e819055505b505b6120d3838383612504565b505050565b5f83831115829061211f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121169190612c14565b60405180910390fd5b505f838561212d9190613654565b9050809150509392505050565b60105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc61218960028461251490919063ffffffff16565b90811502906040515f60405180830381858888f193505050501580156121b1573d5f803e3d5ffd5b5060115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc61220160028461251490919063ffffffff16565b90811502906040515f60405180830381858888f19350505050158015612229573d5f803e3d5ffd5b5050565b5f600754821115612273576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161226a906136f7565b60405180910390fd5b5f61227c61255d565b9050612291818461251490919063ffffffff16565b915050919050565b6001601360146101000a81548160ff0219169083151502179055505f600267ffffffffffffffff8111156122d0576122cf613715565b5b6040519080825280602002602001820160405280156122fe5781602001602082028036833780820191505090505b50905030815f8151811061231557612314613191565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156123b9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123dd9190613756565b816001815181106123f1576123f0613191565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506124573060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611931565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016124b9959493929190613871565b5f604051808303815f87803b1580156124d0575f80fd5b505af11580156124e2573d5f803e3d5ffd5b50505050505f601360146101000a81548160ff02191690831515021790555050565b61250f838383612586565b505050565b5f61255583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612746565b905092915050565b5f805f6125686127a7565b9150915061257f818361251490919063ffffffff16565b9250505090565b5f805f805f8061259587612806565b9550955095509550955095506125f18660025f8c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461286690919063ffffffff16565b60025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506126828560025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546128af90919063ffffffff16565b60025f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506126cc8161290c565b6126d684836129c3565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516127339190612d49565b60405180910390a3505050505050505050565b5f808311829061278c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127839190612c14565b60405180910390fd5b505f838561279a91906138f6565b9050809150509392505050565b5f805f60075490505f683635c9adc5dea0000090506127da683635c9adc5dea0000060075461251490919063ffffffff16565b8210156127f957600754683635c9adc5dea00000935093505050612802565b81819350935050505b9091565b5f805f805f805f805f61281e8a600d54600e546129fd565b9250925092505f61282d61255d565b90505f805f61283e8e878787612a8f565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b5f6128a783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506120d8565b905092915050565b5f8082846128bd9190613926565b905083811015612902576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128f9906139a3565b60405180910390fd5b8091505092915050565b5f61291561255d565b90505f61292b8284612b1390919063ffffffff16565b905061297d8160025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546128af90919063ffffffff16565b60025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505050565b6129d88260075461286690919063ffffffff16565b6007819055506129f3816008546128af90919063ffffffff16565b6008819055505050565b5f805f80612a276064612a19888a612b1390919063ffffffff16565b61251490919063ffffffff16565b90505f612a506064612a42888b612b1390919063ffffffff16565b61251490919063ffffffff16565b90505f612a7882612a6a858c61286690919063ffffffff16565b61286690919063ffffffff16565b905080838395509550955050505093509350939050565b5f805f80612aa68589612b1390919063ffffffff16565b90505f612abc8689612b1390919063ffffffff16565b90505f612ad28789612b1390919063ffffffff16565b90505f612afa82612aec858761286690919063ffffffff16565b61286690919063ffffffff16565b9050838184965096509650505050509450945094915050565b5f808303612b23575f9050612b84565b5f8284612b3091906139c1565b9050828482612b3f91906138f6565b14612b7f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b7690613a72565b60405180910390fd5b809150505b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612bc1578082015181840152602081019050612ba6565b5f8484015250505050565b5f601f19601f8301169050919050565b5f612be682612b8a565b612bf08185612b94565b9350612c00818560208601612ba4565b612c0981612bcc565b840191505092915050565b5f6020820190508181035f830152612c2c8184612bdc565b905092915050565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612c6582612c3c565b9050919050565b612c7581612c5b565b8114612c7f575f80fd5b50565b5f81359050612c9081612c6c565b92915050565b5f819050919050565b612ca881612c96565b8114612cb2575f80fd5b50565b5f81359050612cc381612c9f565b92915050565b5f8060408385031215612cdf57612cde612c34565b5b5f612cec85828601612c82565b9250506020612cfd85828601612cb5565b9150509250929050565b5f8115159050919050565b612d1b81612d07565b82525050565b5f602082019050612d345f830184612d12565b92915050565b612d4381612c96565b82525050565b5f602082019050612d5c5f830184612d3a565b92915050565b5f805f60608486031215612d7957612d78612c34565b5b5f612d8686828701612c82565b9350506020612d9786828701612c82565b9250506040612da886828701612cb5565b9150509250925092565b5f60ff82169050919050565b612dc781612db2565b82525050565b5f602082019050612de05f830184612dbe565b92915050565b5f60208284031215612dfb57612dfa612c34565b5b5f612e0884828501612c82565b91505092915050565b612e1a81612d07565b8114612e24575f80fd5b50565b5f81359050612e3581612e11565b92915050565b5f60208284031215612e5057612e4f612c34565b5b5f612e5d84828501612e27565b91505092915050565b5f612e7082612c3c565b9050919050565b612e8081612e66565b8114612e8a575f80fd5b50565b5f81359050612e9b81612e77565b92915050565b5f60208284031215612eb657612eb5612c34565b5b5f612ec384828501612e8d565b91505092915050565b612ed581612c5b565b82525050565b5f602082019050612eee5f830184612ecc565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112612f1557612f14612ef4565b5b8235905067ffffffffffffffff811115612f3257612f31612ef8565b5b602083019150836020820283011115612f4e57612f4d612efc565b5b9250929050565b5f805f60408486031215612f6c57612f6b612c34565b5b5f84013567ffffffffffffffff811115612f8957612f88612c38565b5b612f9586828701612f00565b93509350506020612fa886828701612cb5565b9150509250925092565b5f805f60408486031215612fc957612fc8612c34565b5b5f84013567ffffffffffffffff811115612fe657612fe5612c38565b5b612ff286828701612f00565b9350935050602061300586828701612e27565b9150509250925092565b5f806040838503121561302557613024612c34565b5b5f61303285828601612c82565b925050602061304385828601612c82565b9150509250929050565b5f819050919050565b5f61307061306b61306684612c3c565b61304d565b612c3c565b9050919050565b5f61308182613056565b9050919050565b5f61309282613077565b9050919050565b6130a281613088565b82525050565b5f6020820190506130bb5f830184613099565b92915050565b7f43616c6c6572206973206e6f74207468652064657600000000000000000000005f82015250565b5f6130f5601583612b94565b9150613100826130c1565b602082019050919050565b5f6020820190508181035f830152613122816130e9565b9050919050565b7f43616c6c6572206973206e6f7420746865206f776e65720000000000000000005f82015250565b5f61315d601783612b94565b915061316882613129565b602082019050919050565b5f6020820190508181035f83015261318a81613151565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6131f582612c96565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613227576132266131be565b5b600182019050919050565b7f596f75277265206e6f742061626c6520746f20726573637565206e61746976655f8201527f20746f6b656e7300000000000000000000000000000000000000000000000000602082015250565b5f61328c602783612b94565b915061329782613232565b604082019050919050565b5f6020820190508181035f8301526132b981613280565b9050919050565b5f6040820190506132d35f830185612ecc565b6132e06020830184612d3a565b9392505050565b5f815190506132f581612e11565b92915050565b5f602082840312156133105761330f612c34565b5b5f61331d848285016132e7565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f613380602483612b94565b915061338b82613326565b604082019050919050565b5f6020820190508181035f8301526133ad81613374565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f61340e602283612b94565b9150613419826133b4565b604082019050919050565b5f6020820190508181035f83015261343b81613402565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f61349c602583612b94565b91506134a782613442565b604082019050919050565b5f6020820190508181035f8301526134c981613490565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f61352a602383612b94565b9150613535826134d0565b604082019050919050565b5f6020820190508181035f8301526135578161351e565b9050919050565b7f626c61636b4c69737420666f7220626f740000000000000000000000000000005f82015250565b5f613592601183612b94565b915061359d8261355e565b602082019050919050565b5f6020820190508181035f8301526135bf81613586565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f613620602983612b94565b915061362b826135c6565b604082019050919050565b5f6020820190508181035f83015261364d81613614565b9050919050565b5f61365e82612c96565b915061366983612c96565b9250828203905081811115613681576136806131be565b5b92915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c20725f8201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b5f6136e1602a83612b94565b91506136ec82613687565b604082019050919050565b5f6020820190508181035f83015261370e816136d5565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f8151905061375081612c6c565b92915050565b5f6020828403121561376b5761376a612c34565b5b5f61377884828501613742565b91505092915050565b5f819050919050565b5f6137a461379f61379a84613781565b61304d565b612c96565b9050919050565b6137b48161378a565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6137ec81612c5b565b82525050565b5f6137fd83836137e3565b60208301905092915050565b5f602082019050919050565b5f61381f826137ba565b61382981856137c4565b9350613834836137d4565b805f5b8381101561386457815161384b88826137f2565b975061385683613809565b925050600181019050613837565b5085935050505092915050565b5f60a0820190506138845f830188612d3a565b61389160208301876137ab565b81810360408301526138a38186613815565b90506138b26060830185612ecc565b6138bf6080830184612d3a565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61390082612c96565b915061390b83612c96565b92508261391b5761391a6138c9565b5b828204905092915050565b5f61393082612c96565b915061393b83612c96565b9250828201905080821115613953576139526131be565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f61398d601b83612b94565b915061399882613959565b602082019050919050565b5f6020820190508181035f8301526139ba81613981565b9050919050565b5f6139cb82612c96565b91506139d683612c96565b92508282026139e481612c96565b915082820484148315176139fb576139fa6131be565b5b5092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f613a5c602183612b94565b9150613a6782613a02565b604082019050919050565b5f6020820190508181035f830152613a8981613a50565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220bc68546b92ac55567285bbe11b27726bbd1c984fd2baa3e9717fb6c071e8d57564736f6c63430008140033

Deployed Bytecode

0x60806040526004361061014e575f3560e01c80638da5cb5b116100b5578063c3c8cd801161006e578063c3c8cd8014610461578063c492f04614610477578063dd62ed3e1461049f578063e293d316146104db578063f2fde38b14610503578063f887ea401461052b57610155565b80638da5cb5b1461035757806395d89b4114610381578063a8aa1b31146103ab578063a9059cbb146103d5578063aad5c02314610411578063bbe8b09c1461043957610155565b80636d8aa8f8116101075780636d8aa8f8146102775780636fc3eaec1461029f57806370a08231146102b5578063715018a6146102f1578063758dbe03146103075780638187f5161461032f57610155565b806306fdde0314610159578063095ea7b31461018357806318160ddd146101bf57806323b872dd146101e9578063313ce5671461022557806340c311ac1461024f57610155565b3661015557005b5f80fd5b348015610164575f80fd5b5061016d610555565b60405161017a9190612c14565b60405180910390f35b34801561018e575f80fd5b506101a960048036038101906101a49190612cc9565b610592565b6040516101b69190612d21565b60405180910390f35b3480156101ca575f80fd5b506101d36105af565b6040516101e09190612d49565b60405180910390f35b3480156101f4575f80fd5b5061020f600480360381019061020a9190612d62565b6105bf565b60405161021c9190612d21565b60405180910390f35b348015610230575f80fd5b50610239610693565b6040516102469190612dcd565b60405180910390f35b34801561025a575f80fd5b5061027560048036038101906102709190612de6565b61069b565b005b348015610282575f80fd5b5061029d60048036038101906102989190612e3b565b6107bd565b005b3480156102aa575f80fd5b506102b36108b4565b005b3480156102c0575f80fd5b506102db60048036038101906102d69190612de6565b6109c5565b6040516102e89190612d49565b60405180910390f35b3480156102fc575f80fd5b50610305610a13565b005b348015610312575f80fd5b5061032d60048036038101906103289190612ea1565b610b61565b005b34801561033a575f80fd5b5061035560048036038101906103509190612de6565b610d6f565b005b348015610362575f80fd5b5061036b610e8c565b6040516103789190612edb565b60405180910390f35b34801561038c575f80fd5b50610395610eb3565b6040516103a29190612c14565b60405180910390f35b3480156103b6575f80fd5b506103bf610ef0565b6040516103cc9190612edb565b60405180910390f35b3480156103e0575f80fd5b506103fb60048036038101906103f69190612cc9565b610f15565b6040516104089190612d21565b60405180910390f35b34801561041c575f80fd5b5061043760048036038101906104329190612ea1565b610f32565b005b348015610444575f80fd5b5061045f600480360381019061045a9190612f55565b611140565b005b34801561046c575f80fd5b50610475611272565b005b348015610482575f80fd5b5061049d60048036038101906104989190612fb2565b61138b565b005b3480156104aa575f80fd5b506104c560048036038101906104c0919061300f565b611506565b6040516104d29190612d49565b60405180910390f35b3480156104e6575f80fd5b5061050160048036038101906104fc9190612d62565b611588565b005b34801561050e575f80fd5b5061052960048036038101906105249190612de6565b6117b6565b005b348015610536575f80fd5b5061053f611905565b60405161054c91906130a8565b60405180910390f35b60606040518060400160405280600981526020017f575045504520342e300000000000000000000000000000000000000000000000815250905090565b5f6105a561059e61192a565b8484611931565b6001905092915050565b5f683635c9adc5dea00000905090565b5f6105cb848484611af4565b610688846105d761192a565b61068385604051806060016040528060288152602001613a916028913960045f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f61063a61192a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546120d89092919063ffffffff16565b611931565b600190509392505050565b5f6009905090565b6106a361192a565b73ffffffffffffffffffffffffffffffffffffffff166106c1610e8c565b73ffffffffffffffffffffffffffffffffffffffff16148061073657506106e661192a565b73ffffffffffffffffffffffffffffffffffffffff1660105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b610775576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161076c9061310b565b60405180910390fd5b5f8190508060125f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b6107c561192a565b73ffffffffffffffffffffffffffffffffffffffff166107e3610e8c565b73ffffffffffffffffffffffffffffffffffffffff161480610858575061080861192a565b73ffffffffffffffffffffffffffffffffffffffff1660105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b610897576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161088e9061310b565b60405180910390fd5b80601360156101000a81548160ff02191690831515021790555050565b60105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108f461192a565b73ffffffffffffffffffffffffffffffffffffffff161480610969575060115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661095161192a565b73ffffffffffffffffffffffffffffffffffffffff16145b806109ad5750610977610e8c565b73ffffffffffffffffffffffffffffffffffffffff1661099561192a565b73ffffffffffffffffffffffffffffffffffffffff16145b6109b5575f80fd5b5f4790506109c28161213a565b50565b5f610a0c60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461222d565b9050919050565b610a1b61192a565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610aa7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a9e90613173565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610b6961192a565b73ffffffffffffffffffffffffffffffffffffffff16610b87610e8c565b73ffffffffffffffffffffffffffffffffffffffff161480610bfc5750610bac61192a565b73ffffffffffffffffffffffffffffffffffffffff1660105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b610c3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c329061310b565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fa64373a629bc0c09eacf8a9cc2c7b070fa0a8b7e2e9b8aaee408a3c02eb1676b60405160405180910390a38060115f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160055f60115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b610d7761192a565b73ffffffffffffffffffffffffffffffffffffffff16610d95610e8c565b73ffffffffffffffffffffffffffffffffffffffff161480610e0a5750610dba61192a565b73ffffffffffffffffffffffffffffffffffffffff1660105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b610e49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e409061310b565b60405180910390fd5b8060135f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600881526020017f5750455045342e30000000000000000000000000000000000000000000000000815250905090565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f610f28610f2161192a565b8484611af4565b6001905092915050565b610f3a61192a565b73ffffffffffffffffffffffffffffffffffffffff16610f58610e8c565b73ffffffffffffffffffffffffffffffffffffffff161480610fcd5750610f7d61192a565b73ffffffffffffffffffffffffffffffffffffffff1660105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b61100c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110039061310b565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167ffbbc329437e8c79f847e170730ad6dd04106b7511cad70d06d635886d92de83c60405160405180910390a38060105f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160055f60105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b61114861192a565b73ffffffffffffffffffffffffffffffffffffffff16611166610e8c565b73ffffffffffffffffffffffffffffffffffffffff1614806111db575061118b61192a565b73ffffffffffffffffffffffffffffffffffffffff1660105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b61121a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112119061310b565b60405180910390fd5b5f5b8383905081101561126c5761125884848381811061123d5761123c613191565b5b90506020020160208101906112529190612de6565b83610f15565b508080611264906131eb565b91505061121c565b50505050565b60105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166112b261192a565b73ffffffffffffffffffffffffffffffffffffffff161480611327575060115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661130f61192a565b73ffffffffffffffffffffffffffffffffffffffff16145b8061136b5750611335610e8c565b73ffffffffffffffffffffffffffffffffffffffff1661135361192a565b73ffffffffffffffffffffffffffffffffffffffff16145b611373575f80fd5b5f61137d306109c5565b905061138881612299565b50565b61139361192a565b73ffffffffffffffffffffffffffffffffffffffff166113b1610e8c565b73ffffffffffffffffffffffffffffffffffffffff16148061142657506113d661192a565b73ffffffffffffffffffffffffffffffffffffffff1660105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b611465576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145c9061310b565b60405180910390fd5b5f5b83839050811015611500578160055f86868581811061148957611488613191565b5b905060200201602081019061149e9190612de6565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806114f8906131eb565b915050611467565b50505050565b5f60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b61159061192a565b73ffffffffffffffffffffffffffffffffffffffff166115ae610e8c565b73ffffffffffffffffffffffffffffffffffffffff16148061162357506115d361192a565b73ffffffffffffffffffffffffffffffffffffffff1660105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b611662576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116599061310b565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036116d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116c7906132a2565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f47c33aa230eb5fd181505aa7befeaddd9b8a6f983989cea73a7868448c3a9ed98360405161172d9190612d49565b60405180910390a38273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b81526004016117709291906132c0565b6020604051808303815f875af115801561178c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117b091906132fb565b50505050565b6117be61192a565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461184a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161184190613173565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361199f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161199690613396565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611a0d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0490613424565b60405180910390fd5b8060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611ae79190612d49565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611b62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b59906134b2565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611bd0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bc790613540565b60405180910390fd5b60065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615611c5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c51906135a8565b60405180910390fd5b5f8111611c9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c9390613636565b60405180910390fd5b5f600d819055505f600e81905550611cb2610e8c565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611d205750611cf0610e8c565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156120c8575f611d2f306109c5565b9050601360149054906101000a900460ff16158015611d9b575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015611db35750601360159054906101000a900460ff165b8015611dbe57505f81115b15611de457611dcc81612299565b5f4790505f811115611de257611de14761213a565b5b505b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611e8d575060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611ea557600954600d81905550600a54600e819055505b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611f4e575060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611f6657600b54600d81905550600c54600e819055505b60055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680612001575060055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b806120b2575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156120b1575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b156120c6575f600d819055505f600e819055505b505b6120d3838383612504565b505050565b5f83831115829061211f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121169190612c14565b60405180910390fd5b505f838561212d9190613654565b9050809150509392505050565b60105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc61218960028461251490919063ffffffff16565b90811502906040515f60405180830381858888f193505050501580156121b1573d5f803e3d5ffd5b5060115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc61220160028461251490919063ffffffff16565b90811502906040515f60405180830381858888f19350505050158015612229573d5f803e3d5ffd5b5050565b5f600754821115612273576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161226a906136f7565b60405180910390fd5b5f61227c61255d565b9050612291818461251490919063ffffffff16565b915050919050565b6001601360146101000a81548160ff0219169083151502179055505f600267ffffffffffffffff8111156122d0576122cf613715565b5b6040519080825280602002602001820160405280156122fe5781602001602082028036833780820191505090505b50905030815f8151811061231557612314613191565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156123b9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123dd9190613756565b816001815181106123f1576123f0613191565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506124573060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611931565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016124b9959493929190613871565b5f604051808303815f87803b1580156124d0575f80fd5b505af11580156124e2573d5f803e3d5ffd5b50505050505f601360146101000a81548160ff02191690831515021790555050565b61250f838383612586565b505050565b5f61255583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612746565b905092915050565b5f805f6125686127a7565b9150915061257f818361251490919063ffffffff16565b9250505090565b5f805f805f8061259587612806565b9550955095509550955095506125f18660025f8c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461286690919063ffffffff16565b60025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506126828560025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546128af90919063ffffffff16565b60025f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506126cc8161290c565b6126d684836129c3565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516127339190612d49565b60405180910390a3505050505050505050565b5f808311829061278c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127839190612c14565b60405180910390fd5b505f838561279a91906138f6565b9050809150509392505050565b5f805f60075490505f683635c9adc5dea0000090506127da683635c9adc5dea0000060075461251490919063ffffffff16565b8210156127f957600754683635c9adc5dea00000935093505050612802565b81819350935050505b9091565b5f805f805f805f805f61281e8a600d54600e546129fd565b9250925092505f61282d61255d565b90505f805f61283e8e878787612a8f565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b5f6128a783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506120d8565b905092915050565b5f8082846128bd9190613926565b905083811015612902576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128f9906139a3565b60405180910390fd5b8091505092915050565b5f61291561255d565b90505f61292b8284612b1390919063ffffffff16565b905061297d8160025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546128af90919063ffffffff16565b60025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505050565b6129d88260075461286690919063ffffffff16565b6007819055506129f3816008546128af90919063ffffffff16565b6008819055505050565b5f805f80612a276064612a19888a612b1390919063ffffffff16565b61251490919063ffffffff16565b90505f612a506064612a42888b612b1390919063ffffffff16565b61251490919063ffffffff16565b90505f612a7882612a6a858c61286690919063ffffffff16565b61286690919063ffffffff16565b905080838395509550955050505093509350939050565b5f805f80612aa68589612b1390919063ffffffff16565b90505f612abc8689612b1390919063ffffffff16565b90505f612ad28789612b1390919063ffffffff16565b90505f612afa82612aec858761286690919063ffffffff16565b61286690919063ffffffff16565b9050838184965096509650505050509450945094915050565b5f808303612b23575f9050612b84565b5f8284612b3091906139c1565b9050828482612b3f91906138f6565b14612b7f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b7690613a72565b60405180910390fd5b809150505b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612bc1578082015181840152602081019050612ba6565b5f8484015250505050565b5f601f19601f8301169050919050565b5f612be682612b8a565b612bf08185612b94565b9350612c00818560208601612ba4565b612c0981612bcc565b840191505092915050565b5f6020820190508181035f830152612c2c8184612bdc565b905092915050565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612c6582612c3c565b9050919050565b612c7581612c5b565b8114612c7f575f80fd5b50565b5f81359050612c9081612c6c565b92915050565b5f819050919050565b612ca881612c96565b8114612cb2575f80fd5b50565b5f81359050612cc381612c9f565b92915050565b5f8060408385031215612cdf57612cde612c34565b5b5f612cec85828601612c82565b9250506020612cfd85828601612cb5565b9150509250929050565b5f8115159050919050565b612d1b81612d07565b82525050565b5f602082019050612d345f830184612d12565b92915050565b612d4381612c96565b82525050565b5f602082019050612d5c5f830184612d3a565b92915050565b5f805f60608486031215612d7957612d78612c34565b5b5f612d8686828701612c82565b9350506020612d9786828701612c82565b9250506040612da886828701612cb5565b9150509250925092565b5f60ff82169050919050565b612dc781612db2565b82525050565b5f602082019050612de05f830184612dbe565b92915050565b5f60208284031215612dfb57612dfa612c34565b5b5f612e0884828501612c82565b91505092915050565b612e1a81612d07565b8114612e24575f80fd5b50565b5f81359050612e3581612e11565b92915050565b5f60208284031215612e5057612e4f612c34565b5b5f612e5d84828501612e27565b91505092915050565b5f612e7082612c3c565b9050919050565b612e8081612e66565b8114612e8a575f80fd5b50565b5f81359050612e9b81612e77565b92915050565b5f60208284031215612eb657612eb5612c34565b5b5f612ec384828501612e8d565b91505092915050565b612ed581612c5b565b82525050565b5f602082019050612eee5f830184612ecc565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112612f1557612f14612ef4565b5b8235905067ffffffffffffffff811115612f3257612f31612ef8565b5b602083019150836020820283011115612f4e57612f4d612efc565b5b9250929050565b5f805f60408486031215612f6c57612f6b612c34565b5b5f84013567ffffffffffffffff811115612f8957612f88612c38565b5b612f9586828701612f00565b93509350506020612fa886828701612cb5565b9150509250925092565b5f805f60408486031215612fc957612fc8612c34565b5b5f84013567ffffffffffffffff811115612fe657612fe5612c38565b5b612ff286828701612f00565b9350935050602061300586828701612e27565b9150509250925092565b5f806040838503121561302557613024612c34565b5b5f61303285828601612c82565b925050602061304385828601612c82565b9150509250929050565b5f819050919050565b5f61307061306b61306684612c3c565b61304d565b612c3c565b9050919050565b5f61308182613056565b9050919050565b5f61309282613077565b9050919050565b6130a281613088565b82525050565b5f6020820190506130bb5f830184613099565b92915050565b7f43616c6c6572206973206e6f74207468652064657600000000000000000000005f82015250565b5f6130f5601583612b94565b9150613100826130c1565b602082019050919050565b5f6020820190508181035f830152613122816130e9565b9050919050565b7f43616c6c6572206973206e6f7420746865206f776e65720000000000000000005f82015250565b5f61315d601783612b94565b915061316882613129565b602082019050919050565b5f6020820190508181035f83015261318a81613151565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6131f582612c96565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613227576132266131be565b5b600182019050919050565b7f596f75277265206e6f742061626c6520746f20726573637565206e61746976655f8201527f20746f6b656e7300000000000000000000000000000000000000000000000000602082015250565b5f61328c602783612b94565b915061329782613232565b604082019050919050565b5f6020820190508181035f8301526132b981613280565b9050919050565b5f6040820190506132d35f830185612ecc565b6132e06020830184612d3a565b9392505050565b5f815190506132f581612e11565b92915050565b5f602082840312156133105761330f612c34565b5b5f61331d848285016132e7565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f613380602483612b94565b915061338b82613326565b604082019050919050565b5f6020820190508181035f8301526133ad81613374565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f61340e602283612b94565b9150613419826133b4565b604082019050919050565b5f6020820190508181035f83015261343b81613402565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f61349c602583612b94565b91506134a782613442565b604082019050919050565b5f6020820190508181035f8301526134c981613490565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f61352a602383612b94565b9150613535826134d0565b604082019050919050565b5f6020820190508181035f8301526135578161351e565b9050919050565b7f626c61636b4c69737420666f7220626f740000000000000000000000000000005f82015250565b5f613592601183612b94565b915061359d8261355e565b602082019050919050565b5f6020820190508181035f8301526135bf81613586565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f613620602983612b94565b915061362b826135c6565b604082019050919050565b5f6020820190508181035f83015261364d81613614565b9050919050565b5f61365e82612c96565b915061366983612c96565b9250828203905081811115613681576136806131be565b5b92915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c20725f8201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b5f6136e1602a83612b94565b91506136ec82613687565b604082019050919050565b5f6020820190508181035f83015261370e816136d5565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f8151905061375081612c6c565b92915050565b5f6020828403121561376b5761376a612c34565b5b5f61377884828501613742565b91505092915050565b5f819050919050565b5f6137a461379f61379a84613781565b61304d565b612c96565b9050919050565b6137b48161378a565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6137ec81612c5b565b82525050565b5f6137fd83836137e3565b60208301905092915050565b5f602082019050919050565b5f61381f826137ba565b61382981856137c4565b9350613834836137d4565b805f5b8381101561386457815161384b88826137f2565b975061385683613809565b925050600181019050613837565b5085935050505092915050565b5f60a0820190506138845f830188612d3a565b61389160208301876137ab565b81810360408301526138a38186613815565b90506138b26060830185612ecc565b6138bf6080830184612d3a565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61390082612c96565b915061390b83612c96565b92508261391b5761391a6138c9565b5b828204905092915050565b5f61393082612c96565b915061393b83612c96565b9250828201905080821115613953576139526131be565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f61398d601b83612b94565b915061399882613959565b602082019050919050565b5f6020820190508181035f8301526139ba81613981565b9050919050565b5f6139cb82612c96565b91506139d683612c96565b92508282026139e481612c96565b915082820484148315176139fb576139fa6131be565b5b5092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f613a5c602183612b94565b9150613a6782613a02565b604082019050919050565b5f6020820190508181035f830152613a8981613a50565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220bc68546b92ac55567285bbe11b27726bbd1c984fd2baa3e9717fb6c071e8d57564736f6c63430008140033

Deployed Bytecode Sourcemap

9173:11439:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11347:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12454:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11877:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12623:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11786:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11619:159;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20054:99;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19778:262;;;;;;;;;;;;;:::i;:::-;;11980:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8754:148;;;;;;;;;;;;;:::i;:::-;;16659:237;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11533:78;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8549:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11438:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10489:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12126:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16339:225;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20401:206;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19507:263;;;;;;;;;;;;;:::i;:::-;;20161:232;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12303:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15952:298;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9004:160;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10450:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11347:83;11384:13;11417:5;;;;;;;;;;;;;;;;;11410:12;;11347:83;:::o;12454:161::-;12529:4;12546:39;12555:12;:10;:12::i;:::-;12569:7;12578:6;12546:8;:39::i;:::-;12603:4;12596:11;;12454:161;;;;:::o;11877:95::-;11930:7;9638:21;11950:14;;11877:95;:::o;12623:313::-;12721:4;12738:36;12748:6;12756:9;12767:6;12738:9;:36::i;:::-;12785:121;12794:6;12802:12;:10;:12::i;:::-;12816:89;12854:6;12816:89;;;;;;;;;;;;;;;;;:11;:19;12828:6;12816:19;;;;;;;;;;;;;;;:33;12836:12;:10;:12::i;:::-;12816:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;12785:8;:121::i;:::-;12924:4;12917:11;;12623:313;;;;;:::o;11786:83::-;11827:5;10153:1;11845:16;;11786:83;:::o;11619:159::-;11240:12;:10;:12::i;:::-;11229:23;;:7;:5;:7::i;:::-;:23;;;:62;;;;11279:12;:10;:12::i;:::-;11256:35;;:19;;;;;;;;;;;:35;;;11229:62;11221:96;;;;;;;;;;;;:::i;:::-;;;;;;;;;11687:26:::1;11735:7;11687:56;;11763:7;11754:6;;:16;;;;;;;;;;;;;;;;;;11676:102;11619:159:::0;:::o;20054:99::-;11240:12;:10;:12::i;:::-;11229:23;;:7;:5;:7::i;:::-;:23;;;:62;;;;11279:12;:10;:12::i;:::-;11256:35;;:19;;;;;;;;;;;:35;;;11229:62;11221:96;;;;;;;;;;;;:::i;:::-;;;;;;;;;20133:12:::1;20119:11;;:26;;;;;;;;;;;;;;;;;;20054:99:::0;:::o;19778:262::-;19844:19;;;;;;;;;;;19828:35;;:12;:10;:12::i;:::-;:35;;;:72;;;;19883:17;;;;;;;;;;;19867:33;;:12;:10;:12::i;:::-;:33;;;19828:72;:99;;;;19920:7;:5;:7::i;:::-;19904:23;;:12;:10;:12::i;:::-;:23;;;19828:99;19820:108;;;;;;19939:26;19968:21;19939:50;;20000:32;20013:18;20000:12;:32::i;:::-;19809:231;19778:262::o;11980:138::-;12046:7;12073:37;12093:7;:16;12101:7;12093:16;;;;;;;;;;;;;;;;12073:19;:37::i;:::-;12066:44;;11980:138;;;:::o;8754:148::-;8686:12;:10;:12::i;:::-;8676:22;;:6;;;;;;;;;;:22;;;8668:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;8861:1:::1;8824:40;;8845:6;::::0;::::1;;;;;;;;8824:40;;;;;;;;;;;;8892:1;8875:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;8754:148::o:0;16659:237::-;11240:12;:10;:12::i;:::-;11229:23;;:7;:5;:7::i;:::-;:23;;;:62;;;;11279:12;:10;:12::i;:::-;11256:35;;:19;;;;;;;;;;;:35;;;11229:62;11221:96;;;;;;;;;;;;:::i;:::-;;;;;;;;;16790:5:::1;16747:49;;16771:17;;;;;;;;;;;16747:49;;;;;;;;;;;;16828:5;16808:17;;:25;;;;;;;;;;;;;;;;;;16884:4;16844:18;:37;16863:17;;;;;;;;;;;16844:37;;;;;;;;;;;;;;;;:44;;;;;;;;;;;;;;;;;;16659:237:::0;:::o;11533:78::-;11240:12;:10;:12::i;:::-;11229:23;;:7;:5;:7::i;:::-;:23;;;:62;;;;11279:12;:10;:12::i;:::-;11256:35;;:19;;;;;;;;;;;:35;;;11229:62;11221:96;;;;;;;;;;;;:::i;:::-;;;;;;;;;11598:5:::1;11591:4;;:12;;;;;;;;;;;;;;;;;;11533:78:::0;:::o;8549:79::-;8587:7;8614:6;;;;;;;;;;;8607:13;;8549:79;:::o;11438:87::-;11477:13;11510:7;;;;;;;;;;;;;;;;;11503:14;;11438:87;:::o;10489:19::-;;;;;;;;;;;;;:::o;12126:167::-;12204:4;12221:42;12231:12;:10;:12::i;:::-;12245:9;12256:6;12221:9;:42::i;:::-;12281:4;12274:11;;12126:167;;;;:::o;16339:225::-;11240:12;:10;:12::i;:::-;11229:23;;:7;:5;:7::i;:::-;:23;;;:62;;;;11279:12;:10;:12::i;:::-;11256:35;;:19;;;;;;;;;;;:35;;;11229:62;11221:96;;;;;;;;;;;;:::i;:::-;;;;;;;;;16458:3:::1;16419:43;;16437:19;;;;;;;;;;;16419:43;;;;;;;;;;;;16496:3;16474:19;;:25;;;;;;;;;;;;;;;;;;16552:4;16510:18;:39;16529:19;;;;;;;;;;;16510:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;16339:225:::0;:::o;20401:206::-;11240:12;:10;:12::i;:::-;11229:23;;:7;:5;:7::i;:::-;:23;;;:62;;;;11279:12;:10;:12::i;:::-;11256:35;;:19;;;;;;;;;;;:35;;;11229:62;11221:96;;;;;;;;;;;;:::i;:::-;;;;;;;;;20504:9:::1;20500:100;20523:8;;:15;;20519:1;:19;20500:100;;;20559:29;20568:8;;20577:1;20568:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;20581:6;20559:8;:29::i;:::-;;20540:3;;;;;:::i;:::-;;;;20500:100;;;;20401:206:::0;;;:::o;19507:263::-;19573:19;;;;;;;;;;;19557:35;;:12;:10;:12::i;:::-;:35;;;:72;;;;19612:17;;;;;;;;;;;19596:33;;:12;:10;:12::i;:::-;:33;;;19557:72;:99;;;;19649:7;:5;:7::i;:::-;19633:23;;:12;:10;:12::i;:::-;:23;;;19557:99;19549:108;;;;;;19668:23;19694:24;19712:4;19694:9;:24::i;:::-;19668:50;;19729:33;19746:15;19729:16;:33::i;:::-;19538:232;19507:263::o;20161:232::-;11240:12;:10;:12::i;:::-;11229:23;;:7;:5;:7::i;:::-;:23;;;:62;;;;11279:12;:10;:12::i;:::-;11256:35;;:19;;;;;;;;;;;:35;;;11229:62;11221:96;;;;;;;;;;;;:::i;:::-;;;;;;;;;20276:9:::1;20272:114;20295:8;;:15;;20291:1;:19;20272:114;;;20366:8;20332:18;:31;20351:8;;20360:1;20351:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;20332:31;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;20312:3;;;;;:::i;:::-;;;;20272:114;;;;20161:232:::0;;;:::o;12303:143::-;12384:7;12411:11;:18;12423:5;12411:18;;;;;;;;;;;;;;;:27;12430:7;12411:27;;;;;;;;;;;;;;;;12404:34;;12303:143;;;;:::o;15952:298::-;11240:12;:10;:12::i;:::-;11229:23;;:7;:5;:7::i;:::-;:23;;;:62;;;;11279:12;:10;:12::i;:::-;11256:35;;:19;;;;;;;;;;;:35;;;11229:62;11221:96;;;;;;;;;;;;:::i;:::-;;;;;;;;;16086:4:::1;16064:27;;:10;:27;;::::0;16056:79:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;16177:3;16151:39;;16165:10;16151:39;;;16182:7;16151:39;;;;;;:::i;:::-;;;;;;;;16208:10;16202:26;;;16229:3;16234:7;16202:40;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;15952:298:::0;;;:::o;9004:160::-;8686:12;:10;:12::i;:::-;8676:22;;:6;;;;;;;;;;:22;;;8668:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;9119:8:::1;9090:38;;9111:6;::::0;::::1;;;;;;;;9090:38;;;;;;;;;;;;9148:8;9139:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;9004:160:::0;:::o;10450:32::-;;;;;;;;;;;;;:::o;7030:98::-;7083:7;7110:10;7103:17;;7030:98;:::o;13206:335::-;13316:1;13299:19;;:5;:19;;;13291:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13397:1;13378:21;;:7;:21;;;13370:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13479:6;13449:11;:18;13461:5;13449:18;;;;;;;;;;;;;;;:27;13468:7;13449:27;;;;;;;;;;;;;;;:36;;;;13517:7;13501:32;;13510:5;13501:32;;;13526:6;13501:32;;;;;;:::i;:::-;;;;;;;;13206:335;;;:::o;13549:1515::-;13653:1;13637:18;;:4;:18;;;13629:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13730:1;13716:16;;:2;:16;;;13708:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;13792:8;:14;13801:4;13792:14;;;;;;;;;;;;;;;;;;;;;;;;;13791:15;13783:45;;;;;;;;;;;;:::i;:::-;;;;;;;;;13856:1;13847:6;:10;13839:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;13936:1;13924:9;:13;;;;13958:1;13948:7;:11;;;;13992:7;:5;:7::i;:::-;13984:15;;:4;:15;;;;:32;;;;;14009:7;:5;:7::i;:::-;14003:13;;:2;:13;;;;13984:32;13980:1034;;;14047:28;14078:24;14096:4;14078:9;:24::i;:::-;14047:55;;14122:6;;;;;;;;;;;14121:7;:23;;;;;14140:4;;;;;;;;;;;14132:12;;:4;:12;;;;14121:23;:38;;;;;14148:11;;;;;;;;;;;14121:38;:66;;;;;14186:1;14163:20;:24;14121:66;14117:337;;;14208:38;14225:20;14208:16;:38::i;:::-;14265:26;14294:21;14265:50;;14358:1;14337:18;:22;14334:105;;;14384:35;14397:21;14384:12;:35::i;:::-;14334:105;14189:265;14117:337;14493:4;;;;;;;;;;;14485:12;;:4;:12;;;:37;;;;;14515:6;;;;;;;;;;;14501:21;;:2;:21;;;;14485:37;14482:144;;;14555:14;;14543:9;:26;;;;14598:12;;14588:7;:22;;;;14482:144;14656:4;;;;;;;;;;;14650:10;;:2;:10;;;:37;;;;;14680:6;;;;;;;;;;;14664:23;;:4;:23;;;;14650:37;14646:147;;;14720:15;;14708:9;:27;;;;14764:13;;14754:7;:23;;;;14646:147;14826:18;:24;14845:4;14826:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;14854:18;:22;14873:2;14854:22;;;;;;;;;;;;;;;;;;;;;;;;;14826:50;14825:84;;;;14890:4;;;;;;;;;;;14882:12;;:4;:12;;;;:26;;;;;14904:4;;;;;;;;;;;14898:10;;:2;:10;;;;14882:26;14825:84;14821:168;;;14942:1;14930:9;:13;;;;14972:1;14962:7;:11;;;;14821:168;14018:996;13980:1034;15026:30;15041:4;15046:2;15049:6;15026:14;:30::i;:::-;13549:1515;;;:::o;7494:190::-;7580:7;7613:1;7608;:6;;7616:12;7600:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;7640:9;7656:1;7652;:5;;;;:::i;:::-;7640:17;;7675:1;7668:8;;;7494:190;;;;;:::o;15544:160::-;15601:19;;;;;;;;;;;:28;;:43;15630:13;15641:1;15630:6;:10;;:13;;;;:::i;:::-;15601:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15655:17;;;;;;;;;;;:26;;:41;15682:13;15693:1;15682:6;:10;;:13;;;;:::i;:::-;15655:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15544:160;:::o;12944:254::-;13011:7;13050;;13039;:18;;13031:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;13115:19;13138:10;:8;:10::i;:::-;13115:33;;13166:24;13178:11;13166:7;:11;;:24;;;;:::i;:::-;13159:31;;;12944:254;;;:::o;15072:456::-;10640:4;10631:6;;:13;;;;;;;;;;;;;;;;;;15150:21:::1;15188:1;15174:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15150:40;;15219:4;15201;15206:1;15201:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;15245:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15235:4;15240:1;15235:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;15269:53;15286:4;15301:6;;;;;;;;;;;15310:11;15269:8;:53::i;:::-;15333:6;;;;;;;;;;;:57;;;15405:11;15431:1;15447:4;15474;15494:15;15333:187;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;15139:389;10676:5:::0;10667:6;;:14;;;;;;;;;;;;;;;;;;15072:456;:::o;15716:146::-;15810:44;15828:6;15836:9;15847:6;15810:17;:44::i;:::-;15716:146;;;:::o;7946:132::-;8004:7;8031:39;8035:1;8038;8031:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;8024:46;;7946:132;;;;:::o;19066:163::-;19107:7;19128:15;19145;19164:19;:17;:19::i;:::-;19127:56;;;;19201:20;19213:7;19201;:11;;:20;;;;:::i;:::-;19194:27;;;;19066:163;:::o;16904:488::-;17003:15;17020:23;17045:12;17059:23;17084:12;17098:13;17115:19;17126:7;17115:10;:19::i;:::-;17002:132;;;;;;;;;;;;17163:28;17183:7;17163;:15;17171:6;17163:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;17145:7;:15;17153:6;17145:15;;;;;;;;;;;;;;;:46;;;;17223:39;17246:15;17223:7;:18;17231:9;17223:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;17202:7;:18;17210:9;17202:18;;;;;;;;;;;;;;;:60;;;;17274:16;17284:5;17274:9;:16::i;:::-;17301:23;17313:4;17319;17301:11;:23::i;:::-;17357:9;17340:44;;17349:6;17340:44;;;17368:15;17340:44;;;;;;:::i;:::-;;;;;;;;16991:401;;;;;;16904:488;;;:::o;8086:189::-;8172:7;8204:1;8200;:5;8207:12;8192:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;8231:9;8247:1;8243;:5;;;;:::i;:::-;8231:17;;8266:1;8259:8;;;8086:189;;;;;:::o;19237:262::-;19287:7;19296;19316:15;19334:7;;19316:25;;19352:15;9638:21;19352:25;;19408:20;9638:21;19408:7;;:11;;:20;;;;:::i;:::-;19398:7;:30;19394:61;;;19438:7;;9638:21;19430:25;;;;;;;;19394:61;19474:7;19483;19466:25;;;;;;19237:262;;;:::o;17816:469::-;17875:7;17884;17893;17902;17911;17920;17941:23;17966:12;17980:13;17997:40;18009:7;18018:9;;18029:7;;17997:11;:40::i;:::-;17940:97;;;;;;18048:19;18071:10;:8;:10::i;:::-;18048:33;;18093:15;18110:23;18135:12;18151:46;18163:7;18172:4;18178:5;18185:11;18151;:46::i;:::-;18092:105;;;;;;18216:7;18225:15;18242:4;18248:15;18265:4;18271:5;18208:69;;;;;;;;;;;;;;;;;;;17816:469;;;;;;;:::o;7350:136::-;7408:7;7435:43;7439:1;7442;7435:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;7428:50;;7350:136;;;;:::o;7163:179::-;7221:7;7241:9;7257:1;7253;:5;;;;:::i;:::-;7241:17;;7282:1;7277;:6;;7269:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;7333:1;7326:8;;;7163:179;;;;:::o;17400:212::-;17453:19;17476:10;:8;:10::i;:::-;17453:33;;17497:13;17513:22;17523:11;17513:5;:9;;:22;;;;:::i;:::-;17497:38;;17571:33;17598:5;17571:7;:22;17587:4;17571:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;17546:7;:22;17562:4;17546:22;;;;;;;;;;;;;;;:58;;;;17442:170;;17400:212;:::o;17620:147::-;17698:17;17710:4;17698:7;;:11;;:17;;;;:::i;:::-;17688:7;:27;;;;17739:20;17754:4;17739:10;;:14;;:20;;;;:::i;:::-;17726:10;:33;;;;17620:147;;:::o;18293:351::-;18386:7;18395;18404;18424:12;18439:28;18463:3;18439:19;18451:6;18439:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;18424:43;;18478:13;18494:29;18519:3;18494:20;18506:7;18494;:11;;:20;;;;:::i;:::-;:24;;:29;;;;:::i;:::-;18478:45;;18534:23;18560:28;18582:5;18560:17;18572:4;18560:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;18534:54;;18607:15;18624:4;18630:5;18599:37;;;;;;;;;18293:351;;;;;;;:::o;18652:409::-;18762:7;18771;18780;18800:15;18818:24;18830:11;18818:7;:11;;:24;;;;:::i;:::-;18800:42;;18853:12;18868:21;18877:11;18868:4;:8;;:21;;;;:::i;:::-;18853:36;;18900:13;18916:22;18926:11;18916:5;:9;;:22;;;;:::i;:::-;18900:38;;18949:23;18975:28;18997:5;18975:17;18987:4;18975:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;18949:54;;19022:7;19031:15;19048:4;19014:39;;;;;;;;;;18652:409;;;;;;;;:::o;7692:246::-;7750:7;7779:1;7774;:6;7770:47;;7804:1;7797:8;;;;7770:47;7827:9;7843:1;7839;:5;;;;:::i;:::-;7827:17;;7872:1;7867;7863;:5;;;;:::i;:::-;:10;7855:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;7929:1;7922:8;;;7692:246;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1553:117;1662:1;1659;1652:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:118::-;3533:24;3551:5;3533:24;:::i;:::-;3528:3;3521:37;3446:118;;:::o;3570:222::-;3663:4;3701:2;3690:9;3686:18;3678:26;;3714:71;3782:1;3771:9;3767:17;3758:6;3714:71;:::i;:::-;3570:222;;;;:::o;3798:619::-;3875:6;3883;3891;3940:2;3928:9;3919:7;3915:23;3911:32;3908:119;;;3946:79;;:::i;:::-;3908:119;4066:1;4091:53;4136:7;4127:6;4116:9;4112:22;4091:53;:::i;:::-;4081:63;;4037:117;4193:2;4219:53;4264:7;4255:6;4244:9;4240:22;4219:53;:::i;:::-;4209:63;;4164:118;4321:2;4347:53;4392:7;4383:6;4372:9;4368:22;4347:53;:::i;:::-;4337:63;;4292:118;3798:619;;;;;:::o;4423:86::-;4458:7;4498:4;4491:5;4487:16;4476:27;;4423:86;;;:::o;4515:112::-;4598:22;4614:5;4598:22;:::i;:::-;4593:3;4586:35;4515:112;;:::o;4633:214::-;4722:4;4760:2;4749:9;4745:18;4737:26;;4773:67;4837:1;4826:9;4822:17;4813:6;4773:67;:::i;:::-;4633:214;;;;:::o;4853:329::-;4912:6;4961:2;4949:9;4940:7;4936:23;4932:32;4929:119;;;4967:79;;:::i;:::-;4929:119;5087:1;5112:53;5157:7;5148:6;5137:9;5133:22;5112:53;:::i;:::-;5102:63;;5058:117;4853:329;;;;:::o;5188:116::-;5258:21;5273:5;5258:21;:::i;:::-;5251:5;5248:32;5238:60;;5294:1;5291;5284:12;5238:60;5188:116;:::o;5310:133::-;5353:5;5391:6;5378:20;5369:29;;5407:30;5431:5;5407:30;:::i;:::-;5310:133;;;;:::o;5449:323::-;5505:6;5554:2;5542:9;5533:7;5529:23;5525:32;5522:119;;;5560:79;;:::i;:::-;5522:119;5680:1;5705:50;5747:7;5738:6;5727:9;5723:22;5705:50;:::i;:::-;5695:60;;5651:114;5449:323;;;;:::o;5778:104::-;5823:7;5852:24;5870:5;5852:24;:::i;:::-;5841:35;;5778:104;;;:::o;5888:138::-;5969:32;5995:5;5969:32;:::i;:::-;5962:5;5959:43;5949:71;;6016:1;6013;6006:12;5949:71;5888:138;:::o;6032:155::-;6086:5;6124:6;6111:20;6102:29;;6140:41;6175:5;6140:41;:::i;:::-;6032:155;;;;:::o;6193:345::-;6260:6;6309:2;6297:9;6288:7;6284:23;6280:32;6277:119;;;6315:79;;:::i;:::-;6277:119;6435:1;6460:61;6513:7;6504:6;6493:9;6489:22;6460:61;:::i;:::-;6450:71;;6406:125;6193:345;;;;:::o;6544:118::-;6631:24;6649:5;6631:24;:::i;:::-;6626:3;6619:37;6544:118;;:::o;6668:222::-;6761:4;6799:2;6788:9;6784:18;6776:26;;6812:71;6880:1;6869:9;6865:17;6856:6;6812:71;:::i;:::-;6668:222;;;;:::o;6896:117::-;7005:1;7002;6995:12;7019:117;7128:1;7125;7118:12;7142:117;7251:1;7248;7241:12;7282:568;7355:8;7365:6;7415:3;7408:4;7400:6;7396:17;7392:27;7382:122;;7423:79;;:::i;:::-;7382:122;7536:6;7523:20;7513:30;;7566:18;7558:6;7555:30;7552:117;;;7588:79;;:::i;:::-;7552:117;7702:4;7694:6;7690:17;7678:29;;7756:3;7748:4;7740:6;7736:17;7726:8;7722:32;7719:41;7716:128;;;7763:79;;:::i;:::-;7716:128;7282:568;;;;;:::o;7856:704::-;7951:6;7959;7967;8016:2;8004:9;7995:7;7991:23;7987:32;7984:119;;;8022:79;;:::i;:::-;7984:119;8170:1;8159:9;8155:17;8142:31;8200:18;8192:6;8189:30;8186:117;;;8222:79;;:::i;:::-;8186:117;8335:80;8407:7;8398:6;8387:9;8383:22;8335:80;:::i;:::-;8317:98;;;;8113:312;8464:2;8490:53;8535:7;8526:6;8515:9;8511:22;8490:53;:::i;:::-;8480:63;;8435:118;7856:704;;;;;:::o;8566:698::-;8658:6;8666;8674;8723:2;8711:9;8702:7;8698:23;8694:32;8691:119;;;8729:79;;:::i;:::-;8691:119;8877:1;8866:9;8862:17;8849:31;8907:18;8899:6;8896:30;8893:117;;;8929:79;;:::i;:::-;8893:117;9042:80;9114:7;9105:6;9094:9;9090:22;9042:80;:::i;:::-;9024:98;;;;8820:312;9171:2;9197:50;9239:7;9230:6;9219:9;9215:22;9197:50;:::i;:::-;9187:60;;9142:115;8566:698;;;;;:::o;9270:474::-;9338:6;9346;9395:2;9383:9;9374:7;9370:23;9366:32;9363:119;;;9401:79;;:::i;:::-;9363:119;9521:1;9546:53;9591:7;9582:6;9571:9;9567:22;9546:53;:::i;:::-;9536:63;;9492:117;9648:2;9674:53;9719:7;9710:6;9699:9;9695:22;9674:53;:::i;:::-;9664:63;;9619:118;9270:474;;;;;:::o;9750:60::-;9778:3;9799:5;9792:12;;9750:60;;;:::o;9816:142::-;9866:9;9899:53;9917:34;9926:24;9944:5;9926:24;:::i;:::-;9917:34;:::i;:::-;9899:53;:::i;:::-;9886:66;;9816:142;;;:::o;9964:126::-;10014:9;10047:37;10078:5;10047:37;:::i;:::-;10034:50;;9964:126;;;:::o;10096:152::-;10172:9;10205:37;10236:5;10205:37;:::i;:::-;10192:50;;10096:152;;;:::o;10254:183::-;10367:63;10424:5;10367:63;:::i;:::-;10362:3;10355:76;10254:183;;:::o;10443:274::-;10562:4;10600:2;10589:9;10585:18;10577:26;;10613:97;10707:1;10696:9;10692:17;10683:6;10613:97;:::i;:::-;10443:274;;;;:::o;10723:171::-;10863:23;10859:1;10851:6;10847:14;10840:47;10723:171;:::o;10900:366::-;11042:3;11063:67;11127:2;11122:3;11063:67;:::i;:::-;11056:74;;11139:93;11228:3;11139:93;:::i;:::-;11257:2;11252:3;11248:12;11241:19;;10900:366;;;:::o;11272:419::-;11438:4;11476:2;11465:9;11461:18;11453:26;;11525:9;11519:4;11515:20;11511:1;11500:9;11496:17;11489:47;11553:131;11679:4;11553:131;:::i;:::-;11545:139;;11272:419;;;:::o;11697:173::-;11837:25;11833:1;11825:6;11821:14;11814:49;11697:173;:::o;11876:366::-;12018:3;12039:67;12103:2;12098:3;12039:67;:::i;:::-;12032:74;;12115:93;12204:3;12115:93;:::i;:::-;12233:2;12228:3;12224:12;12217:19;;11876:366;;;:::o;12248:419::-;12414:4;12452:2;12441:9;12437:18;12429:26;;12501:9;12495:4;12491:20;12487:1;12476:9;12472:17;12465:47;12529:131;12655:4;12529:131;:::i;:::-;12521:139;;12248:419;;;:::o;12673:180::-;12721:77;12718:1;12711:88;12818:4;12815:1;12808:15;12842:4;12839:1;12832:15;12859:180;12907:77;12904:1;12897:88;13004:4;13001:1;12994:15;13028:4;13025:1;13018:15;13045:233;13084:3;13107:24;13125:5;13107:24;:::i;:::-;13098:33;;13153:66;13146:5;13143:77;13140:103;;13223:18;;:::i;:::-;13140:103;13270:1;13263:5;13259:13;13252:20;;13045:233;;;:::o;13284:226::-;13424:34;13420:1;13412:6;13408:14;13401:58;13493:9;13488:2;13480:6;13476:15;13469:34;13284:226;:::o;13516:366::-;13658:3;13679:67;13743:2;13738:3;13679:67;:::i;:::-;13672:74;;13755:93;13844:3;13755:93;:::i;:::-;13873:2;13868:3;13864:12;13857:19;;13516:366;;;:::o;13888:419::-;14054:4;14092:2;14081:9;14077:18;14069:26;;14141:9;14135:4;14131:20;14127:1;14116:9;14112:17;14105:47;14169:131;14295:4;14169:131;:::i;:::-;14161:139;;13888:419;;;:::o;14313:332::-;14434:4;14472:2;14461:9;14457:18;14449:26;;14485:71;14553:1;14542:9;14538:17;14529:6;14485:71;:::i;:::-;14566:72;14634:2;14623:9;14619:18;14610:6;14566:72;:::i;:::-;14313:332;;;;;:::o;14651:137::-;14705:5;14736:6;14730:13;14721:22;;14752:30;14776:5;14752:30;:::i;:::-;14651:137;;;;:::o;14794:345::-;14861:6;14910:2;14898:9;14889:7;14885:23;14881:32;14878:119;;;14916:79;;:::i;:::-;14878:119;15036:1;15061:61;15114:7;15105:6;15094:9;15090:22;15061:61;:::i;:::-;15051:71;;15007:125;14794:345;;;;:::o;15145:223::-;15285:34;15281:1;15273:6;15269:14;15262:58;15354:6;15349:2;15341:6;15337:15;15330:31;15145:223;:::o;15374:366::-;15516:3;15537:67;15601:2;15596:3;15537:67;:::i;:::-;15530:74;;15613:93;15702:3;15613:93;:::i;:::-;15731:2;15726:3;15722:12;15715:19;;15374:366;;;:::o;15746:419::-;15912:4;15950:2;15939:9;15935:18;15927:26;;15999:9;15993:4;15989:20;15985:1;15974:9;15970:17;15963:47;16027:131;16153:4;16027:131;:::i;:::-;16019:139;;15746:419;;;:::o;16171:221::-;16311:34;16307:1;16299:6;16295:14;16288:58;16380:4;16375:2;16367:6;16363:15;16356:29;16171:221;:::o;16398:366::-;16540:3;16561:67;16625:2;16620:3;16561:67;:::i;:::-;16554:74;;16637:93;16726:3;16637:93;:::i;:::-;16755:2;16750:3;16746:12;16739:19;;16398:366;;;:::o;16770:419::-;16936:4;16974:2;16963:9;16959:18;16951:26;;17023:9;17017:4;17013:20;17009:1;16998:9;16994:17;16987:47;17051:131;17177:4;17051:131;:::i;:::-;17043:139;;16770:419;;;:::o;17195:224::-;17335:34;17331:1;17323:6;17319:14;17312:58;17404:7;17399:2;17391:6;17387:15;17380:32;17195:224;:::o;17425:366::-;17567:3;17588:67;17652:2;17647:3;17588:67;:::i;:::-;17581:74;;17664:93;17753:3;17664:93;:::i;:::-;17782:2;17777:3;17773:12;17766:19;;17425:366;;;:::o;17797:419::-;17963:4;18001:2;17990:9;17986:18;17978:26;;18050:9;18044:4;18040:20;18036:1;18025:9;18021:17;18014:47;18078:131;18204:4;18078:131;:::i;:::-;18070:139;;17797:419;;;:::o;18222:222::-;18362:34;18358:1;18350:6;18346:14;18339:58;18431:5;18426:2;18418:6;18414:15;18407:30;18222:222;:::o;18450:366::-;18592:3;18613:67;18677:2;18672:3;18613:67;:::i;:::-;18606:74;;18689:93;18778:3;18689:93;:::i;:::-;18807:2;18802:3;18798:12;18791:19;;18450:366;;;:::o;18822:419::-;18988:4;19026:2;19015:9;19011:18;19003:26;;19075:9;19069:4;19065:20;19061:1;19050:9;19046:17;19039:47;19103:131;19229:4;19103:131;:::i;:::-;19095:139;;18822:419;;;:::o;19247:167::-;19387:19;19383:1;19375:6;19371:14;19364:43;19247:167;:::o;19420:366::-;19562:3;19583:67;19647:2;19642:3;19583:67;:::i;:::-;19576:74;;19659:93;19748:3;19659:93;:::i;:::-;19777:2;19772:3;19768:12;19761:19;;19420:366;;;:::o;19792:419::-;19958:4;19996:2;19985:9;19981:18;19973:26;;20045:9;20039:4;20035:20;20031:1;20020:9;20016:17;20009:47;20073:131;20199:4;20073:131;:::i;:::-;20065:139;;19792:419;;;:::o;20217:228::-;20357:34;20353:1;20345:6;20341:14;20334:58;20426:11;20421:2;20413:6;20409:15;20402:36;20217:228;:::o;20451:366::-;20593:3;20614:67;20678:2;20673:3;20614:67;:::i;:::-;20607:74;;20690:93;20779:3;20690:93;:::i;:::-;20808:2;20803:3;20799:12;20792:19;;20451:366;;;:::o;20823:419::-;20989:4;21027:2;21016:9;21012:18;21004:26;;21076:9;21070:4;21066:20;21062:1;21051:9;21047:17;21040:47;21104:131;21230:4;21104:131;:::i;:::-;21096:139;;20823:419;;;:::o;21248:194::-;21288:4;21308:20;21326:1;21308:20;:::i;:::-;21303:25;;21342:20;21360:1;21342:20;:::i;:::-;21337:25;;21386:1;21383;21379:9;21371:17;;21410:1;21404:4;21401:11;21398:37;;;21415:18;;:::i;:::-;21398:37;21248:194;;;;:::o;21448:229::-;21588:34;21584:1;21576:6;21572:14;21565:58;21657:12;21652:2;21644:6;21640:15;21633:37;21448:229;:::o;21683:366::-;21825:3;21846:67;21910:2;21905:3;21846:67;:::i;:::-;21839:74;;21922:93;22011:3;21922:93;:::i;:::-;22040:2;22035:3;22031:12;22024:19;;21683:366;;;:::o;22055:419::-;22221:4;22259:2;22248:9;22244:18;22236:26;;22308:9;22302:4;22298:20;22294:1;22283:9;22279:17;22272:47;22336:131;22462:4;22336:131;:::i;:::-;22328:139;;22055:419;;;:::o;22480:180::-;22528:77;22525:1;22518:88;22625:4;22622:1;22615:15;22649:4;22646:1;22639:15;22666:143;22723:5;22754:6;22748:13;22739:22;;22770:33;22797:5;22770:33;:::i;:::-;22666:143;;;;:::o;22815:351::-;22885:6;22934:2;22922:9;22913:7;22909:23;22905:32;22902:119;;;22940:79;;:::i;:::-;22902:119;23060:1;23085:64;23141:7;23132:6;23121:9;23117:22;23085:64;:::i;:::-;23075:74;;23031:128;22815:351;;;;:::o;23172:85::-;23217:7;23246:5;23235:16;;23172:85;;;:::o;23263:158::-;23321:9;23354:61;23372:42;23381:32;23407:5;23381:32;:::i;:::-;23372:42;:::i;:::-;23354:61;:::i;:::-;23341:74;;23263:158;;;:::o;23427:147::-;23522:45;23561:5;23522:45;:::i;:::-;23517:3;23510:58;23427:147;;:::o;23580:114::-;23647:6;23681:5;23675:12;23665:22;;23580:114;;;:::o;23700:184::-;23799:11;23833:6;23828:3;23821:19;23873:4;23868:3;23864:14;23849:29;;23700:184;;;;:::o;23890:132::-;23957:4;23980:3;23972:11;;24010:4;24005:3;24001:14;23993:22;;23890:132;;;:::o;24028:108::-;24105:24;24123:5;24105:24;:::i;:::-;24100:3;24093:37;24028:108;;:::o;24142:179::-;24211:10;24232:46;24274:3;24266:6;24232:46;:::i;:::-;24310:4;24305:3;24301:14;24287:28;;24142:179;;;;:::o;24327:113::-;24397:4;24429;24424:3;24420:14;24412:22;;24327:113;;;:::o;24476:732::-;24595:3;24624:54;24672:5;24624:54;:::i;:::-;24694:86;24773:6;24768:3;24694:86;:::i;:::-;24687:93;;24804:56;24854:5;24804:56;:::i;:::-;24883:7;24914:1;24899:284;24924:6;24921:1;24918:13;24899:284;;;25000:6;24994:13;25027:63;25086:3;25071:13;25027:63;:::i;:::-;25020:70;;25113:60;25166:6;25113:60;:::i;:::-;25103:70;;24959:224;24946:1;24943;24939:9;24934:14;;24899:284;;;24903:14;25199:3;25192:10;;24600:608;;;24476:732;;;;:::o;25214:831::-;25477:4;25515:3;25504:9;25500:19;25492:27;;25529:71;25597:1;25586:9;25582:17;25573:6;25529:71;:::i;:::-;25610:80;25686:2;25675:9;25671:18;25662:6;25610:80;:::i;:::-;25737:9;25731:4;25727:20;25722:2;25711:9;25707:18;25700:48;25765:108;25868:4;25859:6;25765:108;:::i;:::-;25757:116;;25883:72;25951:2;25940:9;25936:18;25927:6;25883:72;:::i;:::-;25965:73;26033:3;26022:9;26018:19;26009:6;25965:73;:::i;:::-;25214:831;;;;;;;;:::o;26051:180::-;26099:77;26096:1;26089:88;26196:4;26193:1;26186:15;26220:4;26217:1;26210:15;26237:185;26277:1;26294:20;26312:1;26294:20;:::i;:::-;26289:25;;26328:20;26346:1;26328:20;:::i;:::-;26323:25;;26367:1;26357:35;;26372:18;;:::i;:::-;26357:35;26414:1;26411;26407:9;26402:14;;26237:185;;;;:::o;26428:191::-;26468:3;26487:20;26505:1;26487:20;:::i;:::-;26482:25;;26521:20;26539:1;26521:20;:::i;:::-;26516:25;;26564:1;26561;26557:9;26550:16;;26585:3;26582:1;26579:10;26576:36;;;26592:18;;:::i;:::-;26576:36;26428:191;;;;:::o;26625:177::-;26765:29;26761:1;26753:6;26749:14;26742:53;26625:177;:::o;26808:366::-;26950:3;26971:67;27035:2;27030:3;26971:67;:::i;:::-;26964:74;;27047:93;27136:3;27047:93;:::i;:::-;27165:2;27160:3;27156:12;27149:19;;26808:366;;;:::o;27180:419::-;27346:4;27384:2;27373:9;27369:18;27361:26;;27433:9;27427:4;27423:20;27419:1;27408:9;27404:17;27397:47;27461:131;27587:4;27461:131;:::i;:::-;27453:139;;27180:419;;;:::o;27605:410::-;27645:7;27668:20;27686:1;27668:20;:::i;:::-;27663:25;;27702:20;27720:1;27702:20;:::i;:::-;27697:25;;27757:1;27754;27750:9;27779:30;27797:11;27779:30;:::i;:::-;27768:41;;27958:1;27949:7;27945:15;27942:1;27939:22;27919:1;27912:9;27892:83;27869:139;;27988:18;;:::i;:::-;27869:139;27653:362;27605:410;;;;:::o;28021:220::-;28161:34;28157:1;28149:6;28145:14;28138:58;28230:3;28225:2;28217:6;28213:15;28206:28;28021:220;:::o;28247:366::-;28389:3;28410:67;28474:2;28469:3;28410:67;:::i;:::-;28403:74;;28486:93;28575:3;28486:93;:::i;:::-;28604:2;28599:3;28595:12;28588:19;;28247:366;;;:::o;28619:419::-;28785:4;28823:2;28812:9;28808:18;28800:26;;28872:9;28866:4;28862:20;28858:1;28847:9;28843:17;28836:47;28900:131;29026:4;28900:131;:::i;:::-;28892:139;;28619:419;;;:::o

Swarm Source

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