ETH Price: $3,489.35 (+3.66%)
Gas: 3 Gwei

Token

0Basics (ZERO)
 

Overview

Max Total Supply

72,000,000,000 ZERO

Holders

145

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
45,813,451.348950537 ZERO

Value
$0.00
0x4a8a9acbe8f1848c622b6cbca3f94c9b474698fc
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:
ZERO

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-04-28
*/

// SPDX-License-Identifier: Unlicensed

// Telegram: https://t.me/zero_basics

// Website: 0basics.wtf

// Twitter: https://twitter.com/0Basics

pragma solidity ^0.8.9;

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

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

contract Ownable is Context {
    address private _owner;
    address private _previousOwner;
    event OwnershipTransferred(
        address indexed previousOwner,
        address indexed newOwner
    );

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

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

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

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

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

}

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

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

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

    function factory() external pure returns (address);

    function WETH() external pure returns (address);

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

contract ZERO is Context, IERC20, Ownable {

    using SafeMath for uint256;

    string private constant _name = "0Basics";
    string private constant _symbol = "ZERO";
    uint8 private constant _decimals = 9;

    mapping(address => uint256) private _rOwned;
    mapping(address => uint256) private _tOwned;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFee;
    uint256 private constant MAX = ~uint256(0);
    uint256 private constant _tTotal = 72000000000 * 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 = 30;

    //Original Fee
    uint256 private _redisFee = _redisFeeOnSell;
    uint256 private _taxFee = _taxFeeOnSell;

    uint256 private _previousredisFee = _redisFee;
    uint256 private _previoustaxFee = _taxFee;

    address payable private _developmentAddress = payable(0x463cE8a66b818488983C225dbD04174650416B31);
    address payable private _marketingAddress = payable(0x463cE8a66b818488983C225dbD04174650416B31);

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;

    bool private tradingOpen = false;
    bool private inSwap = false;
    bool private swapEnabled = true;
                                  
    uint256 private _maxTxAmount = 648000000 * 10**9;
    uint256 private _minTxAmount = 432000000 * 10**9;
    uint256 private _maxWalletSize = 720000000 * 10**9;
    uint256 public _swapTokensAtAmount = 72000000 * 10**9;

    event MaxTxAmountUpdated(uint256 _maxTxAmount);
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor() {

        _rOwned[_msgSender()] = _rTotal;

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

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

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

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

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

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

    function totalSupply() public pure override returns (uint256) {
        return _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 removeAllFee() private {
        if (_redisFee == 0 && _taxFee == 0) return;

        _previousredisFee = _redisFee;
        _previoustaxFee = _taxFee;

        _redisFee = 0;
        _taxFee = 0;
    }

    function restoreAllFee() private {
        _redisFee = _previousredisFee;
        _taxFee = _previoustaxFee;
    }

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

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");

        if (from != owner() && to != owner() && from != _developmentAddress && to != _developmentAddress) {

            /*
            if (!tradingOpen) {
                require(from == owner(), "TOKEN: This account cannot send tokens until trading is enabled");
            }
            */
            require(amount <= _maxTxAmount, "TOKEN: Max Transaction Limit");
            if(from != address(this) && to != address(this) && to != uniswapV2Pair)
            {
              require(amount >= _minTxAmount, "TOKEN: Max Transaction Limit");
            }

            if(to != uniswapV2Pair) {
                require(balanceOf(to) + amount < _maxWalletSize, "TOKEN: Balance exceeds wallet size!");
            }

            uint256 contractTokenBalance = balanceOf(address(this));
            bool canSwap = contractTokenBalance >= _swapTokensAtAmount;

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

            if (canSwap && !inSwap && from != uniswapV2Pair && swapEnabled && !_isExcludedFromFee[from] && !_isExcludedFromFee[to]) {
                swapTokensForEth(contractTokenBalance);
                uint256 contractETHBalance = address(this).balance;
                if (contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
            }
        }

        bool takeFee = true;

        //Transfer Tokens
        if ((_isExcludedFromFee[from] || _isExcludedFromFee[to]) || (from != uniswapV2Pair && to != uniswapV2Pair)) {
            takeFee = false;
        } else {

            //Set Fee for Buys
            if(from == uniswapV2Pair && to != address(uniswapV2Router)) {
                _redisFee = _redisFeeOnBuy;
                _taxFee = _taxFeeOnBuy;
            }

            //Set Fee for Sells
            if (to == uniswapV2Pair && from != address(uniswapV2Router)) {
                _redisFee = _redisFeeOnSell;
                _taxFee = _taxFeeOnSell;
            }

        }

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

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

    function sendETHToFee(uint256 amount) private {
        _marketingAddress.transfer(amount);
    }


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

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

    function _tokenTransfer(
        address sender,
        address recipient,
        uint256 amount,
        bool takeFee
    ) private {
        if (!takeFee) removeAllFee();
        _transferStandard(sender, recipient, amount);
        if (!takeFee) restoreAllFee();
    }

    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 redisFee,
        uint256 taxFee
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 tFee = tAmount.mul(redisFee).div(100);
        uint256 tTeam = tAmount.mul(taxFee).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 setFees(uint256 redisFeeOnBuy, uint256 redisFeeOnSell, uint256 taxFeeOnBuy, uint256 taxFeeOnSell) public onlyOwner {
        require(redisFeeOnBuy <= 5, "Can not rug");
        require(redisFeeOnSell <= 5, "Can not rug");
        require(taxFeeOnBuy <= 5, "Can not rug");
        require(taxFeeOnSell <= 45, "Can not rug");
        _redisFeeOnBuy = redisFeeOnBuy;
        _redisFeeOnSell = redisFeeOnSell;
        _taxFeeOnBuy = taxFeeOnBuy;
        _taxFeeOnSell = taxFeeOnSell;
    }

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

    //Set minimum tokens required to swap.
    function toggleSwap(bool _swapEnabled) public onlyOwner {
        swapEnabled = _swapEnabled;
    }

    function setLimits(uint256 maxTxAmount, uint256 minTxAmount, uint256 maxWalletSize) public onlyOwner {
        _maxTxAmount = maxTxAmount;
        _minTxAmount = minTxAmount;
        _maxWalletSize = maxWalletSize;
    }

}

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":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"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":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"redisFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"redisFeeOnSell","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnSell","type":"uint256"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"},{"internalType":"uint256","name":"minTxAmount","type":"uint256"},{"internalType":"uint256","name":"maxWalletSize","type":"uint256"}],"name":"setLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"setMinSwapTokensThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"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":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526803e7336287142000006000196200001d919062000631565b6000196200002c919062000698565b600655600060085560006009556000600a55601e600b55600a54600c55600b54600d55600c54600e55600d54600f5573463ce8a66b818488983c225dbd04174650416b31601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073463ce8a66b818488983c225dbd04174650416b31601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000601360146101000a81548160ff0219169083151502179055506000601360156101000a81548160ff0219169083151502179055506001601360166101000a81548160ff0219169083151502179055506708fe2891167400006014556705fec5b60ef800006015556709fdf42f6e48000060165566ffcb9e57d400006017553480156200019257600080fd5b506000620001a5620005f060201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350600654600260006200025a620005f060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200033e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200036491906200073d565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003cc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003f291906200073d565b6040518363ffffffff1660e01b81526004016200041192919062000780565b6020604051808303816000875af115801562000431573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200045791906200073d565b601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000579620005f060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6803e733628714200000604051620005e19190620007be565b60405180910390a350620007db565b600033905090565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006200063e82620005f8565b91506200064b83620005f8565b9250826200065e576200065d62000602565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620006a582620005f8565b9150620006b283620005f8565b9250828203905081811115620006cd57620006cc62000669565b5b92915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200070582620006d8565b9050919050565b6200071781620006f8565b81146200072357600080fd5b50565b60008151905062000737816200070c565b92915050565b600060208284031215620007565762000755620006d3565b5b6000620007668482850162000726565b91505092915050565b6200077a81620006f8565b82525050565b60006040820190506200079760008301856200076f565b620007a660208301846200076f565b9392505050565b620007b881620005f8565b82525050565b6000602082019050620007d56000830184620007ad565b92915050565b6134fc80620007eb6000396000f3fe60806040526004361061012e5760003560e01c80636fc3eaec116100ab57806395d89b411161006f57806395d89b41146103c757806398a5c315146103f2578063a9059cbb1461041b578063c3c8cd8014610458578063dd62ed3e1461046f578063f2fde38b146104ac57610135565b80636fc3eaec146103085780636fcba3771461031f57806370a0823114610348578063715018a6146103855780638da5cb5b1461039c57610135565b806323b872dd116100f257806323b872dd146102215780632fd689e31461025e578063313ce5671461028957806349bd5a5e146102b45780636d8aa8f8146102df57610135565b806306fdde031461013a578063095ea7b3146101655780631694505e146101a257806318160ddd146101cd578063189ae5f2146101f857610135565b3661013557005b600080fd5b34801561014657600080fd5b5061014f6104d5565b60405161015c919061266a565b60405180910390f35b34801561017157600080fd5b5061018c60048036038101906101879190612725565b610512565b6040516101999190612780565b60405180910390f35b3480156101ae57600080fd5b506101b7610530565b6040516101c491906127fa565b60405180910390f35b3480156101d957600080fd5b506101e2610556565b6040516101ef9190612824565b60405180910390f35b34801561020457600080fd5b5061021f600480360381019061021a919061283f565b610567565b005b34801561022d57600080fd5b5061024860048036038101906102439190612892565b610616565b6040516102559190612780565b60405180910390f35b34801561026a57600080fd5b506102736106ef565b6040516102809190612824565b60405180910390f35b34801561029557600080fd5b5061029e6106f5565b6040516102ab9190612901565b60405180910390f35b3480156102c057600080fd5b506102c96106fe565b6040516102d6919061292b565b60405180910390f35b3480156102eb57600080fd5b5061030660048036038101906103019190612972565b610724565b005b34801561031457600080fd5b5061031d6107d6565b005b34801561032b57600080fd5b506103466004803603810190610341919061299f565b6108a7565b005b34801561035457600080fd5b5061036f600480360381019061036a9190612a06565b610a6e565b60405161037c9190612824565b60405180910390f35b34801561039157600080fd5b5061039a610abf565b005b3480156103a857600080fd5b506103b1610c12565b6040516103be919061292b565b60405180910390f35b3480156103d357600080fd5b506103dc610c3b565b6040516103e9919061266a565b60405180910390f35b3480156103fe57600080fd5b5061041960048036038101906104149190612a33565b610c78565b005b34801561042757600080fd5b50610442600480360381019061043d9190612725565b610d17565b60405161044f9190612780565b60405180910390f35b34801561046457600080fd5b5061046d610d35565b005b34801561047b57600080fd5b5061049660048036038101906104919190612a60565b610e0e565b6040516104a39190612824565b60405180910390f35b3480156104b857600080fd5b506104d360048036038101906104ce9190612a06565b610e95565b005b60606040518060400160405280600781526020017f3042617369637300000000000000000000000000000000000000000000000000815250905090565b600061052661051f611056565b848461105e565b6001905092915050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006803e733628714200000905090565b61056f611056565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146105fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105f390612aec565b60405180910390fd5b826014819055508160158190555080601681905550505050565b6000610623848484611227565b6106e48461062f611056565b6106df8560405180606001604052806028815260200161349f60289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610695611056565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611b009092919063ffffffff16565b61105e565b600190509392505050565b60175481565b60006009905090565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61072c611056565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107b090612aec565b60405180910390fd5b80601360166101000a81548160ff02191690831515021790555050565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610817611056565b73ffffffffffffffffffffffffffffffffffffffff16148061088d5750601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610875611056565b73ffffffffffffffffffffffffffffffffffffffff16145b61089657600080fd5b60004790506108a481611b64565b50565b6108af611056565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461093c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161093390612aec565b60405180910390fd5b6005841115610980576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161097790612b58565b60405180910390fd5b60058311156109c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109bb90612b58565b60405180910390fd5b6005821115610a08576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109ff90612b58565b60405180910390fd5b602d811115610a4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a4390612b58565b60405180910390fd5b8360088190555082600a819055508160098190555080600b8190555050505050565b6000610ab8600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611bd0565b9050919050565b610ac7611056565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4b90612aec565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600481526020017f5a45524f00000000000000000000000000000000000000000000000000000000815250905090565b610c80611056565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d0d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d0490612aec565b60405180910390fd5b8060178190555050565b6000610d2b610d24611056565b8484611227565b6001905092915050565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610d76611056565b73ffffffffffffffffffffffffffffffffffffffff161480610dec5750601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610dd4611056565b73ffffffffffffffffffffffffffffffffffffffff16145b610df557600080fd5b6000610e0030610a6e565b9050610e0b81611c3e565b50565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610e9d611056565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f2a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2190612aec565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610f99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9090612bea565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036110cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110c490612c7c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361113c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161113390612d0e565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161121a9190612824565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611296576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128d90612da0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611305576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112fc90612e32565b60405180910390fd5b60008111611348576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161133f90612ec4565b60405180910390fd5b611350610c12565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156113be575061138e610c12565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156114185750601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156114725750601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156117ff576014548111156114bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114b390612f30565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561152457503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561157e5750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156115c9576015548110156115c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115bf90612f30565b60405180910390fd5b5b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611676576016548161162b84610a6e565b6116359190612f7f565b10611675576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161166c90613025565b60405180910390fd5b5b600061168130610a6e565b905060006017548210159050601454821061169c5760145491505b8080156116b65750601360159054906101000a900460ff16155b80156117105750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156117285750601360169054906101000a900460ff165b801561177e5750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156117d45750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156117fc576117e282611c3e565b600047905060008111156117fa576117f947611b64565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806118a65750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806119595750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156119585750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b156119675760009050611aee565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611a125750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611a2a57600854600c81905550600954600d819055505b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611ad55750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611aed57600a54600c81905550600b54600d819055505b5b611afa84848484611eb7565b50505050565b6000838311158290611b48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3f919061266a565b60405180910390fd5b5060008385611b579190613045565b9050809150509392505050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611bcc573d6000803e3d6000fd5b5050565b6000600654821115611c17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c0e906130eb565b60405180910390fd5b6000611c21611ee4565b9050611c368184611f0f90919063ffffffff16565b915050919050565b6001601360156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115611c7657611c7561310b565b5b604051908082528060200260200182016040528015611ca45781602001602082028036833780820191505090505b5090503081600081518110611cbc57611cbb61313a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611d63573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d87919061317e565b81600181518110611d9b57611d9a61313a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611e0230601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461105e565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401611e669594939291906132a4565b600060405180830381600087803b158015611e8057600080fd5b505af1158015611e94573d6000803e3d6000fd5b50505050506000601360156101000a81548160ff02191690831515021790555050565b80611ec557611ec4611f59565b5b611ed0848484611f96565b80611ede57611edd612161565b5b50505050565b6000806000611ef1612175565b91509150611f088183611f0f90919063ffffffff16565b9250505090565b6000611f5183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506121d7565b905092915050565b6000600c54148015611f6d57506000600d54145b611f9457600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b600080600080600080611fa88761223a565b95509550955095509550955061200686600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546122a290919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061209b85600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546122ec90919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506120e78161234a565b6120f18483612407565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161214e9190612824565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b6000806000600654905060006803e73362871420000090506121ab6803e733628714200000600654611f0f90919063ffffffff16565b8210156121ca576006546803e7336287142000009350935050506121d3565b81819350935050505b9091565b6000808311829061221e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612215919061266a565b60405180910390fd5b506000838561222d919061332d565b9050809150509392505050565b60008060008060008060008060006122578a600c54600d54612441565b9250925092506000612267611ee4565b9050600080600061227a8e8787876124d7565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b60006122e483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611b00565b905092915050565b60008082846122fb9190612f7f565b905083811015612340576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612337906133aa565b60405180910390fd5b8091505092915050565b6000612354611ee4565b9050600061236b828461256090919063ffffffff16565b90506123bf81600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546122ec90919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b61241c826006546122a290919063ffffffff16565b600681905550612437816007546122ec90919063ffffffff16565b6007819055505050565b60008060008061246d606461245f888a61256090919063ffffffff16565b611f0f90919063ffffffff16565b905060006124976064612489888b61256090919063ffffffff16565b611f0f90919063ffffffff16565b905060006124c0826124b2858c6122a290919063ffffffff16565b6122a290919063ffffffff16565b905080838395509550955050505093509350939050565b6000806000806124f0858961256090919063ffffffff16565b90506000612507868961256090919063ffffffff16565b9050600061251e878961256090919063ffffffff16565b905060006125478261253985876122a290919063ffffffff16565b6122a290919063ffffffff16565b9050838184965096509650505050509450945094915050565b600080830361257257600090506125d4565b6000828461258091906133ca565b905082848261258f919061332d565b146125cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125c69061347e565b60405180910390fd5b809150505b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156126145780820151818401526020810190506125f9565b60008484015250505050565b6000601f19601f8301169050919050565b600061263c826125da565b61264681856125e5565b93506126568185602086016125f6565b61265f81612620565b840191505092915050565b600060208201905081810360008301526126848184612631565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006126bc82612691565b9050919050565b6126cc816126b1565b81146126d757600080fd5b50565b6000813590506126e9816126c3565b92915050565b6000819050919050565b612702816126ef565b811461270d57600080fd5b50565b60008135905061271f816126f9565b92915050565b6000806040838503121561273c5761273b61268c565b5b600061274a858286016126da565b925050602061275b85828601612710565b9150509250929050565b60008115159050919050565b61277a81612765565b82525050565b60006020820190506127956000830184612771565b92915050565b6000819050919050565b60006127c06127bb6127b684612691565b61279b565b612691565b9050919050565b60006127d2826127a5565b9050919050565b60006127e4826127c7565b9050919050565b6127f4816127d9565b82525050565b600060208201905061280f60008301846127eb565b92915050565b61281e816126ef565b82525050565b60006020820190506128396000830184612815565b92915050565b6000806000606084860312156128585761285761268c565b5b600061286686828701612710565b935050602061287786828701612710565b925050604061288886828701612710565b9150509250925092565b6000806000606084860312156128ab576128aa61268c565b5b60006128b9868287016126da565b93505060206128ca868287016126da565b92505060406128db86828701612710565b9150509250925092565b600060ff82169050919050565b6128fb816128e5565b82525050565b600060208201905061291660008301846128f2565b92915050565b612925816126b1565b82525050565b6000602082019050612940600083018461291c565b92915050565b61294f81612765565b811461295a57600080fd5b50565b60008135905061296c81612946565b92915050565b6000602082840312156129885761298761268c565b5b60006129968482850161295d565b91505092915050565b600080600080608085870312156129b9576129b861268c565b5b60006129c787828801612710565b94505060206129d887828801612710565b93505060406129e987828801612710565b92505060606129fa87828801612710565b91505092959194509250565b600060208284031215612a1c57612a1b61268c565b5b6000612a2a848285016126da565b91505092915050565b600060208284031215612a4957612a4861268c565b5b6000612a5784828501612710565b91505092915050565b60008060408385031215612a7757612a7661268c565b5b6000612a85858286016126da565b9250506020612a96858286016126da565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612ad66020836125e5565b9150612ae182612aa0565b602082019050919050565b60006020820190508181036000830152612b0581612ac9565b9050919050565b7f43616e206e6f7420727567000000000000000000000000000000000000000000600082015250565b6000612b42600b836125e5565b9150612b4d82612b0c565b602082019050919050565b60006020820190508181036000830152612b7181612b35565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000612bd46026836125e5565b9150612bdf82612b78565b604082019050919050565b60006020820190508181036000830152612c0381612bc7565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612c666024836125e5565b9150612c7182612c0a565b604082019050919050565b60006020820190508181036000830152612c9581612c59565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612cf86022836125e5565b9150612d0382612c9c565b604082019050919050565b60006020820190508181036000830152612d2781612ceb565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612d8a6025836125e5565b9150612d9582612d2e565b604082019050919050565b60006020820190508181036000830152612db981612d7d565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612e1c6023836125e5565b9150612e2782612dc0565b604082019050919050565b60006020820190508181036000830152612e4b81612e0f565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000612eae6029836125e5565b9150612eb982612e52565b604082019050919050565b60006020820190508181036000830152612edd81612ea1565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b6000612f1a601c836125e5565b9150612f2582612ee4565b602082019050919050565b60006020820190508181036000830152612f4981612f0d565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612f8a826126ef565b9150612f95836126ef565b9250828201905080821115612fad57612fac612f50565b5b92915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b600061300f6023836125e5565b915061301a82612fb3565b604082019050919050565b6000602082019050818103600083015261303e81613002565b9050919050565b6000613050826126ef565b915061305b836126ef565b925082820390508181111561307357613072612f50565b5b92915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b60006130d5602a836125e5565b91506130e082613079565b604082019050919050565b60006020820190508181036000830152613104816130c8565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050613178816126c3565b92915050565b6000602082840312156131945761319361268c565b5b60006131a284828501613169565b91505092915050565b6000819050919050565b60006131d06131cb6131c6846131ab565b61279b565b6126ef565b9050919050565b6131e0816131b5565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61321b816126b1565b82525050565b600061322d8383613212565b60208301905092915050565b6000602082019050919050565b6000613251826131e6565b61325b81856131f1565b935061326683613202565b8060005b8381101561329757815161327e8882613221565b975061328983613239565b92505060018101905061326a565b5085935050505092915050565b600060a0820190506132b96000830188612815565b6132c660208301876131d7565b81810360408301526132d88186613246565b90506132e7606083018561291c565b6132f46080830184612815565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613338826126ef565b9150613343836126ef565b925082613353576133526132fe565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613394601b836125e5565b915061339f8261335e565b602082019050919050565b600060208201905081810360008301526133c381613387565b9050919050565b60006133d5826126ef565b91506133e0836126ef565b92508282026133ee816126ef565b9150828204841483151761340557613404612f50565b5b5092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006134686021836125e5565b91506134738261340c565b604082019050919050565b600060208201905081810360008301526134978161345b565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220ceffe2f280c58601b057825379501171e361c8887d6e190e84e3bee50933903f64736f6c63430008110033

Deployed Bytecode

0x60806040526004361061012e5760003560e01c80636fc3eaec116100ab57806395d89b411161006f57806395d89b41146103c757806398a5c315146103f2578063a9059cbb1461041b578063c3c8cd8014610458578063dd62ed3e1461046f578063f2fde38b146104ac57610135565b80636fc3eaec146103085780636fcba3771461031f57806370a0823114610348578063715018a6146103855780638da5cb5b1461039c57610135565b806323b872dd116100f257806323b872dd146102215780632fd689e31461025e578063313ce5671461028957806349bd5a5e146102b45780636d8aa8f8146102df57610135565b806306fdde031461013a578063095ea7b3146101655780631694505e146101a257806318160ddd146101cd578063189ae5f2146101f857610135565b3661013557005b600080fd5b34801561014657600080fd5b5061014f6104d5565b60405161015c919061266a565b60405180910390f35b34801561017157600080fd5b5061018c60048036038101906101879190612725565b610512565b6040516101999190612780565b60405180910390f35b3480156101ae57600080fd5b506101b7610530565b6040516101c491906127fa565b60405180910390f35b3480156101d957600080fd5b506101e2610556565b6040516101ef9190612824565b60405180910390f35b34801561020457600080fd5b5061021f600480360381019061021a919061283f565b610567565b005b34801561022d57600080fd5b5061024860048036038101906102439190612892565b610616565b6040516102559190612780565b60405180910390f35b34801561026a57600080fd5b506102736106ef565b6040516102809190612824565b60405180910390f35b34801561029557600080fd5b5061029e6106f5565b6040516102ab9190612901565b60405180910390f35b3480156102c057600080fd5b506102c96106fe565b6040516102d6919061292b565b60405180910390f35b3480156102eb57600080fd5b5061030660048036038101906103019190612972565b610724565b005b34801561031457600080fd5b5061031d6107d6565b005b34801561032b57600080fd5b506103466004803603810190610341919061299f565b6108a7565b005b34801561035457600080fd5b5061036f600480360381019061036a9190612a06565b610a6e565b60405161037c9190612824565b60405180910390f35b34801561039157600080fd5b5061039a610abf565b005b3480156103a857600080fd5b506103b1610c12565b6040516103be919061292b565b60405180910390f35b3480156103d357600080fd5b506103dc610c3b565b6040516103e9919061266a565b60405180910390f35b3480156103fe57600080fd5b5061041960048036038101906104149190612a33565b610c78565b005b34801561042757600080fd5b50610442600480360381019061043d9190612725565b610d17565b60405161044f9190612780565b60405180910390f35b34801561046457600080fd5b5061046d610d35565b005b34801561047b57600080fd5b5061049660048036038101906104919190612a60565b610e0e565b6040516104a39190612824565b60405180910390f35b3480156104b857600080fd5b506104d360048036038101906104ce9190612a06565b610e95565b005b60606040518060400160405280600781526020017f3042617369637300000000000000000000000000000000000000000000000000815250905090565b600061052661051f611056565b848461105e565b6001905092915050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006803e733628714200000905090565b61056f611056565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146105fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105f390612aec565b60405180910390fd5b826014819055508160158190555080601681905550505050565b6000610623848484611227565b6106e48461062f611056565b6106df8560405180606001604052806028815260200161349f60289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610695611056565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611b009092919063ffffffff16565b61105e565b600190509392505050565b60175481565b60006009905090565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61072c611056565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107b090612aec565b60405180910390fd5b80601360166101000a81548160ff02191690831515021790555050565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610817611056565b73ffffffffffffffffffffffffffffffffffffffff16148061088d5750601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610875611056565b73ffffffffffffffffffffffffffffffffffffffff16145b61089657600080fd5b60004790506108a481611b64565b50565b6108af611056565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461093c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161093390612aec565b60405180910390fd5b6005841115610980576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161097790612b58565b60405180910390fd5b60058311156109c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109bb90612b58565b60405180910390fd5b6005821115610a08576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109ff90612b58565b60405180910390fd5b602d811115610a4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a4390612b58565b60405180910390fd5b8360088190555082600a819055508160098190555080600b8190555050505050565b6000610ab8600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611bd0565b9050919050565b610ac7611056565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4b90612aec565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600481526020017f5a45524f00000000000000000000000000000000000000000000000000000000815250905090565b610c80611056565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d0d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d0490612aec565b60405180910390fd5b8060178190555050565b6000610d2b610d24611056565b8484611227565b6001905092915050565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610d76611056565b73ffffffffffffffffffffffffffffffffffffffff161480610dec5750601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610dd4611056565b73ffffffffffffffffffffffffffffffffffffffff16145b610df557600080fd5b6000610e0030610a6e565b9050610e0b81611c3e565b50565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610e9d611056565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f2a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2190612aec565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610f99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9090612bea565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036110cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110c490612c7c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361113c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161113390612d0e565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161121a9190612824565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611296576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128d90612da0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611305576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112fc90612e32565b60405180910390fd5b60008111611348576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161133f90612ec4565b60405180910390fd5b611350610c12565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156113be575061138e610c12565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156114185750601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156114725750601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156117ff576014548111156114bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114b390612f30565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561152457503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561157e5750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156115c9576015548110156115c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115bf90612f30565b60405180910390fd5b5b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611676576016548161162b84610a6e565b6116359190612f7f565b10611675576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161166c90613025565b60405180910390fd5b5b600061168130610a6e565b905060006017548210159050601454821061169c5760145491505b8080156116b65750601360159054906101000a900460ff16155b80156117105750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156117285750601360169054906101000a900460ff165b801561177e5750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156117d45750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156117fc576117e282611c3e565b600047905060008111156117fa576117f947611b64565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806118a65750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806119595750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156119585750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b156119675760009050611aee565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611a125750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611a2a57600854600c81905550600954600d819055505b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611ad55750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611aed57600a54600c81905550600b54600d819055505b5b611afa84848484611eb7565b50505050565b6000838311158290611b48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3f919061266a565b60405180910390fd5b5060008385611b579190613045565b9050809150509392505050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611bcc573d6000803e3d6000fd5b5050565b6000600654821115611c17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c0e906130eb565b60405180910390fd5b6000611c21611ee4565b9050611c368184611f0f90919063ffffffff16565b915050919050565b6001601360156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115611c7657611c7561310b565b5b604051908082528060200260200182016040528015611ca45781602001602082028036833780820191505090505b5090503081600081518110611cbc57611cbb61313a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611d63573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d87919061317e565b81600181518110611d9b57611d9a61313a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611e0230601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461105e565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401611e669594939291906132a4565b600060405180830381600087803b158015611e8057600080fd5b505af1158015611e94573d6000803e3d6000fd5b50505050506000601360156101000a81548160ff02191690831515021790555050565b80611ec557611ec4611f59565b5b611ed0848484611f96565b80611ede57611edd612161565b5b50505050565b6000806000611ef1612175565b91509150611f088183611f0f90919063ffffffff16565b9250505090565b6000611f5183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506121d7565b905092915050565b6000600c54148015611f6d57506000600d54145b611f9457600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b600080600080600080611fa88761223a565b95509550955095509550955061200686600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546122a290919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061209b85600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546122ec90919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506120e78161234a565b6120f18483612407565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161214e9190612824565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b6000806000600654905060006803e73362871420000090506121ab6803e733628714200000600654611f0f90919063ffffffff16565b8210156121ca576006546803e7336287142000009350935050506121d3565b81819350935050505b9091565b6000808311829061221e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612215919061266a565b60405180910390fd5b506000838561222d919061332d565b9050809150509392505050565b60008060008060008060008060006122578a600c54600d54612441565b9250925092506000612267611ee4565b9050600080600061227a8e8787876124d7565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b60006122e483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611b00565b905092915050565b60008082846122fb9190612f7f565b905083811015612340576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612337906133aa565b60405180910390fd5b8091505092915050565b6000612354611ee4565b9050600061236b828461256090919063ffffffff16565b90506123bf81600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546122ec90919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b61241c826006546122a290919063ffffffff16565b600681905550612437816007546122ec90919063ffffffff16565b6007819055505050565b60008060008061246d606461245f888a61256090919063ffffffff16565b611f0f90919063ffffffff16565b905060006124976064612489888b61256090919063ffffffff16565b611f0f90919063ffffffff16565b905060006124c0826124b2858c6122a290919063ffffffff16565b6122a290919063ffffffff16565b905080838395509550955050505093509350939050565b6000806000806124f0858961256090919063ffffffff16565b90506000612507868961256090919063ffffffff16565b9050600061251e878961256090919063ffffffff16565b905060006125478261253985876122a290919063ffffffff16565b6122a290919063ffffffff16565b9050838184965096509650505050509450945094915050565b600080830361257257600090506125d4565b6000828461258091906133ca565b905082848261258f919061332d565b146125cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125c69061347e565b60405180910390fd5b809150505b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156126145780820151818401526020810190506125f9565b60008484015250505050565b6000601f19601f8301169050919050565b600061263c826125da565b61264681856125e5565b93506126568185602086016125f6565b61265f81612620565b840191505092915050565b600060208201905081810360008301526126848184612631565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006126bc82612691565b9050919050565b6126cc816126b1565b81146126d757600080fd5b50565b6000813590506126e9816126c3565b92915050565b6000819050919050565b612702816126ef565b811461270d57600080fd5b50565b60008135905061271f816126f9565b92915050565b6000806040838503121561273c5761273b61268c565b5b600061274a858286016126da565b925050602061275b85828601612710565b9150509250929050565b60008115159050919050565b61277a81612765565b82525050565b60006020820190506127956000830184612771565b92915050565b6000819050919050565b60006127c06127bb6127b684612691565b61279b565b612691565b9050919050565b60006127d2826127a5565b9050919050565b60006127e4826127c7565b9050919050565b6127f4816127d9565b82525050565b600060208201905061280f60008301846127eb565b92915050565b61281e816126ef565b82525050565b60006020820190506128396000830184612815565b92915050565b6000806000606084860312156128585761285761268c565b5b600061286686828701612710565b935050602061287786828701612710565b925050604061288886828701612710565b9150509250925092565b6000806000606084860312156128ab576128aa61268c565b5b60006128b9868287016126da565b93505060206128ca868287016126da565b92505060406128db86828701612710565b9150509250925092565b600060ff82169050919050565b6128fb816128e5565b82525050565b600060208201905061291660008301846128f2565b92915050565b612925816126b1565b82525050565b6000602082019050612940600083018461291c565b92915050565b61294f81612765565b811461295a57600080fd5b50565b60008135905061296c81612946565b92915050565b6000602082840312156129885761298761268c565b5b60006129968482850161295d565b91505092915050565b600080600080608085870312156129b9576129b861268c565b5b60006129c787828801612710565b94505060206129d887828801612710565b93505060406129e987828801612710565b92505060606129fa87828801612710565b91505092959194509250565b600060208284031215612a1c57612a1b61268c565b5b6000612a2a848285016126da565b91505092915050565b600060208284031215612a4957612a4861268c565b5b6000612a5784828501612710565b91505092915050565b60008060408385031215612a7757612a7661268c565b5b6000612a85858286016126da565b9250506020612a96858286016126da565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612ad66020836125e5565b9150612ae182612aa0565b602082019050919050565b60006020820190508181036000830152612b0581612ac9565b9050919050565b7f43616e206e6f7420727567000000000000000000000000000000000000000000600082015250565b6000612b42600b836125e5565b9150612b4d82612b0c565b602082019050919050565b60006020820190508181036000830152612b7181612b35565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000612bd46026836125e5565b9150612bdf82612b78565b604082019050919050565b60006020820190508181036000830152612c0381612bc7565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612c666024836125e5565b9150612c7182612c0a565b604082019050919050565b60006020820190508181036000830152612c9581612c59565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612cf86022836125e5565b9150612d0382612c9c565b604082019050919050565b60006020820190508181036000830152612d2781612ceb565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612d8a6025836125e5565b9150612d9582612d2e565b604082019050919050565b60006020820190508181036000830152612db981612d7d565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612e1c6023836125e5565b9150612e2782612dc0565b604082019050919050565b60006020820190508181036000830152612e4b81612e0f565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000612eae6029836125e5565b9150612eb982612e52565b604082019050919050565b60006020820190508181036000830152612edd81612ea1565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b6000612f1a601c836125e5565b9150612f2582612ee4565b602082019050919050565b60006020820190508181036000830152612f4981612f0d565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612f8a826126ef565b9150612f95836126ef565b9250828201905080821115612fad57612fac612f50565b5b92915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b600061300f6023836125e5565b915061301a82612fb3565b604082019050919050565b6000602082019050818103600083015261303e81613002565b9050919050565b6000613050826126ef565b915061305b836126ef565b925082820390508181111561307357613072612f50565b5b92915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b60006130d5602a836125e5565b91506130e082613079565b604082019050919050565b60006020820190508181036000830152613104816130c8565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050613178816126c3565b92915050565b6000602082840312156131945761319361268c565b5b60006131a284828501613169565b91505092915050565b6000819050919050565b60006131d06131cb6131c6846131ab565b61279b565b6126ef565b9050919050565b6131e0816131b5565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61321b816126b1565b82525050565b600061322d8383613212565b60208301905092915050565b6000602082019050919050565b6000613251826131e6565b61325b81856131f1565b935061326683613202565b8060005b8381101561329757815161327e8882613221565b975061328983613239565b92505060018101905061326a565b5085935050505092915050565b600060a0820190506132b96000830188612815565b6132c660208301876131d7565b81810360408301526132d88186613246565b90506132e7606083018561291c565b6132f46080830184612815565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613338826126ef565b9150613343836126ef565b925082613353576133526132fe565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613394601b836125e5565b915061339f8261335e565b602082019050919050565b600060208201905081810360008301526133c381613387565b9050919050565b60006133d5826126ef565b91506133e0836126ef565b92508282026133ee816126ef565b9150828204841483151761340557613404612f50565b5b5092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006134686021836125e5565b91506134738261340c565b604082019050919050565b600060208201905081810360008301526134978161345b565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220ceffe2f280c58601b057825379501171e361c8887d6e190e84e3bee50933903f64736f6c63430008110033

Deployed Bytecode Sourcemap

4181:13116:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6585:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7510:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5431:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6862:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17068:224;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7711:446;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5830:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6771:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5479:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16959:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12572:235;;;;;;;;;;;;;:::i;:::-;;16213:503;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6965:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1668:148;;;;;;;;;;;;;:::i;:::-;;1454:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6676:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16768:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7111:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12328:236;;;;;;;;;;;;;:::i;:::-;;7318:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1824:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6585:83;6622:13;6655:5;;;;;;;;;;;;;;;;;6648:12;;6585:83;:::o;7510:193::-;7612:4;7634:39;7643:12;:10;:12::i;:::-;7657:7;7666:6;7634:8;:39::i;:::-;7691:4;7684:11;;7510:193;;;;:::o;5431:41::-;;;;;;;;;;;;;:::o;6862:95::-;6915:7;4723:19;6935:14;;6862:95;:::o;17068:224::-;1591:12;:10;:12::i;:::-;1581:22;;:6;;;;;;;;;;:22;;;1573:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17195:11:::1;17180:12;:26;;;;17232:11;17217:12;:26;;;;17271:13;17254:14;:30;;;;17068:224:::0;;;:::o;7711:446::-;7843:4;7860:36;7870:6;7878:9;7889:6;7860:9;:36::i;:::-;7907:220;7930:6;7951:12;:10;:12::i;:::-;7978:138;8034:6;7978:138;;;;;;;;;;;;;;;;;:11;:19;7990:6;7978:19;;;;;;;;;;;;;;;:33;7998:12;:10;:12::i;:::-;7978:33;;;;;;;;;;;;;;;;:37;;:138;;;;;:::i;:::-;7907:8;:220::i;:::-;8145:4;8138:11;;7711:446;;;;;:::o;5830:53::-;;;;:::o;6771:83::-;6812:5;4397:1;6830:16;;6771:83;:::o;5479:28::-;;;;;;;;;;;;;:::o;16959:101::-;1591:12;:10;:12::i;:::-;1581:22;;:6;;;;;;;;;;:22;;;1573:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17040:12:::1;17026:11;;:26;;;;;;;;;;;;;;;;;;16959:101:::0;:::o;12572:235::-;12638:19;;;;;;;;;;;12622:35;;:12;:10;:12::i;:::-;:35;;;:72;;;;12677:17;;;;;;;;;;;12661:33;;:12;:10;:12::i;:::-;:33;;;12622:72;12614:81;;;;;;12706:26;12735:21;12706:50;;12767:32;12780:18;12767:12;:32::i;:::-;12603:204;12572:235::o;16213:503::-;1591:12;:10;:12::i;:::-;1581:22;;:6;;;;;;;;;;:22;;;1573:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16373:1:::1;16356:13;:18;;16348:42;;;;;;;;;;;;:::i;:::-;;;;;;;;;16427:1;16409:14;:19;;16401:43;;;;;;;;;;;;:::i;:::-;;;;;;;;;16478:1;16463:11;:16;;16455:40;;;;;;;;;;;;:::i;:::-;;;;;;;;;16530:2;16514:12;:18;;16506:42;;;;;;;;;;;;:::i;:::-;;;;;;;;;16576:13;16559:14;:30;;;;16618:14;16600:15;:32;;;;16658:11;16643:12;:26;;;;16696:12;16680:13;:28;;;;16213:503:::0;;;;:::o;6965:138::-;7031:7;7058:37;7078:7;:16;7086:7;7078:16;;;;;;;;;;;;;;;;7058:19;:37::i;:::-;7051:44;;6965:138;;;:::o;1668:148::-;1591:12;:10;:12::i;:::-;1581:22;;:6;;;;;;;;;;:22;;;1573:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1775:1:::1;1738:40;;1759:6;::::0;::::1;;;;;;;;1738:40;;;;;;;;;;;;1806:1;1789:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;1668:148::o:0;1454:79::-;1492:7;1519:6;;;;;;;;;;;1512:13;;1454:79;:::o;6676:87::-;6715:13;6748:7;;;;;;;;;;;;;;;;;6741:14;;6676:87;:::o;16768:139::-;1591:12;:10;:12::i;:::-;1581:22;;:6;;;;;;;;;;:22;;;1573:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16881:18:::1;16859:19;:40;;;;16768:139:::0;:::o;7111:199::-;7216:4;7238:42;7248:12;:10;:12::i;:::-;7262:9;7273:6;7238:9;:42::i;:::-;7298:4;7291:11;;7111:199;;;;:::o;12328:236::-;12394:19;;;;;;;;;;;12378:35;;:12;:10;:12::i;:::-;:35;;;:72;;;;12433:17;;;;;;;;;;;12417:33;;:12;:10;:12::i;:::-;:33;;;12378:72;12370:81;;;;;;12462:23;12488:24;12506:4;12488:9;:24::i;:::-;12462:50;;12523:33;12540:15;12523:16;:33::i;:::-;12359:205;12328:236::o;7318:184::-;7435:7;7467:11;:18;7479:5;7467:18;;;;;;;;;;;;;;;:27;7486:7;7467:27;;;;;;;;;;;;;;;;7460:34;;7318:184;;;;:::o;1824:244::-;1591:12;:10;:12::i;:::-;1581:22;;:6;;;;;;;;;;:22;;;1573:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1933:1:::1;1913:22;;:8;:22;;::::0;1905:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;2023:8;1994:38;;2015:6;::::0;::::1;;;;;;;;1994:38;;;;;;;;;;;;2052:8;2043:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;1824:244:::0;:::o;213:98::-;266:7;293:10;286:17;;213:98;:::o;8848:369::-;8992:1;8975:19;;:5;:19;;;8967:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9073:1;9054:21;;:7;:21;;;9046:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9155:6;9125:11;:18;9137:5;9125:18;;;;;;;;;;;;;;;:27;9144:7;9125:27;;;;;;;;;;;;;;;:36;;;;9193:7;9177:32;;9186:5;9177:32;;;9202:6;9177:32;;;;;;:::i;:::-;;;;;;;;8848:369;;;:::o;9225:2495::-;9363:1;9347:18;;:4;:18;;;9339:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9440:1;9426:16;;:2;:16;;;9418:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9510:1;9501:6;:10;9493:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9582:7;:5;:7::i;:::-;9574:15;;:4;:15;;;;:32;;;;;9599:7;:5;:7::i;:::-;9593:13;;:2;:13;;;;9574:32;:63;;;;;9618:19;;;;;;;;;;;9610:27;;:4;:27;;;;9574:63;:92;;;;;9647:19;;;;;;;;;;;9641:25;;:2;:25;;;;9574:92;9570:1424;;;9893:12;;9883:6;:22;;9875:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;9972:4;9956:21;;:4;:21;;;;:44;;;;;9995:4;9981:19;;:2;:19;;;;9956:44;:67;;;;;10010:13;;;;;;;;;;;10004:19;;:2;:19;;;;9956:67;9953:181;;;10073:12;;10063:6;:22;;10055:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;9953:181;10159:13;;;;;;;;;;;10153:19;;:2;:19;;;10150:146;;10226:14;;10217:6;10201:13;10211:2;10201:9;:13::i;:::-;:22;;;;:::i;:::-;:39;10193:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;10150:146;10312:28;10343:24;10361:4;10343:9;:24::i;:::-;10312:55;;10382:12;10421:19;;10397:20;:43;;10382:58;;10484:12;;10460:20;:36;10457:124;;10553:12;;10530:35;;10457:124;10601:7;:18;;;;;10613:6;;;;;;;;;;;10612:7;10601:18;:43;;;;;10631:13;;;;;;;;;;;10623:21;;:4;:21;;;;10601:43;:58;;;;;10648:11;;;;;;;;;;;10601:58;:87;;;;;10664:18;:24;10683:4;10664:24;;;;;;;;;;;;;;;;;;;;;;;;;10663:25;10601:87;:114;;;;;10693:18;:22;10712:2;10693:22;;;;;;;;;;;;;;;;;;;;;;;;;10692:23;10601:114;10597:386;;;10736:38;10753:20;10736:16;:38::i;:::-;10793:26;10822:21;10793:50;;10887:1;10866:18;:22;10862:106;;;10913:35;10926:21;10913:12;:35::i;:::-;10862:106;10717:266;10597:386;9668:1326;;9570:1424;11006:12;11021:4;11006:19;;11070:18;:24;11089:4;11070:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;11098:18;:22;11117:2;11098:22;;;;;;;;;;;;;;;;;;;;;;;;;11070:50;11069:102;;;;11134:13;;;;;;;;;;;11126:21;;:4;:21;;;;:44;;;;;11157:13;;;;;;;;;;;11151:19;;:2;:19;;;;11126:44;11069:102;11065:594;;;11198:5;11188:15;;11065:594;;;11281:13;;;;;;;;;;;11273:21;;:4;:21;;;:55;;;;;11312:15;;;;;;;;;;;11298:30;;:2;:30;;;;11273:55;11270:162;;;11361:14;;11349:9;:26;;;;11404:12;;11394:7;:22;;;;11270:162;11491:13;;;;;;;;;;;11485:19;;:2;:19;;;:55;;;;;11524:15;;;;;;;;;;;11508:32;;:4;:32;;;;11485:55;11481:165;;;11573:15;;11561:9;:27;;;;11617:13;;11607:7;:23;;;;11481:165;11065:594;11671:41;11686:4;11692:2;11696:6;11704:7;11671:14;:41::i;:::-;9328:2392;9225:2495;;;:::o;2432:224::-;2552:7;2585:1;2580;:6;;2588:12;2572:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2612:9;2628:1;2624;:5;;;;:::i;:::-;2612:17;;2647:1;2640:8;;;2432:224;;;;;:::o;12219:99::-;12276:17;;;;;;;;;;;:26;;:34;12303:6;12276:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12219:99;:::o;8165:323::-;8260:7;8318;;8307;:18;;8285:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;8406:19;8428:10;:8;:10::i;:::-;8406:32;;8456:24;8468:11;8456:7;:11;;:24;;;;:::i;:::-;8449:31;;;8165:323;;;:::o;11728:483::-;5986:4;5977:6;;:13;;;;;;;;;;;;;;;;;;11806:21:::1;11844:1;11830:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11806:40;;11875:4;11857;11862:1;11857:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;11901:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11891:4;11896:1;11891:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;11934:62;11951:4;11966:15;;;;;;;;;;;11984:11;11934:8;:62::i;:::-;12007:15;;;;;;;;;;;:66;;;12088:11;12114:1;12130:4;12157;12177:15;12007:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11795:416;6022:5:::0;6013:6;;:14;;;;;;;;;;;;;;;;;;11728:483;:::o;12815:282::-;12971:7;12966:28;;12980:14;:12;:14::i;:::-;12966:28;13005:44;13023:6;13031:9;13042:6;13005:17;:44::i;:::-;13065:7;13060:29;;13074:15;:13;:15::i;:::-;13060:29;12815:282;;;;:::o;15776:164::-;15818:7;15839:15;15856;15875:19;:17;:19::i;:::-;15838:56;;;;15912:20;15924:7;15912;:11;;:20;;;;:::i;:::-;15905:27;;;;15776:164;:::o;2918:132::-;2976:7;3003:39;3007:1;3010;3003:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2996:46;;2918:132;;;;:::o;8496:219::-;8556:1;8543:9;;:14;:30;;;;;8572:1;8561:7;;:12;8543:30;8575:7;8539:43;8614:9;;8594:17;:29;;;;8652:7;;8634:15;:25;;;;8684:1;8672:9;:13;;;;8706:1;8696:7;:11;;;;8496:219;:::o;13105:610::-;13252:15;13282:23;13320:12;13347:23;13385:12;13412:13;13439:19;13450:7;13439:10;:19::i;:::-;13237:221;;;;;;;;;;;;13487:28;13507:7;13487;:15;13495:6;13487:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;13469:7;:15;13477:6;13469:15;;;;;;;;;;;;;;;:46;;;;13547:39;13570:15;13547:7;:18;13555:9;13547:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;13526:7;:18;13534:9;13526:18;;;;;;;;;;;;;;;:60;;;;13597:16;13607:5;13597:9;:16::i;:::-;13624:23;13636:4;13642;13624:11;:23::i;:::-;13680:9;13663:44;;13672:6;13663:44;;;13691:15;13663:44;;;;;;:::i;:::-;;;;;;;;13226:489;;;;;;13105:610;;;:::o;8723:117::-;8779:17;;8767:9;:29;;;;8817:15;;8807:7;:25;;;;8723:117::o;15948:257::-;15999:7;16008;16028:15;16046:7;;16028:25;;16064:15;4723:19;16064:25;;16114:20;4723:19;16114:7;;:11;;:20;;;;:::i;:::-;16104:7;:30;16100:61;;;16144:7;;4723:19;16136:25;;;;;;;;16100:61;16180:7;16189;16172:25;;;;;;15948:257;;;:::o;3058:223::-;3178:7;3210:1;3206;:5;3213:12;3198:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3237:9;3253:1;3249;:5;;;;:::i;:::-;3237:17;;3272:1;3265:8;;;3058:223;;;;;:::o;14134:615::-;14234:7;14256;14278;14300;14322;14344;14380:23;14405:12;14419:13;14449:40;14461:7;14470:9;;14481:7;;14449:11;:40::i;:::-;14379:110;;;;;;14500:19;14522:10;:8;:10::i;:::-;14500:32;;14544:15;14561:23;14586:12;14615:46;14627:7;14636:4;14642:5;14649:11;14615;:46::i;:::-;14543:118;;;;;;14680:7;14689:15;14706:4;14712:15;14729:4;14735:5;14672:69;;;;;;;;;;;;;;;;;;;14134:615;;;;;;;:::o;2288:136::-;2346:7;2373:43;2377:1;2380;2373:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2366:50;;2288:136;;;;:::o;2101:179::-;2159:7;2179:9;2195:1;2191;:5;;;;:::i;:::-;2179:17;;2220:1;2215;:6;;2207:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;2271:1;2264:8;;;2101:179;;;;:::o;13723:211::-;13776:19;13798:10;:8;:10::i;:::-;13776:32;;13819:13;13835:22;13845:11;13835:5;:9;;:22;;;;:::i;:::-;13819:38;;13893:33;13920:5;13893:7;:22;13909:4;13893:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;13868:7;:22;13884:4;13868:22;;;;;;;;;;;;;;;:58;;;;13765:169;;13723:211;:::o;13942:147::-;14020:17;14032:4;14020:7;;:11;;:17;;;;:::i;:::-;14010:7;:27;;;;14061:20;14076:4;14061:10;;:14;;:20;;;;:::i;:::-;14048:10;:33;;;;13942:147;;:::o;14757:469::-;14926:7;14948;14970;15005:12;15020:30;15046:3;15020:21;15032:8;15020:7;:11;;:21;;;;:::i;:::-;:25;;:30;;;;:::i;:::-;15005:45;;15061:13;15077:28;15101:3;15077:19;15089:6;15077:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;15061:44;;15116:23;15142:28;15164:5;15142:17;15154:4;15142:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;15116:54;;15189:15;15206:4;15212:5;15181:37;;;;;;;;;14757:469;;;;;;;:::o;15234:534::-;15428:7;15450;15472;15507:15;15525:24;15537:11;15525:7;:11;;:24;;;;:::i;:::-;15507:42;;15560:12;15575:21;15584:11;15575:4;:8;;:21;;;;:::i;:::-;15560:36;;15607:13;15623:22;15633:11;15623:5;:9;;:22;;;;:::i;:::-;15607:38;;15656:23;15682:28;15704:5;15682:17;15694:4;15682:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;15656:54;;15729:7;15738:15;15755:4;15721:39;;;;;;;;;;15234:534;;;;;;;;:::o;2664:246::-;2722:7;2751:1;2746;:6;2742:47;;2776:1;2769:8;;;;2742:47;2799:9;2815:1;2811;:5;;;;:::i;:::-;2799:17;;2844:1;2839;2835;:5;;;;:::i;:::-;:10;2827:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2901:1;2894:8;;;2664: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;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:60::-;3474:3;3495:5;3488:12;;3446:60;;;:::o;3512:142::-;3562:9;3595:53;3613:34;3622:24;3640:5;3622:24;:::i;:::-;3613:34;:::i;:::-;3595:53;:::i;:::-;3582:66;;3512:142;;;:::o;3660:126::-;3710:9;3743:37;3774:5;3743:37;:::i;:::-;3730:50;;3660:126;;;:::o;3792:152::-;3868:9;3901:37;3932:5;3901:37;:::i;:::-;3888:50;;3792:152;;;:::o;3950:183::-;4063:63;4120:5;4063:63;:::i;:::-;4058:3;4051:76;3950:183;;:::o;4139:274::-;4258:4;4296:2;4285:9;4281:18;4273:26;;4309:97;4403:1;4392:9;4388:17;4379:6;4309:97;:::i;:::-;4139:274;;;;:::o;4419:118::-;4506:24;4524:5;4506:24;:::i;:::-;4501:3;4494:37;4419:118;;:::o;4543:222::-;4636:4;4674:2;4663:9;4659:18;4651:26;;4687:71;4755:1;4744:9;4740:17;4731:6;4687:71;:::i;:::-;4543:222;;;;:::o;4771:619::-;4848:6;4856;4864;4913:2;4901:9;4892:7;4888:23;4884:32;4881:119;;;4919:79;;:::i;:::-;4881:119;5039:1;5064:53;5109:7;5100:6;5089:9;5085:22;5064:53;:::i;:::-;5054:63;;5010:117;5166:2;5192:53;5237:7;5228:6;5217:9;5213:22;5192:53;:::i;:::-;5182:63;;5137:118;5294:2;5320:53;5365:7;5356:6;5345:9;5341:22;5320:53;:::i;:::-;5310:63;;5265:118;4771:619;;;;;:::o;5396:::-;5473:6;5481;5489;5538:2;5526:9;5517:7;5513:23;5509:32;5506:119;;;5544:79;;:::i;:::-;5506:119;5664:1;5689:53;5734:7;5725:6;5714:9;5710:22;5689:53;:::i;:::-;5679:63;;5635:117;5791:2;5817:53;5862:7;5853:6;5842:9;5838:22;5817:53;:::i;:::-;5807:63;;5762:118;5919:2;5945:53;5990:7;5981:6;5970:9;5966:22;5945:53;:::i;:::-;5935:63;;5890:118;5396:619;;;;;:::o;6021:86::-;6056:7;6096:4;6089:5;6085:16;6074:27;;6021:86;;;:::o;6113:112::-;6196:22;6212:5;6196:22;:::i;:::-;6191:3;6184:35;6113:112;;:::o;6231:214::-;6320:4;6358:2;6347:9;6343:18;6335:26;;6371:67;6435:1;6424:9;6420:17;6411:6;6371:67;:::i;:::-;6231:214;;;;:::o;6451:118::-;6538:24;6556:5;6538:24;:::i;:::-;6533:3;6526:37;6451:118;;:::o;6575:222::-;6668:4;6706:2;6695:9;6691:18;6683:26;;6719:71;6787:1;6776:9;6772:17;6763:6;6719:71;:::i;:::-;6575:222;;;;:::o;6803:116::-;6873:21;6888:5;6873:21;:::i;:::-;6866:5;6863:32;6853:60;;6909:1;6906;6899:12;6853:60;6803:116;:::o;6925:133::-;6968:5;7006:6;6993:20;6984:29;;7022:30;7046:5;7022:30;:::i;:::-;6925:133;;;;:::o;7064:323::-;7120:6;7169:2;7157:9;7148:7;7144:23;7140:32;7137:119;;;7175:79;;:::i;:::-;7137:119;7295:1;7320:50;7362:7;7353:6;7342:9;7338:22;7320:50;:::i;:::-;7310:60;;7266:114;7064:323;;;;:::o;7393:765::-;7479:6;7487;7495;7503;7552:3;7540:9;7531:7;7527:23;7523:33;7520:120;;;7559:79;;:::i;:::-;7520:120;7679:1;7704:53;7749:7;7740:6;7729:9;7725:22;7704:53;:::i;:::-;7694:63;;7650:117;7806:2;7832:53;7877:7;7868:6;7857:9;7853:22;7832:53;:::i;:::-;7822:63;;7777:118;7934:2;7960:53;8005:7;7996:6;7985:9;7981:22;7960:53;:::i;:::-;7950:63;;7905:118;8062:2;8088:53;8133:7;8124:6;8113:9;8109:22;8088:53;:::i;:::-;8078:63;;8033:118;7393:765;;;;;;;:::o;8164:329::-;8223:6;8272:2;8260:9;8251:7;8247:23;8243:32;8240:119;;;8278:79;;:::i;:::-;8240:119;8398:1;8423:53;8468:7;8459:6;8448:9;8444:22;8423:53;:::i;:::-;8413:63;;8369:117;8164:329;;;;:::o;8499:::-;8558:6;8607:2;8595:9;8586:7;8582:23;8578:32;8575:119;;;8613:79;;:::i;:::-;8575:119;8733:1;8758:53;8803:7;8794:6;8783:9;8779:22;8758:53;:::i;:::-;8748:63;;8704:117;8499:329;;;;:::o;8834:474::-;8902:6;8910;8959:2;8947:9;8938:7;8934:23;8930:32;8927:119;;;8965:79;;:::i;:::-;8927:119;9085:1;9110:53;9155:7;9146:6;9135:9;9131:22;9110:53;:::i;:::-;9100:63;;9056:117;9212:2;9238:53;9283:7;9274:6;9263:9;9259:22;9238:53;:::i;:::-;9228:63;;9183:118;8834:474;;;;;:::o;9314:182::-;9454:34;9450:1;9442:6;9438:14;9431:58;9314:182;:::o;9502:366::-;9644:3;9665:67;9729:2;9724:3;9665:67;:::i;:::-;9658:74;;9741:93;9830:3;9741:93;:::i;:::-;9859:2;9854:3;9850:12;9843:19;;9502:366;;;:::o;9874:419::-;10040:4;10078:2;10067:9;10063:18;10055:26;;10127:9;10121:4;10117:20;10113:1;10102:9;10098:17;10091:47;10155:131;10281:4;10155:131;:::i;:::-;10147:139;;9874:419;;;:::o;10299:161::-;10439:13;10435:1;10427:6;10423:14;10416:37;10299:161;:::o;10466:366::-;10608:3;10629:67;10693:2;10688:3;10629:67;:::i;:::-;10622:74;;10705:93;10794:3;10705:93;:::i;:::-;10823:2;10818:3;10814:12;10807:19;;10466:366;;;:::o;10838:419::-;11004:4;11042:2;11031:9;11027:18;11019:26;;11091:9;11085:4;11081:20;11077:1;11066:9;11062:17;11055:47;11119:131;11245:4;11119:131;:::i;:::-;11111:139;;10838:419;;;:::o;11263:225::-;11403:34;11399:1;11391:6;11387:14;11380:58;11472:8;11467:2;11459:6;11455:15;11448:33;11263:225;:::o;11494:366::-;11636:3;11657:67;11721:2;11716:3;11657:67;:::i;:::-;11650:74;;11733:93;11822:3;11733:93;:::i;:::-;11851:2;11846:3;11842:12;11835:19;;11494:366;;;:::o;11866:419::-;12032:4;12070:2;12059:9;12055:18;12047:26;;12119:9;12113:4;12109:20;12105:1;12094:9;12090:17;12083:47;12147:131;12273:4;12147:131;:::i;:::-;12139:139;;11866:419;;;:::o;12291:223::-;12431:34;12427:1;12419:6;12415:14;12408:58;12500:6;12495:2;12487:6;12483:15;12476:31;12291:223;:::o;12520:366::-;12662:3;12683:67;12747:2;12742:3;12683:67;:::i;:::-;12676:74;;12759:93;12848:3;12759:93;:::i;:::-;12877:2;12872:3;12868:12;12861:19;;12520:366;;;:::o;12892:419::-;13058:4;13096:2;13085:9;13081:18;13073:26;;13145:9;13139:4;13135:20;13131:1;13120:9;13116:17;13109:47;13173:131;13299:4;13173:131;:::i;:::-;13165:139;;12892:419;;;:::o;13317:221::-;13457:34;13453:1;13445:6;13441:14;13434:58;13526:4;13521:2;13513:6;13509:15;13502:29;13317:221;:::o;13544:366::-;13686:3;13707:67;13771:2;13766:3;13707:67;:::i;:::-;13700:74;;13783:93;13872:3;13783:93;:::i;:::-;13901:2;13896:3;13892:12;13885:19;;13544:366;;;:::o;13916:419::-;14082:4;14120:2;14109:9;14105:18;14097:26;;14169:9;14163:4;14159:20;14155:1;14144:9;14140:17;14133:47;14197:131;14323:4;14197:131;:::i;:::-;14189:139;;13916:419;;;:::o;14341:224::-;14481:34;14477:1;14469:6;14465:14;14458:58;14550:7;14545:2;14537:6;14533:15;14526:32;14341:224;:::o;14571:366::-;14713:3;14734:67;14798:2;14793:3;14734:67;:::i;:::-;14727:74;;14810:93;14899:3;14810:93;:::i;:::-;14928:2;14923:3;14919:12;14912:19;;14571:366;;;:::o;14943:419::-;15109:4;15147:2;15136:9;15132:18;15124:26;;15196:9;15190:4;15186:20;15182:1;15171:9;15167:17;15160:47;15224:131;15350:4;15224:131;:::i;:::-;15216:139;;14943:419;;;:::o;15368:222::-;15508:34;15504:1;15496:6;15492:14;15485:58;15577:5;15572:2;15564:6;15560:15;15553:30;15368:222;:::o;15596:366::-;15738:3;15759:67;15823:2;15818:3;15759:67;:::i;:::-;15752:74;;15835:93;15924:3;15835:93;:::i;:::-;15953:2;15948:3;15944:12;15937:19;;15596:366;;;:::o;15968:419::-;16134:4;16172:2;16161:9;16157:18;16149:26;;16221:9;16215:4;16211:20;16207:1;16196:9;16192:17;16185:47;16249:131;16375:4;16249:131;:::i;:::-;16241:139;;15968:419;;;:::o;16393:228::-;16533:34;16529:1;16521:6;16517:14;16510:58;16602:11;16597:2;16589:6;16585:15;16578:36;16393:228;:::o;16627:366::-;16769:3;16790:67;16854:2;16849:3;16790:67;:::i;:::-;16783:74;;16866:93;16955:3;16866:93;:::i;:::-;16984:2;16979:3;16975:12;16968:19;;16627:366;;;:::o;16999:419::-;17165:4;17203:2;17192:9;17188:18;17180:26;;17252:9;17246:4;17242:20;17238:1;17227:9;17223:17;17216:47;17280:131;17406:4;17280:131;:::i;:::-;17272:139;;16999:419;;;:::o;17424:178::-;17564:30;17560:1;17552:6;17548:14;17541:54;17424:178;:::o;17608:366::-;17750:3;17771:67;17835:2;17830:3;17771:67;:::i;:::-;17764:74;;17847:93;17936:3;17847:93;:::i;:::-;17965:2;17960:3;17956:12;17949:19;;17608:366;;;:::o;17980:419::-;18146:4;18184:2;18173:9;18169:18;18161:26;;18233:9;18227:4;18223:20;18219:1;18208:9;18204:17;18197:47;18261:131;18387:4;18261:131;:::i;:::-;18253:139;;17980:419;;;:::o;18405:180::-;18453:77;18450:1;18443:88;18550:4;18547:1;18540:15;18574:4;18571:1;18564:15;18591:191;18631:3;18650:20;18668:1;18650:20;:::i;:::-;18645:25;;18684:20;18702:1;18684:20;:::i;:::-;18679:25;;18727:1;18724;18720:9;18713:16;;18748:3;18745:1;18742:10;18739:36;;;18755:18;;:::i;:::-;18739:36;18591:191;;;;:::o;18788:222::-;18928:34;18924:1;18916:6;18912:14;18905:58;18997:5;18992:2;18984:6;18980:15;18973:30;18788:222;:::o;19016:366::-;19158:3;19179:67;19243:2;19238:3;19179:67;:::i;:::-;19172:74;;19255:93;19344:3;19255:93;:::i;:::-;19373:2;19368:3;19364:12;19357:19;;19016:366;;;:::o;19388:419::-;19554:4;19592:2;19581:9;19577:18;19569:26;;19641:9;19635:4;19631:20;19627:1;19616:9;19612:17;19605:47;19669:131;19795:4;19669:131;:::i;:::-;19661:139;;19388:419;;;:::o;19813:194::-;19853:4;19873:20;19891:1;19873:20;:::i;:::-;19868:25;;19907:20;19925:1;19907:20;:::i;:::-;19902:25;;19951:1;19948;19944:9;19936:17;;19975:1;19969:4;19966:11;19963:37;;;19980:18;;:::i;:::-;19963:37;19813:194;;;;:::o;20013:229::-;20153:34;20149:1;20141:6;20137:14;20130:58;20222:12;20217:2;20209:6;20205:15;20198:37;20013:229;:::o;20248:366::-;20390:3;20411:67;20475:2;20470:3;20411:67;:::i;:::-;20404:74;;20487:93;20576:3;20487:93;:::i;:::-;20605:2;20600:3;20596:12;20589:19;;20248:366;;;:::o;20620:419::-;20786:4;20824:2;20813:9;20809:18;20801:26;;20873:9;20867:4;20863:20;20859:1;20848:9;20844:17;20837:47;20901:131;21027:4;20901:131;:::i;:::-;20893:139;;20620:419;;;:::o;21045:180::-;21093:77;21090:1;21083:88;21190:4;21187:1;21180:15;21214:4;21211:1;21204:15;21231:180;21279:77;21276:1;21269:88;21376:4;21373:1;21366:15;21400:4;21397:1;21390:15;21417:143;21474:5;21505:6;21499:13;21490:22;;21521:33;21548:5;21521:33;:::i;:::-;21417:143;;;;:::o;21566:351::-;21636:6;21685:2;21673:9;21664:7;21660:23;21656:32;21653:119;;;21691:79;;:::i;:::-;21653:119;21811:1;21836:64;21892:7;21883:6;21872:9;21868:22;21836:64;:::i;:::-;21826:74;;21782:128;21566:351;;;;:::o;21923:85::-;21968:7;21997:5;21986:16;;21923:85;;;:::o;22014:158::-;22072:9;22105:61;22123:42;22132:32;22158:5;22132:32;:::i;:::-;22123:42;:::i;:::-;22105:61;:::i;:::-;22092:74;;22014:158;;;:::o;22178:147::-;22273:45;22312:5;22273:45;:::i;:::-;22268:3;22261:58;22178:147;;:::o;22331:114::-;22398:6;22432:5;22426:12;22416:22;;22331:114;;;:::o;22451:184::-;22550:11;22584:6;22579:3;22572:19;22624:4;22619:3;22615:14;22600:29;;22451:184;;;;:::o;22641:132::-;22708:4;22731:3;22723:11;;22761:4;22756:3;22752:14;22744:22;;22641:132;;;:::o;22779:108::-;22856:24;22874:5;22856:24;:::i;:::-;22851:3;22844:37;22779:108;;:::o;22893:179::-;22962:10;22983:46;23025:3;23017:6;22983:46;:::i;:::-;23061:4;23056:3;23052:14;23038:28;;22893:179;;;;:::o;23078:113::-;23148:4;23180;23175:3;23171:14;23163:22;;23078:113;;;:::o;23227:732::-;23346:3;23375:54;23423:5;23375:54;:::i;:::-;23445:86;23524:6;23519:3;23445:86;:::i;:::-;23438:93;;23555:56;23605:5;23555:56;:::i;:::-;23634:7;23665:1;23650:284;23675:6;23672:1;23669:13;23650:284;;;23751:6;23745:13;23778:63;23837:3;23822:13;23778:63;:::i;:::-;23771:70;;23864:60;23917:6;23864:60;:::i;:::-;23854:70;;23710:224;23697:1;23694;23690:9;23685:14;;23650:284;;;23654:14;23950:3;23943:10;;23351:608;;;23227:732;;;;:::o;23965:831::-;24228:4;24266:3;24255:9;24251:19;24243:27;;24280:71;24348:1;24337:9;24333:17;24324:6;24280:71;:::i;:::-;24361:80;24437:2;24426:9;24422:18;24413:6;24361:80;:::i;:::-;24488:9;24482:4;24478:20;24473:2;24462:9;24458:18;24451:48;24516:108;24619:4;24610:6;24516:108;:::i;:::-;24508:116;;24634:72;24702:2;24691:9;24687:18;24678:6;24634:72;:::i;:::-;24716:73;24784:3;24773:9;24769:19;24760:6;24716:73;:::i;:::-;23965:831;;;;;;;;:::o;24802:180::-;24850:77;24847:1;24840:88;24947:4;24944:1;24937:15;24971:4;24968:1;24961:15;24988:185;25028:1;25045:20;25063:1;25045:20;:::i;:::-;25040:25;;25079:20;25097:1;25079:20;:::i;:::-;25074:25;;25118:1;25108:35;;25123:18;;:::i;:::-;25108:35;25165:1;25162;25158:9;25153:14;;24988:185;;;;:::o;25179:177::-;25319:29;25315:1;25307:6;25303:14;25296:53;25179:177;:::o;25362:366::-;25504:3;25525:67;25589:2;25584:3;25525:67;:::i;:::-;25518:74;;25601:93;25690:3;25601:93;:::i;:::-;25719:2;25714:3;25710:12;25703:19;;25362:366;;;:::o;25734:419::-;25900:4;25938:2;25927:9;25923:18;25915:26;;25987:9;25981:4;25977:20;25973:1;25962:9;25958:17;25951:47;26015:131;26141:4;26015:131;:::i;:::-;26007:139;;25734:419;;;:::o;26159:410::-;26199:7;26222:20;26240:1;26222:20;:::i;:::-;26217:25;;26256:20;26274:1;26256:20;:::i;:::-;26251:25;;26311:1;26308;26304:9;26333:30;26351:11;26333:30;:::i;:::-;26322:41;;26512:1;26503:7;26499:15;26496:1;26493:22;26473:1;26466:9;26446:83;26423:139;;26542:18;;:::i;:::-;26423:139;26207:362;26159:410;;;;:::o;26575:220::-;26715:34;26711:1;26703:6;26699:14;26692:58;26784:3;26779:2;26771:6;26767:15;26760:28;26575:220;:::o;26801:366::-;26943:3;26964:67;27028:2;27023:3;26964:67;:::i;:::-;26957:74;;27040:93;27129:3;27040:93;:::i;:::-;27158:2;27153:3;27149:12;27142:19;;26801:366;;;:::o;27173:419::-;27339:4;27377:2;27366:9;27362:18;27354:26;;27426:9;27420:4;27416:20;27412:1;27401:9;27397:17;27390:47;27454:131;27580:4;27454:131;:::i;:::-;27446:139;;27173:419;;;:::o

Swarm Source

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