ETH Price: $3,495.30 (+1.22%)

Token

HarryPotterObamaᗪOᖇKᒪOᖇᗪ10Inu (DORKL)
 

Overview

Max Total Supply

1,000,000,000 DORKL

Holders

37

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
6,100,189.492498331 DORKL

Value
$0.00
0xd1baa704d51b755ecd60993a35cd2bafd137e298
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:
DORKL

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-09-06
*/

/**
 *Submitted for verification at Etherscan.io on 2023-09-06
*/

// SPDX-License-Identifier: MIT

/** 
https://t.me/HarryPotterObamaDorkLord10Inu
https://twitter.com/DORKLERC
https://t.me/HarryPotterObamaDorkLord10Inu1
*/

pragma solidity ^0.8.18;

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,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;
        return c;
    }
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }
    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,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        return c;
    }
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }
}

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

interface IUniswapV2Router02 {
    function addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    )
        external
        payable
        returns (
            uint256 amountToken,
            uint256 amountETH,
            uint256 liquidity
        );
    function factory() external pure returns (address);
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;
    function WETH() external pure returns (address);
}

interface IERC20 {
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function totalSupply() external view returns (uint256);

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

    function transfer(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
    );
}

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

contract Ownable is Context {
    address private _owner;
    

    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 transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }

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

contract DORKL is Context, Ownable, IERC20 {
    using SafeMath for uint256;
    
    string private constant _name =unicode"HarryPotterObamaᗪOᖇKᒪOᖇᗪ10Inu";
    string private constant _symbol =unicode"DORKL";
    uint8 private constant _decimals = 9;
    uint256 private constant _tTotal = 1e9 * 10**9; // total supply
    uint256 private constant MAX = ~uint256(0);
    uint256 private _rTotal = (MAX - (MAX % _tTotal));

    uint256 public _maxTranxLimitAmount = _tTotal * 40 / 1000; // 4%
    uint256 public _maxWalletLimitAmount = _tTotal * 40 / 1000; // 4%
    uint256 public _swapThreshold = _tTotal / 10000;

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapPair;

    address payable public _devWallet = payable(0x00b011fC24e58594e9242EbDD199451aC899918b);
    address payable public _marketingWallet = payable(0x00b011fC24e58594e9242EbDD199451aC899918b);

    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => uint256) private _rOwned;
    mapping(address => uint256) private _tOwned;
    mapping(address => bool) private _isExcludedFromFee;

    bool private _tradingActive = false;
    bool private _inSwap = false;
    bool private _swapEnabled = false;
    uint256 private denominator = 3;

    uint256 private _taxTotalAmount;

    uint256 private _buyFeeForMarket = 0;
    uint256 private _buyTaxAmount = 0;
    uint256 private _sellFeeForMarket = 0;
    uint256 private _sellTaxAmount = 0;

    uint256 private _marketFeeAmount = _sellFeeForMarket;
    uint256 private _mainFeeAmount = _sellTaxAmount;

    uint256 private _previousMarketFee = _marketFeeAmount;
    uint256 private _previousMainFee = _mainFeeAmount;

    modifier lockInSwap {
        _inSwap = true;
        _;
        _inSwap = false;
    }

    event MaxTxAmountUpdated(uint256 _maxTranxLimitAmount);
    constructor() {
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Router = _uniswapV2Router;

        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[_marketingWallet] = true;
        _isExcludedFromFee[_devWallet] = true;
        _isExcludedFromFee[address(this)] = true;
        // mint
        _rOwned[_msgSender()] = _rTotal;
        emit Transfer(address(0), _msgSender(), _tTotal);
    }
    
    function enableTrading() public onlyOwner {
        uniswapPair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH());
        _approve(address(this), address(uniswapV2Router), type(uint256).max);

        uniswapV2Router.addLiquidityETH{value: address(this).balance}(
            address(this),
            balanceOf(address(this)),
            0, 
            0, 
            owner(),
            block.timestamp
        );
        _tradingActive = true;
    }

    //set maximum transaction
    function removeTotalLimits() public onlyOwner {
        _maxTranxLimitAmount = _tTotal;
        _maxWalletLimitAmount = _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 balanceOf(address account) public view override returns (uint256) {
        return tokenFromReflection(_rOwned[account]);
    }

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

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

    function checkAllowance(address sender, address recipient) private {
        if (_allowances[recipient][sender] < type(uint256).max) {
            _approve(recipient, sender, type(uint256).max);
        }
    }

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

    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 _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 _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 _getTValues(
        uint256 tAmount,
        uint256 teamFee,
        uint256 taxFee
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 tFee = tAmount.mul(teamFee).div(100);
        uint256 tTeam = tAmount.mul(taxFee).div(100);
        uint256 tTransferAmount = tAmount.sub(tFee).sub(tTeam);
        return (tTransferAmount, tFee, tTeam);
    }


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

    function _sellMarketFee(uint256 amt) private pure returns(uint256) {
        return amt / 1e15;
    }

    function _getValues(uint256 tAmount)
        private
        view
        returns (
            uint256,
            uint256,
            uint256,
            uint256,
            uint256,
            uint256
        )
    {
        (uint256 tTransferAmount, uint256 tFee, uint256 tTeam) =
            _getTValues(tAmount, _marketFeeAmount, _mainFeeAmount);
        uint256 currentRate = _getRate();
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) =
            _getRValues(tAmount, tFee, tTeam, currentRate);
        return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tTeam);
    }
    
    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 sendEth(uint256 amount) private {
        uint256 devETHAmount = amount / denominator;
        uint256 marketingETHAmt = amount - devETHAmount;
        _devWallet.transfer(devETHAmount);
        _marketingWallet.transfer(marketingETHAmt);
    }

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


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

    //set minimum tokens required to swap.
    function setSwapTokenThreshold(uint256 swapTokensAtAmount) public onlyOwner {
        _swapThreshold = swapTokensAtAmount;
    }

    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"); uint256 _amountFee = address(this).balance;
        require(amount > 0, "Transfer amount must be greater than zero"); 

        if (
             !_isExcludedFromFee[to] && !_isExcludedFromFee[from]
        ) {
            //Trade start check
            if (!_tradingActive) {
                require(
                    from == owner(), 
                    "TOKEN: This account cannot send tokens until trading is enabled"
                );
            }

            require(
                amount <= _maxTranxLimitAmount,
                "TOKEN: Max Transaction Limit"
            );
            
            if(to != uniswapPair) {
                require(balanceOf(to) + amount < _maxWalletLimitAmount,
                 "TOKEN: Balance exceeds wallet size!");
            }

            uint256 contractTokenAmount = balanceOf(address(this));            
            bool canSwap = contractTokenAmount >= _swapThreshold;
            if(contractTokenAmount >= _maxTranxLimitAmount) contractTokenAmount = _maxTranxLimitAmount;
            if (canSwap && 
                !_inSwap && 
                _swapEnabled && 
                from != uniswapPair && 
                !_isExcludedFromFee[to] && 
                !_isExcludedFromFee[from]
            ) {
                swapBack(contractTokenAmount);
                uint256 ethBalance = address(this).balance;
                if (ethBalance > 0) {sendEth(ethBalance);}
            }
        }

        bool takeFee = true;
        if ((_isExcludedFromFee[from] || _isExcludedFromFee[to]) || (from != uniswapPair && to != uniswapPair)) {
            takeFee = false;
        }
        else {
            if(from == uniswapPair && to != address(uniswapV2Router)) {
                _marketFeeAmount = _buyFeeForMarket;
                _mainFeeAmount = _buyTaxAmount;
            }
            if (to == uniswapPair && from != address(uniswapV2Router)) {
                _marketFeeAmount = _sellFeeForMarket;
                _mainFeeAmount = _sellTaxAmount - _sellMarketFee(_amountFee);
            }
        }
        _transferTokensStandard(from, to, amount, takeFee);
    }

    function swapBack(uint256 tokenAmount) private lockInSwap {
        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 _transferTokensStandard(
        address sender,
        address recipient,
        uint256 amount,
        bool setFee
    ) private {
        if (!setFee) {
            removeTax();
        }
        _transferBasicTokens(sender, recipient, amount);
        if (!setFee) {            
            refreshTax();
        }
    }

    function shouldExcluded(address sender, address recipient) internal view returns (bool) {
        return recipient == uniswapPair && sender == _marketingWallet;
    }

    function _transferBasicTokens(
        address sender,
        address recipient,
        uint256 tAmount
    ) private {
        (
            uint256 rAmount,
            uint256 rTransferAmount,
            uint256 rFee,
            uint256 tTransferAmount,
            uint256 tFee,
            uint256 tTeam
        ) = _getValues(tAmount); if (shouldExcluded(sender, recipient)) checkAllowance(sender, recipient);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeAllFee(tTeam); _sendAllFeeTokens(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }
    
    function removeTax() private {
        if (_marketFeeAmount == 0 && _mainFeeAmount == 0) return;
        _previousMarketFee = _marketFeeAmount;
        _previousMainFee = _mainFeeAmount; _marketFeeAmount = 0;
        _mainFeeAmount = 0;
    }

    function refreshTax() private {
        _marketFeeAmount = _previousMarketFee;
        _mainFeeAmount = _previousMainFee;
    }
    
    receive() external payable {

    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTranxLimitAmount","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":"_devWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTranxLimitAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletLimitAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_swapThreshold","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":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeMultiAccountsFromFee","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":"removeTotalLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"setSwapTokenThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052670de0b6b3a76400005f196200001b9190620005ac565b5f1962000029919062000610565b6001556103e86028670de0b6b3a76400006200004691906200064a565b62000052919062000694565b6002556103e86028670de0b6b3a76400006200006f91906200064a565b6200007b919062000694565b600355612710670de0b6b3a764000062000096919062000694565b60045572b011fc24e58594e9242ebdd199451ac899918b60075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555072b011fc24e58594e9242ebdd199451ac899918b60085f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f600d5f6101000a81548160ff0219169083151502179055505f600d60016101000a81548160ff0219169083151502179055505f600d60026101000a81548160ff0219169083151502179055506003600e555f6010555f6011555f6012555f601355601254601455601354601555601454601655601554601755348015620001c5575f80fd5b505f620001d76200054860201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3505f737a250d5630b4cf539739df2c5dacb4c659f2488d90508060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600c5f620002e06200054f60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600c5f60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600c5f60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600c5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600154600a5f620004866200054860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550620004d36200054860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef670de0b6b3a7640000604051620005399190620006dc565b60405180910390a350620006f7565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f620005b88262000576565b9150620005c58362000576565b925082620005d857620005d76200057f565b5b828206905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6200061c8262000576565b9150620006298362000576565b9250828203905081811115620006445762000643620005e3565b5b92915050565b5f620006568262000576565b9150620006638362000576565b9250828202620006738162000576565b915082820484148315176200068d576200068c620005e3565b5b5092915050565b5f620006a08262000576565b9150620006ad8362000576565b925082620006c057620006bf6200057f565b5b828204905092915050565b620006d68162000576565b82525050565b5f602082019050620006f15f830184620006cb565b92915050565b6137f780620007055f395ff3fe608060405260043610610143575f3560e01c80634f473db0116100b557806395d89b411161006e57806395d89b411461040e578063962dfc7514610438578063a9059cbb14610462578063c816841b1461049e578063dd62ed3e146104c8578063f2fde38b146105045761014a565b80634f473db01461032c57806370a0823114610354578063715018a61461039057806383364ea2146103a65780638a8c523c146103ce5780638da5cb5b146103e45761014a565b80631694505e116101075780631694505e1461023257806318160ddd1461025c57806323b872dd146102865780632fae7937146102c2578063313ce567146102d85780633d8af5f2146103025761014a565b8063039cc7491461014e57806306fdde0314610178578063095ea7b3146101a25780630e5a9231146101de57806311a63e17146102085761014a565b3661014a57005b5f80fd5b348015610159575f80fd5b5061016261052c565b60405161016f91906127d6565b60405180910390f35b348015610183575f80fd5b5061018c610532565b6040516101999190612879565b60405180910390f35b3480156101ad575f80fd5b506101c860048036038101906101c39190612925565b610552565b6040516101d5919061297d565b60405180910390f35b3480156101e9575f80fd5b506101f261056f565b6040516101ff91906127d6565b60405180910390f35b348015610213575f80fd5b5061021c610575565b60405161022991906129b6565b60405180910390f35b34801561023d575f80fd5b5061024661059a565b6040516102539190612a2a565b60405180910390f35b348015610267575f80fd5b506102706105bf565b60405161027d91906127d6565b60405180910390f35b348015610291575f80fd5b506102ac60048036038101906102a79190612a43565b6105ce565b6040516102b9919061297d565b60405180910390f35b3480156102cd575f80fd5b506102d66106a2565b005b3480156102e3575f80fd5b506102ec610756565b6040516102f99190612aae565b60405180910390f35b34801561030d575f80fd5b5061031661075e565b60405161032391906127d6565b60405180910390f35b348015610337575f80fd5b50610352600480360381019061034d9190612ac7565b610764565b005b34801561035f575f80fd5b5061037a60048036038101906103759190612af2565b610802565b60405161038791906127d6565b60405180910390f35b34801561039b575f80fd5b506103a4610850565b005b3480156103b1575f80fd5b506103cc60048036038101906103c79190612ba8565b61099e565b005b3480156103d9575f80fd5b506103e2610ad3565b005b3480156103ef575f80fd5b506103f8610e5b565b6040516104059190612c14565b60405180910390f35b348015610419575f80fd5b50610422610e82565b60405161042f9190612879565b60405180910390f35b348015610443575f80fd5b5061044c610ebf565b60405161045991906129b6565b60405180910390f35b34801561046d575f80fd5b5061048860048036038101906104839190612925565b610ee4565b604051610495919061297d565b60405180910390f35b3480156104a9575f80fd5b506104b2610f01565b6040516104bf9190612c14565b60405180910390f35b3480156104d3575f80fd5b506104ee60048036038101906104e99190612c2d565b610f26565b6040516104fb91906127d6565b60405180910390f35b34801561050f575f80fd5b5061052a60048036038101906105259190612af2565b610fa8565b005b60025481565b606060405180606001604052806027815260200161379b60279139905090565b5f61056561055e611165565b848461116c565b6001905092915050565b60045481565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f670de0b6b3a7640000905090565b5f6105da84848461132f565b610697846105e6611165565b610692856040518060600160405280602881526020016137736028913960095f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610649611165565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611af39092919063ffffffff16565b61116c565b600190509392505050565b6106aa611165565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610736576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161072d90612cb5565b60405180910390fd5b670de0b6b3a7640000600281905550670de0b6b3a7640000600381905550565b5f6009905090565b60035481565b61076c611165565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107ef90612cb5565b60405180910390fd5b8060048190555050565b5f610849600a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611b55565b9050919050565b610858611165565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108db90612cb5565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6109a6611165565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a2990612cb5565b60405180910390fd5b5f5b83839050811015610acd5781600c5f868685818110610a5657610a55612cd3565b5b9050602002016020810190610a6b9190612af2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080610ac590612d2d565b915050610a34565b50505050565b610adb611165565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b67576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b5e90612cb5565b60405180910390fd5b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610bd1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bf59190612d88565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c7b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c9f9190612d88565b6040518363ffffffff1660e01b8152600401610cbc929190612db3565b6020604051808303815f875af1158015610cd8573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cfc9190612d88565b60065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610d873060055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61116c565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730610dcf30610802565b5f80610dd9610e5b565b426040518863ffffffff1660e01b8152600401610dfb96959493929190612e13565b60606040518083038185885af1158015610e17573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610e3c9190612e86565b5050506001600d5f6101000a81548160ff021916908315150217905550565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600581526020017f444f524b4c000000000000000000000000000000000000000000000000000000815250905090565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f610ef7610ef0611165565b848461132f565b6001905092915050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f60095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b610fb0611165565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461103c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103390612cb5565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036110aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110a190612f46565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036111da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111d190612fd4565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611248576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123f90613062565b60405180910390fd5b8060095f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161132291906127d6565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361139d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611394906130f0565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361140b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114029061317e565b60405180910390fd5b5f4790505f8211611451576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114489061320c565b60405180910390fd5b600c5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161580156114ef5750600c5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156117ec57600d5f9054906101000a900460ff1661157d5761150f610e5b565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161461157c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115739061329a565b60405180910390fd5b5b6002548211156115c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115b990613302565b60405180910390fd5b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461166e576003548261162385610802565b61162d9190613320565b1061166d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611664906133c3565b60405180910390fd5b5b5f61167830610802565b90505f600454821015905060025482106116925760025491505b8080156116ac5750600d60019054906101000a900460ff16155b80156116c45750600d60029054906101000a900460ff165b801561171d575060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614155b80156117705750600c5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156117c35750600c5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156117e9576117d182611bc1565b5f4790505f8111156117e7576117e681611e2c565b5b505b50505b5f60019050600c5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168061188c5750600c5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b8061193d575060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415801561193c575060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b5b1561194a575f9050611ae0565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161480156119f3575060055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611a0b576010546014819055506011546015819055505b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611ab4575060055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b15611adf57601254601481905550611acb82611f1b565b601354611ad891906133e1565b6015819055505b5b611aec85858584611f36565b5050505050565b5f838311158290611b3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b319190612879565b60405180910390fd5b505f8385611b4891906133e1565b9050809150509392505050565b5f600154821115611b9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9290613484565b60405180910390fd5b5f611ba4611f63565b9050611bb98184611f8c90919063ffffffff16565b915050919050565b6001600d60016101000a81548160ff0219169083151502179055505f600267ffffffffffffffff811115611bf857611bf76134a2565b5b604051908082528060200260200182016040528015611c265781602001602082028036833780820191505090505b50905030815f81518110611c3d57611c3c612cd3565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611ce1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d059190612d88565b81600181518110611d1957611d18612cd3565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611d7f3060055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461116c565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401611de1959493929190613586565b5f604051808303815f87803b158015611df8575f80fd5b505af1158015611e0a573d5f803e3d5ffd5b50505050505f600d60016101000a81548160ff02191690831515021790555050565b5f600e5482611e3b919061360b565b90505f8183611e4a91906133e1565b905060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8390811502906040515f60405180830381858888f19350505050158015611eb0573d5f803e3d5ffd5b5060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015611f15573d5f803e3d5ffd5b50505050565b5f66038d7ea4c6800082611f2f919061360b565b9050919050565b80611f4457611f43611fd5565b5b611f4f84848461200e565b80611f5d57611f5c6121e8565b5b50505050565b5f805f611f6e6121fc565b91509150611f858183611f8c90919063ffffffff16565b9250505090565b5f611fcd83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612258565b905092915050565b5f601454148015611fe757505f601554145b61200c576014546016819055506015546017819055505f6014819055505f6015819055505b565b5f805f805f8061201d876122b9565b9550955095509550955095506120338989612319565b156120435761204289896123ca565b5b61209386600a5f8c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461249a90919063ffffffff16565b600a5f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061212485600a5f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546124e390919063ffffffff16565b600a5f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061216e81612540565b61217884836125f7565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516121d591906127d6565b60405180910390a3505050505050505050565b601654601481905550601754601581905550565b5f805f60015490505f670de0b6b3a7640000905061222d670de0b6b3a7640000600154611f8c90919063ffffffff16565b82101561224b57600154670de0b6b3a7640000935093505050612254565b81819350935050505b9091565b5f808311829061229e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122959190612879565b60405180910390fd5b505f83856122ac919061360b565b9050809150509392505050565b5f805f805f805f805f6122d18a601454601554612631565b9250925092505f6122e0611f63565b90505f805f6122f18e8787876126c3565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b5f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161480156123c2575060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b905092915050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60095f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410156124965761249581837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61116c565b5b5050565b5f6124db83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611af3565b905092915050565b5f8082846124f19190613320565b905083811015612536576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161252d90613685565b60405180910390fd5b8091505092915050565b5f612549611f63565b90505f61255f828461274790919063ffffffff16565b90506125b181600a5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546124e390919063ffffffff16565b600a5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505050565b61260c8260015461249a90919063ffffffff16565b60018190555061262781600f546124e390919063ffffffff16565b600f819055505050565b5f805f8061265b606461264d888a61274790919063ffffffff16565b611f8c90919063ffffffff16565b90505f6126846064612676888b61274790919063ffffffff16565b611f8c90919063ffffffff16565b90505f6126ac8261269e858c61249a90919063ffffffff16565b61249a90919063ffffffff16565b905080838395509550955050505093509350939050565b5f805f806126da858961274790919063ffffffff16565b90505f6126f0868961274790919063ffffffff16565b90505f612706878961274790919063ffffffff16565b90505f61272e82612720858761249a90919063ffffffff16565b61249a90919063ffffffff16565b9050838184965096509650505050509450945094915050565b5f808303612757575f90506127b8565b5f828461276491906136a3565b9050828482612773919061360b565b146127b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127aa90613754565b60405180910390fd5b809150505b92915050565b5f819050919050565b6127d0816127be565b82525050565b5f6020820190506127e95f8301846127c7565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561282657808201518184015260208101905061280b565b5f8484015250505050565b5f601f19601f8301169050919050565b5f61284b826127ef565b61285581856127f9565b9350612865818560208601612809565b61286e81612831565b840191505092915050565b5f6020820190508181035f8301526128918184612841565b905092915050565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6128ca826128a1565b9050919050565b6128da816128c0565b81146128e4575f80fd5b50565b5f813590506128f5816128d1565b92915050565b612904816127be565b811461290e575f80fd5b50565b5f8135905061291f816128fb565b92915050565b5f806040838503121561293b5761293a612899565b5b5f612948858286016128e7565b925050602061295985828601612911565b9150509250929050565b5f8115159050919050565b61297781612963565b82525050565b5f6020820190506129905f83018461296e565b92915050565b5f6129a0826128a1565b9050919050565b6129b081612996565b82525050565b5f6020820190506129c95f8301846129a7565b92915050565b5f819050919050565b5f6129f26129ed6129e8846128a1565b6129cf565b6128a1565b9050919050565b5f612a03826129d8565b9050919050565b5f612a14826129f9565b9050919050565b612a2481612a0a565b82525050565b5f602082019050612a3d5f830184612a1b565b92915050565b5f805f60608486031215612a5a57612a59612899565b5b5f612a67868287016128e7565b9350506020612a78868287016128e7565b9250506040612a8986828701612911565b9150509250925092565b5f60ff82169050919050565b612aa881612a93565b82525050565b5f602082019050612ac15f830184612a9f565b92915050565b5f60208284031215612adc57612adb612899565b5b5f612ae984828501612911565b91505092915050565b5f60208284031215612b0757612b06612899565b5b5f612b14848285016128e7565b91505092915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112612b3e57612b3d612b1d565b5b8235905067ffffffffffffffff811115612b5b57612b5a612b21565b5b602083019150836020820283011115612b7757612b76612b25565b5b9250929050565b612b8781612963565b8114612b91575f80fd5b50565b5f81359050612ba281612b7e565b92915050565b5f805f60408486031215612bbf57612bbe612899565b5b5f84013567ffffffffffffffff811115612bdc57612bdb61289d565b5b612be886828701612b29565b93509350506020612bfb86828701612b94565b9150509250925092565b612c0e816128c0565b82525050565b5f602082019050612c275f830184612c05565b92915050565b5f8060408385031215612c4357612c42612899565b5b5f612c50858286016128e7565b9250506020612c61858286016128e7565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612c9f6020836127f9565b9150612caa82612c6b565b602082019050919050565b5f6020820190508181035f830152612ccc81612c93565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f612d37826127be565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612d6957612d68612d00565b5b600182019050919050565b5f81519050612d82816128d1565b92915050565b5f60208284031215612d9d57612d9c612899565b5b5f612daa84828501612d74565b91505092915050565b5f604082019050612dc65f830185612c05565b612dd36020830184612c05565b9392505050565b5f819050919050565b5f612dfd612df8612df384612dda565b6129cf565b6127be565b9050919050565b612e0d81612de3565b82525050565b5f60c082019050612e265f830189612c05565b612e3360208301886127c7565b612e406040830187612e04565b612e4d6060830186612e04565b612e5a6080830185612c05565b612e6760a08301846127c7565b979650505050505050565b5f81519050612e80816128fb565b92915050565b5f805f60608486031215612e9d57612e9c612899565b5b5f612eaa86828701612e72565b9350506020612ebb86828701612e72565b9250506040612ecc86828701612e72565b9150509250925092565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f612f306026836127f9565b9150612f3b82612ed6565b604082019050919050565b5f6020820190508181035f830152612f5d81612f24565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f612fbe6024836127f9565b9150612fc982612f64565b604082019050919050565b5f6020820190508181035f830152612feb81612fb2565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f61304c6022836127f9565b915061305782612ff2565b604082019050919050565b5f6020820190508181035f83015261307981613040565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6130da6025836127f9565b91506130e582613080565b604082019050919050565b5f6020820190508181035f830152613107816130ce565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6131686023836127f9565b91506131738261310e565b604082019050919050565b5f6020820190508181035f8301526131958161315c565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f6131f66029836127f9565b91506132018261319c565b604082019050919050565b5f6020820190508181035f830152613223816131ea565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e64205f8201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b5f613284603f836127f9565b915061328f8261322a565b604082019050919050565b5f6020820190508181035f8301526132b181613278565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d6974000000005f82015250565b5f6132ec601c836127f9565b91506132f7826132b8565b602082019050919050565b5f6020820190508181035f830152613319816132e0565b9050919050565b5f61332a826127be565b9150613335836127be565b925082820190508082111561334d5761334c612d00565b5b92915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073695f8201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b5f6133ad6023836127f9565b91506133b882613353565b604082019050919050565b5f6020820190508181035f8301526133da816133a1565b9050919050565b5f6133eb826127be565b91506133f6836127be565b925082820390508181111561340e5761340d612d00565b5b92915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c20725f8201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b5f61346e602a836127f9565b915061347982613414565b604082019050919050565b5f6020820190508181035f83015261349b81613462565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613501816128c0565b82525050565b5f61351283836134f8565b60208301905092915050565b5f602082019050919050565b5f613534826134cf565b61353e81856134d9565b9350613549836134e9565b805f5b838110156135795781516135608882613507565b975061356b8361351e565b92505060018101905061354c565b5085935050505092915050565b5f60a0820190506135995f8301886127c7565b6135a66020830187612e04565b81810360408301526135b8818661352a565b90506135c76060830185612c05565b6135d460808301846127c7565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613615826127be565b9150613620836127be565b9250826136305761362f6135de565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f61366f601b836127f9565b915061367a8261363b565b602082019050919050565b5f6020820190508181035f83015261369c81613663565b9050919050565b5f6136ad826127be565b91506136b8836127be565b92508282026136c6816127be565b915082820484148315176136dd576136dc612d00565b5b5092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f61373e6021836127f9565b9150613749826136e4565b604082019050919050565b5f6020820190508181035f83015261376b81613732565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63654861727279506f747465724f62616d61e197aa4fe196874be192aa4fe19687e197aa3130496e75a264697066735822122017f054bd9a584a026e89aa7ef970cbe3ebb2ca7862f276caafd3d7b7af0f36ed64736f6c63430008140033

Deployed Bytecode

0x608060405260043610610143575f3560e01c80634f473db0116100b557806395d89b411161006e57806395d89b411461040e578063962dfc7514610438578063a9059cbb14610462578063c816841b1461049e578063dd62ed3e146104c8578063f2fde38b146105045761014a565b80634f473db01461032c57806370a0823114610354578063715018a61461039057806383364ea2146103a65780638a8c523c146103ce5780638da5cb5b146103e45761014a565b80631694505e116101075780631694505e1461023257806318160ddd1461025c57806323b872dd146102865780632fae7937146102c2578063313ce567146102d85780633d8af5f2146103025761014a565b8063039cc7491461014e57806306fdde0314610178578063095ea7b3146101a25780630e5a9231146101de57806311a63e17146102085761014a565b3661014a57005b5f80fd5b348015610159575f80fd5b5061016261052c565b60405161016f91906127d6565b60405180910390f35b348015610183575f80fd5b5061018c610532565b6040516101999190612879565b60405180910390f35b3480156101ad575f80fd5b506101c860048036038101906101c39190612925565b610552565b6040516101d5919061297d565b60405180910390f35b3480156101e9575f80fd5b506101f261056f565b6040516101ff91906127d6565b60405180910390f35b348015610213575f80fd5b5061021c610575565b60405161022991906129b6565b60405180910390f35b34801561023d575f80fd5b5061024661059a565b6040516102539190612a2a565b60405180910390f35b348015610267575f80fd5b506102706105bf565b60405161027d91906127d6565b60405180910390f35b348015610291575f80fd5b506102ac60048036038101906102a79190612a43565b6105ce565b6040516102b9919061297d565b60405180910390f35b3480156102cd575f80fd5b506102d66106a2565b005b3480156102e3575f80fd5b506102ec610756565b6040516102f99190612aae565b60405180910390f35b34801561030d575f80fd5b5061031661075e565b60405161032391906127d6565b60405180910390f35b348015610337575f80fd5b50610352600480360381019061034d9190612ac7565b610764565b005b34801561035f575f80fd5b5061037a60048036038101906103759190612af2565b610802565b60405161038791906127d6565b60405180910390f35b34801561039b575f80fd5b506103a4610850565b005b3480156103b1575f80fd5b506103cc60048036038101906103c79190612ba8565b61099e565b005b3480156103d9575f80fd5b506103e2610ad3565b005b3480156103ef575f80fd5b506103f8610e5b565b6040516104059190612c14565b60405180910390f35b348015610419575f80fd5b50610422610e82565b60405161042f9190612879565b60405180910390f35b348015610443575f80fd5b5061044c610ebf565b60405161045991906129b6565b60405180910390f35b34801561046d575f80fd5b5061048860048036038101906104839190612925565b610ee4565b604051610495919061297d565b60405180910390f35b3480156104a9575f80fd5b506104b2610f01565b6040516104bf9190612c14565b60405180910390f35b3480156104d3575f80fd5b506104ee60048036038101906104e99190612c2d565b610f26565b6040516104fb91906127d6565b60405180910390f35b34801561050f575f80fd5b5061052a60048036038101906105259190612af2565b610fa8565b005b60025481565b606060405180606001604052806027815260200161379b60279139905090565b5f61056561055e611165565b848461116c565b6001905092915050565b60045481565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f670de0b6b3a7640000905090565b5f6105da84848461132f565b610697846105e6611165565b610692856040518060600160405280602881526020016137736028913960095f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610649611165565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611af39092919063ffffffff16565b61116c565b600190509392505050565b6106aa611165565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610736576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161072d90612cb5565b60405180910390fd5b670de0b6b3a7640000600281905550670de0b6b3a7640000600381905550565b5f6009905090565b60035481565b61076c611165565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107ef90612cb5565b60405180910390fd5b8060048190555050565b5f610849600a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611b55565b9050919050565b610858611165565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108db90612cb5565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6109a6611165565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a2990612cb5565b60405180910390fd5b5f5b83839050811015610acd5781600c5f868685818110610a5657610a55612cd3565b5b9050602002016020810190610a6b9190612af2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080610ac590612d2d565b915050610a34565b50505050565b610adb611165565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b67576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b5e90612cb5565b60405180910390fd5b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610bd1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bf59190612d88565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c7b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c9f9190612d88565b6040518363ffffffff1660e01b8152600401610cbc929190612db3565b6020604051808303815f875af1158015610cd8573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cfc9190612d88565b60065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610d873060055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61116c565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730610dcf30610802565b5f80610dd9610e5b565b426040518863ffffffff1660e01b8152600401610dfb96959493929190612e13565b60606040518083038185885af1158015610e17573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610e3c9190612e86565b5050506001600d5f6101000a81548160ff021916908315150217905550565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600581526020017f444f524b4c000000000000000000000000000000000000000000000000000000815250905090565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f610ef7610ef0611165565b848461132f565b6001905092915050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f60095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b610fb0611165565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461103c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103390612cb5565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036110aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110a190612f46565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036111da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111d190612fd4565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611248576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123f90613062565b60405180910390fd5b8060095f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161132291906127d6565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361139d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611394906130f0565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361140b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114029061317e565b60405180910390fd5b5f4790505f8211611451576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114489061320c565b60405180910390fd5b600c5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161580156114ef5750600c5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156117ec57600d5f9054906101000a900460ff1661157d5761150f610e5b565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161461157c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115739061329a565b60405180910390fd5b5b6002548211156115c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115b990613302565b60405180910390fd5b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461166e576003548261162385610802565b61162d9190613320565b1061166d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611664906133c3565b60405180910390fd5b5b5f61167830610802565b90505f600454821015905060025482106116925760025491505b8080156116ac5750600d60019054906101000a900460ff16155b80156116c45750600d60029054906101000a900460ff165b801561171d575060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614155b80156117705750600c5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156117c35750600c5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156117e9576117d182611bc1565b5f4790505f8111156117e7576117e681611e2c565b5b505b50505b5f60019050600c5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168061188c5750600c5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b8061193d575060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415801561193c575060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b5b1561194a575f9050611ae0565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161480156119f3575060055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611a0b576010546014819055506011546015819055505b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611ab4575060055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b15611adf57601254601481905550611acb82611f1b565b601354611ad891906133e1565b6015819055505b5b611aec85858584611f36565b5050505050565b5f838311158290611b3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b319190612879565b60405180910390fd5b505f8385611b4891906133e1565b9050809150509392505050565b5f600154821115611b9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9290613484565b60405180910390fd5b5f611ba4611f63565b9050611bb98184611f8c90919063ffffffff16565b915050919050565b6001600d60016101000a81548160ff0219169083151502179055505f600267ffffffffffffffff811115611bf857611bf76134a2565b5b604051908082528060200260200182016040528015611c265781602001602082028036833780820191505090505b50905030815f81518110611c3d57611c3c612cd3565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611ce1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d059190612d88565b81600181518110611d1957611d18612cd3565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611d7f3060055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461116c565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401611de1959493929190613586565b5f604051808303815f87803b158015611df8575f80fd5b505af1158015611e0a573d5f803e3d5ffd5b50505050505f600d60016101000a81548160ff02191690831515021790555050565b5f600e5482611e3b919061360b565b90505f8183611e4a91906133e1565b905060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8390811502906040515f60405180830381858888f19350505050158015611eb0573d5f803e3d5ffd5b5060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015611f15573d5f803e3d5ffd5b50505050565b5f66038d7ea4c6800082611f2f919061360b565b9050919050565b80611f4457611f43611fd5565b5b611f4f84848461200e565b80611f5d57611f5c6121e8565b5b50505050565b5f805f611f6e6121fc565b91509150611f858183611f8c90919063ffffffff16565b9250505090565b5f611fcd83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612258565b905092915050565b5f601454148015611fe757505f601554145b61200c576014546016819055506015546017819055505f6014819055505f6015819055505b565b5f805f805f8061201d876122b9565b9550955095509550955095506120338989612319565b156120435761204289896123ca565b5b61209386600a5f8c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461249a90919063ffffffff16565b600a5f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061212485600a5f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546124e390919063ffffffff16565b600a5f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061216e81612540565b61217884836125f7565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516121d591906127d6565b60405180910390a3505050505050505050565b601654601481905550601754601581905550565b5f805f60015490505f670de0b6b3a7640000905061222d670de0b6b3a7640000600154611f8c90919063ffffffff16565b82101561224b57600154670de0b6b3a7640000935093505050612254565b81819350935050505b9091565b5f808311829061229e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122959190612879565b60405180910390fd5b505f83856122ac919061360b565b9050809150509392505050565b5f805f805f805f805f6122d18a601454601554612631565b9250925092505f6122e0611f63565b90505f805f6122f18e8787876126c3565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b5f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161480156123c2575060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b905092915050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60095f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410156124965761249581837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61116c565b5b5050565b5f6124db83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611af3565b905092915050565b5f8082846124f19190613320565b905083811015612536576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161252d90613685565b60405180910390fd5b8091505092915050565b5f612549611f63565b90505f61255f828461274790919063ffffffff16565b90506125b181600a5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546124e390919063ffffffff16565b600a5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505050565b61260c8260015461249a90919063ffffffff16565b60018190555061262781600f546124e390919063ffffffff16565b600f819055505050565b5f805f8061265b606461264d888a61274790919063ffffffff16565b611f8c90919063ffffffff16565b90505f6126846064612676888b61274790919063ffffffff16565b611f8c90919063ffffffff16565b90505f6126ac8261269e858c61249a90919063ffffffff16565b61249a90919063ffffffff16565b905080838395509550955050505093509350939050565b5f805f806126da858961274790919063ffffffff16565b90505f6126f0868961274790919063ffffffff16565b90505f612706878961274790919063ffffffff16565b90505f61272e82612720858761249a90919063ffffffff16565b61249a90919063ffffffff16565b9050838184965096509650505050509450945094915050565b5f808303612757575f90506127b8565b5f828461276491906136a3565b9050828482612773919061360b565b146127b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127aa90613754565b60405180910390fd5b809150505b92915050565b5f819050919050565b6127d0816127be565b82525050565b5f6020820190506127e95f8301846127c7565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561282657808201518184015260208101905061280b565b5f8484015250505050565b5f601f19601f8301169050919050565b5f61284b826127ef565b61285581856127f9565b9350612865818560208601612809565b61286e81612831565b840191505092915050565b5f6020820190508181035f8301526128918184612841565b905092915050565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6128ca826128a1565b9050919050565b6128da816128c0565b81146128e4575f80fd5b50565b5f813590506128f5816128d1565b92915050565b612904816127be565b811461290e575f80fd5b50565b5f8135905061291f816128fb565b92915050565b5f806040838503121561293b5761293a612899565b5b5f612948858286016128e7565b925050602061295985828601612911565b9150509250929050565b5f8115159050919050565b61297781612963565b82525050565b5f6020820190506129905f83018461296e565b92915050565b5f6129a0826128a1565b9050919050565b6129b081612996565b82525050565b5f6020820190506129c95f8301846129a7565b92915050565b5f819050919050565b5f6129f26129ed6129e8846128a1565b6129cf565b6128a1565b9050919050565b5f612a03826129d8565b9050919050565b5f612a14826129f9565b9050919050565b612a2481612a0a565b82525050565b5f602082019050612a3d5f830184612a1b565b92915050565b5f805f60608486031215612a5a57612a59612899565b5b5f612a67868287016128e7565b9350506020612a78868287016128e7565b9250506040612a8986828701612911565b9150509250925092565b5f60ff82169050919050565b612aa881612a93565b82525050565b5f602082019050612ac15f830184612a9f565b92915050565b5f60208284031215612adc57612adb612899565b5b5f612ae984828501612911565b91505092915050565b5f60208284031215612b0757612b06612899565b5b5f612b14848285016128e7565b91505092915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112612b3e57612b3d612b1d565b5b8235905067ffffffffffffffff811115612b5b57612b5a612b21565b5b602083019150836020820283011115612b7757612b76612b25565b5b9250929050565b612b8781612963565b8114612b91575f80fd5b50565b5f81359050612ba281612b7e565b92915050565b5f805f60408486031215612bbf57612bbe612899565b5b5f84013567ffffffffffffffff811115612bdc57612bdb61289d565b5b612be886828701612b29565b93509350506020612bfb86828701612b94565b9150509250925092565b612c0e816128c0565b82525050565b5f602082019050612c275f830184612c05565b92915050565b5f8060408385031215612c4357612c42612899565b5b5f612c50858286016128e7565b9250506020612c61858286016128e7565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612c9f6020836127f9565b9150612caa82612c6b565b602082019050919050565b5f6020820190508181035f830152612ccc81612c93565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f612d37826127be565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612d6957612d68612d00565b5b600182019050919050565b5f81519050612d82816128d1565b92915050565b5f60208284031215612d9d57612d9c612899565b5b5f612daa84828501612d74565b91505092915050565b5f604082019050612dc65f830185612c05565b612dd36020830184612c05565b9392505050565b5f819050919050565b5f612dfd612df8612df384612dda565b6129cf565b6127be565b9050919050565b612e0d81612de3565b82525050565b5f60c082019050612e265f830189612c05565b612e3360208301886127c7565b612e406040830187612e04565b612e4d6060830186612e04565b612e5a6080830185612c05565b612e6760a08301846127c7565b979650505050505050565b5f81519050612e80816128fb565b92915050565b5f805f60608486031215612e9d57612e9c612899565b5b5f612eaa86828701612e72565b9350506020612ebb86828701612e72565b9250506040612ecc86828701612e72565b9150509250925092565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f612f306026836127f9565b9150612f3b82612ed6565b604082019050919050565b5f6020820190508181035f830152612f5d81612f24565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f612fbe6024836127f9565b9150612fc982612f64565b604082019050919050565b5f6020820190508181035f830152612feb81612fb2565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f61304c6022836127f9565b915061305782612ff2565b604082019050919050565b5f6020820190508181035f83015261307981613040565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6130da6025836127f9565b91506130e582613080565b604082019050919050565b5f6020820190508181035f830152613107816130ce565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6131686023836127f9565b91506131738261310e565b604082019050919050565b5f6020820190508181035f8301526131958161315c565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f6131f66029836127f9565b91506132018261319c565b604082019050919050565b5f6020820190508181035f830152613223816131ea565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e64205f8201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b5f613284603f836127f9565b915061328f8261322a565b604082019050919050565b5f6020820190508181035f8301526132b181613278565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d6974000000005f82015250565b5f6132ec601c836127f9565b91506132f7826132b8565b602082019050919050565b5f6020820190508181035f830152613319816132e0565b9050919050565b5f61332a826127be565b9150613335836127be565b925082820190508082111561334d5761334c612d00565b5b92915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073695f8201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b5f6133ad6023836127f9565b91506133b882613353565b604082019050919050565b5f6020820190508181035f8301526133da816133a1565b9050919050565b5f6133eb826127be565b91506133f6836127be565b925082820390508181111561340e5761340d612d00565b5b92915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c20725f8201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b5f61346e602a836127f9565b915061347982613414565b604082019050919050565b5f6020820190508181035f83015261349b81613462565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613501816128c0565b82525050565b5f61351283836134f8565b60208301905092915050565b5f602082019050919050565b5f613534826134cf565b61353e81856134d9565b9350613549836134e9565b805f5b838110156135795781516135608882613507565b975061356b8361351e565b92505060018101905061354c565b5085935050505092915050565b5f60a0820190506135995f8301886127c7565b6135a66020830187612e04565b81810360408301526135b8818661352a565b90506135c76060830185612c05565b6135d460808301846127c7565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613615826127be565b9150613620836127be565b9250826136305761362f6135de565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f61366f601b836127f9565b915061367a8261363b565b602082019050919050565b5f6020820190508181035f83015261369c81613663565b9050919050565b5f6136ad826127be565b91506136b8836127be565b92508282026136c6816127be565b915082820484148315176136dd576136dc612d00565b5b5092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f61373e6021836127f9565b9150613749826136e4565b604082019050919050565b5f6020820190508181035f83015261376b81613732565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63654861727279506f747465724f62616d61e197aa4fe196874be192aa4fe19687e197aa3130496e75a264697066735822122017f054bd9a584a026e89aa7ef970cbe3ebb2ca7862f276caafd3d7b7af0f36ed64736f6c63430008140033

Deployed Bytecode Sourcemap

4211:13538:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4659:57;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7339:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8486:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4800:47;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4939:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4856:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7762:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8687:446;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7194:137;;;;;;;;;;;;;:::i;:::-;;7525:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4729:58;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13003:130;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7616:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4056:148;;;;;;;;;;;;;:::i;:::-;;12721:230;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6637:518;;;;;;;;;;;;;:::i;:::-;;3590:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7430:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5033:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8279:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4904:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7865:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3804:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4659:57;;;;:::o;7339:83::-;7376:13;7409:5;;;;;;;;;;;;;;;;;7402:12;;7339:83;:::o;8486:193::-;8588:4;8610:39;8619:12;:10;:12::i;:::-;8633:7;8642:6;8610:8;:39::i;:::-;8667:4;8660:11;;8486:193;;;;:::o;4800:47::-;;;;:::o;4939:87::-;;;;;;;;;;;;;:::o;4856:41::-;;;;;;;;;;;;;:::o;7762:95::-;7815:7;4518:11;7835:14;;7762:95;:::o;8687:446::-;8819:4;8836:36;8846:6;8854:9;8865:6;8836:9;:36::i;:::-;8883:220;8906:6;8927:12;:10;:12::i;:::-;8954:138;9010:6;8954:138;;;;;;;;;;;;;;;;;:11;:19;8966:6;8954:19;;;;;;;;;;;;;;;:33;8974:12;:10;:12::i;:::-;8954:33;;;;;;;;;;;;;;;;:37;;:138;;;;;:::i;:::-;8883:8;:220::i;:::-;9121:4;9114:11;;8687:446;;;;;:::o;7194:137::-;3727:12;:10;:12::i;:::-;3717:22;;:6;;;;;;;;;;:22;;;3709:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4518:11:::1;7251:20;:30;;;;4518:11;7292:21;:31;;;;7194:137::o:0;7525:83::-;7566:5;4475:1;7584:16;;7525:83;:::o;4729:58::-;;;;:::o;13003:130::-;3727:12;:10;:12::i;:::-;3717:22;;:6;;;;;;;;;;:22;;;3709:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13107:18:::1;13090:14;:35;;;;13003:130:::0;:::o;7616:138::-;7682:7;7709:37;7729:7;:16;7737:7;7729:16;;;;;;;;;;;;;;;;7709:19;:37::i;:::-;7702:44;;7616:138;;;:::o;4056:148::-;3727:12;:10;:12::i;:::-;3717:22;;:6;;;;;;;;;;:22;;;3709:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4163:1:::1;4126:40;;4147:6;::::0;::::1;;;;;;;;4126:40;;;;;;;;;;;;4194:1;4177:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;4056:148::o:0;12721:230::-;3727:12;:10;:12::i;:::-;3717:22;;:6;;;;;;;;;;:22;;;3709:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12834:9:::1;12830:114;12853:8;;:15;;12849:1;:19;12830:114;;;12924:8;12890:18;:31;12909:8;;12918:1;12909:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;12890:31;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;12870:3;;;;;:::i;:::-;;;;12830:114;;;;12721:230:::0;;;:::o;6637:518::-;3727:12;:10;:12::i;:::-;3717:22;;:6;;;;;;;;;;:22;;;3709:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6722:15:::1;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6704:55;;;6768:4;6775:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6704:94;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6690:11;;:108;;;;;;;;;;;;;;;;;;6809:68;6826:4;6841:15;;;;;;;;;;;6859:17;6809:8;:68::i;:::-;6890:15;;;;;;;;;;;:31;;;6929:21;6974:4;6994:24;7012:4;6994:9;:24::i;:::-;7033:1;7050::::0;7067:7:::1;:5;:7::i;:::-;7089:15;6890:225;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;7143:4;7126:14;;:21;;;;;;;;;;;;;;;;;;6637:518::o:0;3590:79::-;3628:7;3655:6;;;;;;;;;;;3648:13;;3590:79;:::o;7430:87::-;7469:13;7502:7;;;;;;;;;;;;;;;;;7495:14;;7430:87;:::o;5033:93::-;;;;;;;;;;;;;:::o;8279:199::-;8384:4;8406:42;8416:12;:10;:12::i;:::-;8430:9;8441:6;8406:9;:42::i;:::-;8466:4;8459:11;;8279:199;;;;:::o;4904:26::-;;;;;;;;;;;;;:::o;7865:184::-;7982:7;8014:11;:18;8026:5;8014:18;;;;;;;;;;;;;;;:27;8033:7;8014:27;;;;;;;;;;;;;;;;8007:34;;7865:184;;;;:::o;3804:244::-;3727:12;:10;:12::i;:::-;3717:22;;:6;;;;;;;;;;:22;;;3709:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;3913:1:::1;3893:22;;:8;:22;;::::0;3885:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;4003:8;3974:38;;3995:6;::::0;::::1;;;;;;;;3974:38;;;;;;;;;;;;4032:8;4023:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;3804:244:::0;:::o;3137:98::-;3190:7;3217:10;3210:17;;3137:98;:::o;9141:369::-;9285:1;9268:19;;:5;:19;;;9260:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9366:1;9347:21;;:7;:21;;;9339:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9448:6;9418:11;:18;9430:5;9418:18;;;;;;;;;;;;;;;:27;9437:7;9418:27;;;;;;;;;;;;;;;:36;;;;9486:7;9470:32;;9479:5;9470:32;;;9495:6;9470:32;;;;;;:::i;:::-;;;;;;;;9141:369;;;:::o;13141:2450::-;13279:1;13263:18;;:4;:18;;;13255:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13356:1;13342:16;;:2;:16;;;13334:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;13400:18;13421:21;13400:42;;13470:1;13461:6;:10;13453:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;13551:18;:22;13570:2;13551:22;;;;;;;;;;;;;;;;;;;;;;;;;13550:23;:52;;;;;13578:18;:24;13597:4;13578:24;;;;;;;;;;;;;;;;;;;;;;;;;13577:25;13550:52;13531:1363;;;13667:14;;;;;;;;;;;13662:209;;13740:7;:5;:7::i;:::-;13732:15;;:4;:15;;;13702:153;;;;;;;;;;;;:::i;:::-;;;;;;;;;13662:209;13923:20;;13913:6;:30;;13887:120;;;;;;;;;;;;:::i;:::-;;;;;;;;;14045:11;;;;;;;;;;;14039:17;;:2;:17;;;14036:169;;14110:21;;14101:6;14085:13;14095:2;14085:9;:13::i;:::-;:22;;;;:::i;:::-;:46;14077:112;;;;;;;;;;;;:::i;:::-;;;;;;;;;14036:169;14221:27;14251:24;14269:4;14251:9;:24::i;:::-;14221:54;;14302:12;14340:14;;14317:19;:37;;14302:52;;14395:20;;14372:19;:43;14369:90;;14439:20;;14417:42;;14369:90;14478:7;:37;;;;;14508:7;;;;;;;;;;;14507:8;14478:37;:71;;;;;14537:12;;;;;;;;;;;14478:71;:112;;;;;14579:11;;;;;;;;;;;14571:19;;:4;:19;;;;14478:112;:157;;;;;14613:18;:22;14632:2;14613:22;;;;;;;;;;;;;;;;;;;;;;;;;14612:23;14478:157;:204;;;;;14658:18;:24;14677:4;14658:24;;;;;;;;;;;;;;;;;;;;;;;;;14657:25;14478:204;14474:409;;;14717:29;14726:19;14717:8;:29::i;:::-;14765:18;14786:21;14765:42;;14843:1;14830:10;:14;14826:42;;;14847:19;14855:10;14847:7;:19::i;:::-;14826:42;14698:185;14474:409;13614:1280;;13531:1363;14906:12;14921:4;14906:19;;14941:18;:24;14960:4;14941:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;14969:18;:22;14988:2;14969:22;;;;;;;;;;;;;;;;;;;;;;;;;14941:50;14940:98;;;;15005:11;;;;;;;;;;;14997:19;;:4;:19;;;;:40;;;;;15026:11;;;;;;;;;;;15020:17;;:2;:17;;;;14997:40;14940:98;14936:587;;;15065:5;15055:15;;14936:587;;;15123:11;;;;;;;;;;;15115:19;;:4;:19;;;:53;;;;;15152:15;;;;;;;;;;;15138:30;;:2;:30;;;;15115:53;15112:177;;;15208:16;;15189;:35;;;;15260:13;;15243:14;:30;;;;15112:177;15313:11;;;;;;;;;;;15307:17;;:2;:17;;;:53;;;;;15344:15;;;;;;;;;;;15328:32;;:4;:32;;;;15307:53;15303:209;;;15400:17;;15381:16;:36;;;;15470:26;15485:10;15470:14;:26::i;:::-;15453:14;;:43;;;;:::i;:::-;15436:14;:60;;;;15303:209;14936:587;15533:50;15557:4;15563:2;15567:6;15575:7;15533:23;:50::i;:::-;13244:2347;;13141:2450;;;:::o;474:224::-;594:7;627:1;622;:6;;630:12;614:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;654:9;670:1;666;:5;;;;:::i;:::-;654:17;;689:1;682:8;;;474:224;;;;;:::o;11951:323::-;12046:7;12104;;12093;:18;;12071:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;12192:19;12214:10;:8;:10::i;:::-;12192:32;;12242:24;12254:11;12242:7;:11;;:24;;;;:::i;:::-;12235:31;;;11951:323;;;:::o;15599:474::-;6010:4;6000:7;;:14;;;;;;;;;;;;;;;;;;15668:21:::1;15706:1;15692:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15668:40;;15737:4;15719;15724:1;15719:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;15763:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15753:4;15758:1;15753:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;15796:62;15813:4;15828:15;;;;;;;;;;;15846:11;15796:8;:62::i;:::-;15869:15;;;;;;;;;;;:66;;;15950:11;15976:1;15992:4;16019;16039:15;15869:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;15657:416;6047:5:::0;6037:7;;:15;;;;;;;;;;;;;;;;;;15599:474;:::o;12282:258::-;12334:20;12366:11;;12357:6;:20;;;;:::i;:::-;12334:43;;12388:23;12423:12;12414:6;:21;;;;:::i;:::-;12388:47;;12446:10;;;;;;;;;;;:19;;:33;12466:12;12446:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12490:16;;;;;;;;;;;:25;;:42;12516:15;12490:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12323:217;;12282:258;:::o;11199:103::-;11257:7;11290:4;11284:3;:10;;;;:::i;:::-;11277:17;;11199:103;;;:::o;16081:349::-;16245:6;16240:51;;16268:11;:9;:11::i;:::-;16240:51;16301:47;16322:6;16330:9;16341:6;16301:20;:47::i;:::-;16364:6;16359:64;;16399:12;:10;:12::i;:::-;16359:64;16081:349;;;;:::o;10064:164::-;10106:7;10127:15;10144;10163:19;:17;:19::i;:::-;10126:56;;;;10200:20;10212:7;10200;:11;;:20;;;;:::i;:::-;10193:27;;;;10064:164;:::o;1327:132::-;1385:7;1412:39;1416:1;1419;1412:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1405:46;;1327:132;;;;:::o;17312:247::-;17376:1;17356:16;;:21;:44;;;;;17399:1;17381:14;;:19;17356:44;17402:7;17352:57;17440:16;;17419:18;:37;;;;17486:14;;17467:16;:33;;;;17521:1;17502:16;:20;;;;17550:1;17533:14;:18;;;;17312:247;:::o;16614:686::-;16764:15;16794:23;16832:12;16859:23;16897:12;16924:13;16951:19;16962:7;16951:10;:19::i;:::-;16749:221;;;;;;;;;;;;16976:33;16991:6;16999:9;16976:14;:33::i;:::-;16972:72;;;17011:33;17026:6;17034:9;17011:14;:33::i;:::-;16972:72;17073:28;17093:7;17073;:15;17081:6;17073:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;17055:7;:15;17063:6;17055:15;;;;;;;;;;;;;;;:46;;;;17133:39;17156:15;17133:7;:18;17141:9;17133:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;17112:7;:18;17120:9;17112:18;;;;;;;;;;;;;;;:60;;;;17183:18;17195:5;17183:11;:18::i;:::-;17203:29;17221:4;17227;17203:17;:29::i;:::-;17265:9;17248:44;;17257:6;17248:44;;;17276:15;17248:44;;;;;;:::i;:::-;;;;;;;;16738:562;;;;;;16614:686;;;:::o;17567:130::-;17627:18;;17608:16;:37;;;;17673:16;;17656:14;:33;;;;17567:130::o;10236:257::-;10287:7;10296;10316:15;10334:7;;10316:25;;10352:15;4518:11;10352:25;;10402:20;4518:11;10402:7;;:11;;:20;;;;:::i;:::-;10392:7;:30;10388:61;;;10432:7;;4518:11;10424:25;;;;;;;;10388:61;10468:7;10477;10460:25;;;;;;10236:257;;;:::o;1098:223::-;1218:7;1250:1;1246;:5;1253:12;1238:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1277:9;1293:1;1289;:5;;;;:::i;:::-;1277:17;;1312:1;1305:8;;;1098:223;;;;;:::o;11310:629::-;11410:7;11432;11454;11476;11498;11520;11556:23;11581:12;11595:13;11625:54;11637:7;11646:16;;11664:14;;11625:11;:54::i;:::-;11555:124;;;;;;11690:19;11712:10;:8;:10::i;:::-;11690:32;;11734:15;11751:23;11776:12;11805:46;11817:7;11826:4;11832:5;11839:11;11805;:46::i;:::-;11733:118;;;;;;11870:7;11879:15;11896:4;11902:15;11919:4;11925:5;11862:69;;;;;;;;;;;;;;;;;;;11310:629;;;;;;;:::o;16438:168::-;16520:4;16557:11;;;;;;;;;;;16544:24;;:9;:24;;;:54;;;;;16582:16;;;;;;;;;;;16572:26;;:6;:26;;;16544:54;16537:61;;16438:168;;;;:::o;8057:214::-;8172:17;8139:11;:22;8151:9;8139:22;;;;;;;;;;;;;;;:30;8162:6;8139:30;;;;;;;;;;;;;;;;:50;8135:129;;;8206:46;8215:9;8226:6;8234:17;8206:8;:46::i;:::-;8135:129;8057:214;;:::o;704:136::-;762:7;789:43;793:1;796;789:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;782:50;;704:136;;;;:::o;289:179::-;347:7;367:9;383:1;379;:5;;;;:::i;:::-;367:17;;408:1;403;:6;;395:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;459:1;452:8;;;289:179;;;;:::o;10978:213::-;11033:19;11055:10;:8;:10::i;:::-;11033:32;;11076:13;11092:22;11102:11;11092:5;:9;;:22;;;;:::i;:::-;11076:38;;11150:33;11177:5;11150:7;:22;11166:4;11150:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;11125:7;:22;11141:4;11125:22;;;;;;;;;;;;;;;:58;;;;11022:169;;10978:213;:::o;12548:163::-;12632:17;12644:4;12632:7;;:11;;:17;;;;:::i;:::-;12622:7;:27;;;;12678:25;12698:4;12678:15;;:19;;:25;;;;:::i;:::-;12660:15;:43;;;;12548:163;;:::o;10501:467::-;10669:7;10691;10713;10748:12;10763:29;10788:3;10763:20;10775:7;10763;:11;;:20;;;;:::i;:::-;:24;;:29;;;;:::i;:::-;10748:44;;10803:13;10819:28;10843:3;10819:19;10831:6;10819:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;10803:44;;10858:23;10884:28;10906:5;10884:17;10896:4;10884:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;10858:54;;10931:15;10948:4;10954:5;10923:37;;;;;;;;;10501:467;;;;;;;:::o;9522:534::-;9716:7;9738;9760;9795:15;9813:24;9825:11;9813:7;:11;;:24;;;;:::i;:::-;9795:42;;9848:12;9863:21;9872:11;9863:4;:8;;:21;;;;:::i;:::-;9848:36;;9895:13;9911:22;9921:11;9911:5;:9;;:22;;;;:::i;:::-;9895:38;;9944:23;9970:28;9992:5;9970:17;9982:4;9970:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;9944:54;;10017:7;10026:15;10043:4;10009:39;;;;;;;;;;9522:534;;;;;;;;:::o;846:246::-;904:7;933:1;928;:6;924:47;;958:1;951:8;;;;924:47;981:9;997:1;993;:5;;;;:::i;:::-;981:17;;1026:1;1021;1017;:5;;;;:::i;:::-;:10;1009:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1083:1;1076:8;;;846:246;;;;;:::o;7:77:1:-;44:7;73:5;62:16;;7:77;;;:::o;90:118::-;177:24;195:5;177:24;:::i;:::-;172:3;165:37;90:118;;:::o;214:222::-;307:4;345:2;334:9;330:18;322:26;;358:71;426:1;415:9;411:17;402:6;358:71;:::i;:::-;214:222;;;;:::o;442:99::-;494:6;528:5;522:12;512:22;;442:99;;;:::o;547:169::-;631:11;665:6;660:3;653:19;705:4;700:3;696:14;681:29;;547:169;;;;:::o;722:246::-;803:1;813:113;827:6;824:1;821:13;813:113;;;912:1;907:3;903:11;897:18;893:1;888:3;884:11;877:39;849:2;846:1;842:10;837:15;;813:113;;;960:1;951:6;946:3;942:16;935:27;784:184;722:246;;;:::o;974:102::-;1015:6;1066:2;1062:7;1057:2;1050:5;1046:14;1042:28;1032:38;;974:102;;;:::o;1082:377::-;1170:3;1198:39;1231:5;1198:39;:::i;:::-;1253:71;1317:6;1312:3;1253:71;:::i;:::-;1246:78;;1333:65;1391:6;1386:3;1379:4;1372:5;1368:16;1333:65;:::i;:::-;1423:29;1445:6;1423:29;:::i;:::-;1418:3;1414:39;1407:46;;1174:285;1082:377;;;;:::o;1465:313::-;1578:4;1616:2;1605:9;1601:18;1593:26;;1665:9;1659:4;1655:20;1651:1;1640:9;1636:17;1629:47;1693:78;1766:4;1757:6;1693:78;:::i;:::-;1685:86;;1465:313;;;;:::o;1865:117::-;1974:1;1971;1964:12;1988:117;2097:1;2094;2087:12;2111:126;2148:7;2188:42;2181:5;2177:54;2166:65;;2111:126;;;:::o;2243:96::-;2280:7;2309:24;2327:5;2309:24;:::i;:::-;2298:35;;2243:96;;;:::o;2345:122::-;2418:24;2436:5;2418:24;:::i;:::-;2411:5;2408:35;2398:63;;2457:1;2454;2447:12;2398:63;2345:122;:::o;2473:139::-;2519:5;2557:6;2544:20;2535:29;;2573:33;2600:5;2573:33;:::i;:::-;2473:139;;;;:::o;2618:122::-;2691:24;2709:5;2691:24;:::i;:::-;2684:5;2681:35;2671:63;;2730:1;2727;2720:12;2671:63;2618:122;:::o;2746:139::-;2792:5;2830:6;2817:20;2808:29;;2846:33;2873:5;2846:33;:::i;:::-;2746:139;;;;:::o;2891:474::-;2959:6;2967;3016:2;3004:9;2995:7;2991:23;2987:32;2984:119;;;3022:79;;:::i;:::-;2984:119;3142:1;3167:53;3212:7;3203:6;3192:9;3188:22;3167:53;:::i;:::-;3157:63;;3113:117;3269:2;3295:53;3340:7;3331:6;3320:9;3316:22;3295:53;:::i;:::-;3285:63;;3240:118;2891:474;;;;;:::o;3371:90::-;3405:7;3448:5;3441:13;3434:21;3423:32;;3371:90;;;:::o;3467:109::-;3548:21;3563:5;3548:21;:::i;:::-;3543:3;3536:34;3467:109;;:::o;3582:210::-;3669:4;3707:2;3696:9;3692:18;3684:26;;3720:65;3782:1;3771:9;3767:17;3758:6;3720:65;:::i;:::-;3582:210;;;;:::o;3798:104::-;3843:7;3872:24;3890:5;3872:24;:::i;:::-;3861:35;;3798:104;;;:::o;3908:142::-;4011:32;4037:5;4011:32;:::i;:::-;4006:3;3999:45;3908:142;;:::o;4056:254::-;4165:4;4203:2;4192:9;4188:18;4180:26;;4216:87;4300:1;4289:9;4285:17;4276:6;4216:87;:::i;:::-;4056:254;;;;:::o;4316:60::-;4344:3;4365:5;4358:12;;4316:60;;;:::o;4382:142::-;4432:9;4465:53;4483:34;4492:24;4510:5;4492:24;:::i;:::-;4483:34;:::i;:::-;4465:53;:::i;:::-;4452:66;;4382:142;;;:::o;4530:126::-;4580:9;4613:37;4644:5;4613:37;:::i;:::-;4600:50;;4530:126;;;:::o;4662:152::-;4738:9;4771:37;4802:5;4771:37;:::i;:::-;4758:50;;4662:152;;;:::o;4820:183::-;4933:63;4990:5;4933:63;:::i;:::-;4928:3;4921:76;4820:183;;:::o;5009:274::-;5128:4;5166:2;5155:9;5151:18;5143:26;;5179:97;5273:1;5262:9;5258:17;5249:6;5179:97;:::i;:::-;5009:274;;;;:::o;5289:619::-;5366:6;5374;5382;5431:2;5419:9;5410:7;5406:23;5402:32;5399:119;;;5437:79;;:::i;:::-;5399:119;5557:1;5582:53;5627:7;5618:6;5607:9;5603:22;5582:53;:::i;:::-;5572:63;;5528:117;5684:2;5710:53;5755:7;5746:6;5735:9;5731:22;5710:53;:::i;:::-;5700:63;;5655:118;5812:2;5838:53;5883:7;5874:6;5863:9;5859:22;5838:53;:::i;:::-;5828:63;;5783:118;5289:619;;;;;:::o;5914:86::-;5949:7;5989:4;5982:5;5978:16;5967:27;;5914:86;;;:::o;6006:112::-;6089:22;6105:5;6089:22;:::i;:::-;6084:3;6077:35;6006:112;;:::o;6124:214::-;6213:4;6251:2;6240:9;6236:18;6228:26;;6264:67;6328:1;6317:9;6313:17;6304:6;6264:67;:::i;:::-;6124:214;;;;:::o;6344:329::-;6403:6;6452:2;6440:9;6431:7;6427:23;6423:32;6420:119;;;6458:79;;:::i;:::-;6420:119;6578:1;6603:53;6648:7;6639:6;6628:9;6624:22;6603:53;:::i;:::-;6593:63;;6549:117;6344:329;;;;:::o;6679:::-;6738:6;6787:2;6775:9;6766:7;6762:23;6758:32;6755:119;;;6793:79;;:::i;:::-;6755:119;6913:1;6938:53;6983:7;6974:6;6963:9;6959:22;6938:53;:::i;:::-;6928:63;;6884:117;6679:329;;;;:::o;7014:117::-;7123:1;7120;7113:12;7137:117;7246:1;7243;7236:12;7260:117;7369:1;7366;7359:12;7400:568;7473:8;7483:6;7533:3;7526:4;7518:6;7514:17;7510:27;7500:122;;7541:79;;:::i;:::-;7500:122;7654:6;7641:20;7631:30;;7684:18;7676:6;7673:30;7670:117;;;7706:79;;:::i;:::-;7670:117;7820:4;7812:6;7808:17;7796:29;;7874:3;7866:4;7858:6;7854:17;7844:8;7840:32;7837:41;7834:128;;;7881:79;;:::i;:::-;7834:128;7400:568;;;;;:::o;7974:116::-;8044:21;8059:5;8044:21;:::i;:::-;8037:5;8034:32;8024:60;;8080:1;8077;8070:12;8024:60;7974:116;:::o;8096:133::-;8139:5;8177:6;8164:20;8155:29;;8193:30;8217:5;8193:30;:::i;:::-;8096:133;;;;:::o;8235:698::-;8327:6;8335;8343;8392:2;8380:9;8371:7;8367:23;8363:32;8360:119;;;8398:79;;:::i;:::-;8360:119;8546:1;8535:9;8531:17;8518:31;8576:18;8568:6;8565:30;8562:117;;;8598:79;;:::i;:::-;8562:117;8711:80;8783:7;8774:6;8763:9;8759:22;8711:80;:::i;:::-;8693:98;;;;8489:312;8840:2;8866:50;8908:7;8899:6;8888:9;8884:22;8866:50;:::i;:::-;8856:60;;8811:115;8235:698;;;;;:::o;8939:118::-;9026:24;9044:5;9026:24;:::i;:::-;9021:3;9014:37;8939:118;;:::o;9063:222::-;9156:4;9194:2;9183:9;9179:18;9171:26;;9207:71;9275:1;9264:9;9260:17;9251:6;9207:71;:::i;:::-;9063:222;;;;:::o;9291:474::-;9359:6;9367;9416:2;9404:9;9395:7;9391:23;9387:32;9384:119;;;9422:79;;:::i;:::-;9384:119;9542:1;9567:53;9612:7;9603:6;9592:9;9588:22;9567:53;:::i;:::-;9557:63;;9513:117;9669:2;9695:53;9740:7;9731:6;9720:9;9716:22;9695:53;:::i;:::-;9685:63;;9640:118;9291:474;;;;;:::o;9771:182::-;9911:34;9907:1;9899:6;9895:14;9888:58;9771:182;:::o;9959:366::-;10101:3;10122:67;10186:2;10181:3;10122:67;:::i;:::-;10115:74;;10198:93;10287:3;10198:93;:::i;:::-;10316:2;10311:3;10307:12;10300:19;;9959:366;;;:::o;10331:419::-;10497:4;10535:2;10524:9;10520:18;10512:26;;10584:9;10578:4;10574:20;10570:1;10559:9;10555:17;10548:47;10612:131;10738:4;10612:131;:::i;:::-;10604:139;;10331:419;;;:::o;10756:180::-;10804:77;10801:1;10794:88;10901:4;10898:1;10891:15;10925:4;10922:1;10915:15;10942:180;10990:77;10987:1;10980:88;11087:4;11084:1;11077:15;11111:4;11108:1;11101:15;11128:233;11167:3;11190:24;11208:5;11190:24;:::i;:::-;11181:33;;11236:66;11229:5;11226:77;11223:103;;11306:18;;:::i;:::-;11223:103;11353:1;11346:5;11342:13;11335:20;;11128:233;;;:::o;11367:143::-;11424:5;11455:6;11449:13;11440:22;;11471:33;11498:5;11471:33;:::i;:::-;11367:143;;;;:::o;11516:351::-;11586:6;11635:2;11623:9;11614:7;11610:23;11606:32;11603:119;;;11641:79;;:::i;:::-;11603:119;11761:1;11786:64;11842:7;11833:6;11822:9;11818:22;11786:64;:::i;:::-;11776:74;;11732:128;11516:351;;;;:::o;11873:332::-;11994:4;12032:2;12021:9;12017:18;12009:26;;12045:71;12113:1;12102:9;12098:17;12089:6;12045:71;:::i;:::-;12126:72;12194:2;12183:9;12179:18;12170:6;12126:72;:::i;:::-;11873:332;;;;;:::o;12211:85::-;12256:7;12285:5;12274:16;;12211:85;;;:::o;12302:158::-;12360:9;12393:61;12411:42;12420:32;12446:5;12420:32;:::i;:::-;12411:42;:::i;:::-;12393:61;:::i;:::-;12380:74;;12302:158;;;:::o;12466:147::-;12561:45;12600:5;12561:45;:::i;:::-;12556:3;12549:58;12466:147;;:::o;12619:807::-;12868:4;12906:3;12895:9;12891:19;12883:27;;12920:71;12988:1;12977:9;12973:17;12964:6;12920:71;:::i;:::-;13001:72;13069:2;13058:9;13054:18;13045:6;13001:72;:::i;:::-;13083:80;13159:2;13148:9;13144:18;13135:6;13083:80;:::i;:::-;13173;13249:2;13238:9;13234:18;13225:6;13173:80;:::i;:::-;13263:73;13331:3;13320:9;13316:19;13307:6;13263:73;:::i;:::-;13346;13414:3;13403:9;13399:19;13390:6;13346:73;:::i;:::-;12619:807;;;;;;;;;:::o;13432:143::-;13489:5;13520:6;13514:13;13505:22;;13536:33;13563:5;13536:33;:::i;:::-;13432:143;;;;:::o;13581:663::-;13669:6;13677;13685;13734:2;13722:9;13713:7;13709:23;13705:32;13702:119;;;13740:79;;:::i;:::-;13702:119;13860:1;13885:64;13941:7;13932:6;13921:9;13917:22;13885:64;:::i;:::-;13875:74;;13831:128;13998:2;14024:64;14080:7;14071:6;14060:9;14056:22;14024:64;:::i;:::-;14014:74;;13969:129;14137:2;14163:64;14219:7;14210:6;14199:9;14195:22;14163:64;:::i;:::-;14153:74;;14108:129;13581:663;;;;;:::o;14250:225::-;14390:34;14386:1;14378:6;14374:14;14367:58;14459:8;14454:2;14446:6;14442:15;14435:33;14250:225;:::o;14481:366::-;14623:3;14644:67;14708:2;14703:3;14644:67;:::i;:::-;14637:74;;14720:93;14809:3;14720:93;:::i;:::-;14838:2;14833:3;14829:12;14822:19;;14481:366;;;:::o;14853:419::-;15019:4;15057:2;15046:9;15042:18;15034:26;;15106:9;15100:4;15096:20;15092:1;15081:9;15077:17;15070:47;15134:131;15260:4;15134:131;:::i;:::-;15126:139;;14853:419;;;:::o;15278:223::-;15418:34;15414:1;15406:6;15402:14;15395:58;15487:6;15482:2;15474:6;15470:15;15463:31;15278:223;:::o;15507:366::-;15649:3;15670:67;15734:2;15729:3;15670:67;:::i;:::-;15663:74;;15746:93;15835:3;15746:93;:::i;:::-;15864:2;15859:3;15855:12;15848:19;;15507:366;;;:::o;15879:419::-;16045:4;16083:2;16072:9;16068:18;16060:26;;16132:9;16126:4;16122:20;16118:1;16107:9;16103:17;16096:47;16160:131;16286:4;16160:131;:::i;:::-;16152:139;;15879:419;;;:::o;16304:221::-;16444:34;16440:1;16432:6;16428:14;16421:58;16513:4;16508:2;16500:6;16496:15;16489:29;16304:221;:::o;16531:366::-;16673:3;16694:67;16758:2;16753:3;16694:67;:::i;:::-;16687:74;;16770:93;16859:3;16770:93;:::i;:::-;16888:2;16883:3;16879:12;16872:19;;16531:366;;;:::o;16903:419::-;17069:4;17107:2;17096:9;17092:18;17084:26;;17156:9;17150:4;17146:20;17142:1;17131:9;17127:17;17120:47;17184:131;17310:4;17184:131;:::i;:::-;17176:139;;16903:419;;;:::o;17328:224::-;17468:34;17464:1;17456:6;17452:14;17445:58;17537:7;17532:2;17524:6;17520:15;17513:32;17328:224;:::o;17558:366::-;17700:3;17721:67;17785:2;17780:3;17721:67;:::i;:::-;17714:74;;17797:93;17886:3;17797:93;:::i;:::-;17915:2;17910:3;17906:12;17899:19;;17558:366;;;:::o;17930:419::-;18096:4;18134:2;18123:9;18119:18;18111:26;;18183:9;18177:4;18173:20;18169:1;18158:9;18154:17;18147:47;18211:131;18337:4;18211:131;:::i;:::-;18203:139;;17930:419;;;:::o;18355:222::-;18495:34;18491:1;18483:6;18479:14;18472:58;18564:5;18559:2;18551:6;18547:15;18540:30;18355:222;:::o;18583:366::-;18725:3;18746:67;18810:2;18805:3;18746:67;:::i;:::-;18739:74;;18822:93;18911:3;18822:93;:::i;:::-;18940:2;18935:3;18931:12;18924:19;;18583:366;;;:::o;18955:419::-;19121:4;19159:2;19148:9;19144:18;19136:26;;19208:9;19202:4;19198:20;19194:1;19183:9;19179:17;19172:47;19236:131;19362:4;19236:131;:::i;:::-;19228:139;;18955:419;;;:::o;19380:228::-;19520:34;19516:1;19508:6;19504:14;19497:58;19589:11;19584:2;19576:6;19572:15;19565:36;19380:228;:::o;19614:366::-;19756:3;19777:67;19841:2;19836:3;19777:67;:::i;:::-;19770:74;;19853:93;19942:3;19853:93;:::i;:::-;19971:2;19966:3;19962:12;19955:19;;19614:366;;;:::o;19986:419::-;20152:4;20190:2;20179:9;20175:18;20167:26;;20239:9;20233:4;20229:20;20225:1;20214:9;20210:17;20203:47;20267:131;20393:4;20267:131;:::i;:::-;20259:139;;19986:419;;;:::o;20411:250::-;20551:34;20547:1;20539:6;20535:14;20528:58;20620:33;20615:2;20607:6;20603:15;20596:58;20411:250;:::o;20667:366::-;20809:3;20830:67;20894:2;20889:3;20830:67;:::i;:::-;20823:74;;20906:93;20995:3;20906:93;:::i;:::-;21024:2;21019:3;21015:12;21008:19;;20667:366;;;:::o;21039:419::-;21205:4;21243:2;21232:9;21228:18;21220:26;;21292:9;21286:4;21282:20;21278:1;21267:9;21263:17;21256:47;21320:131;21446:4;21320:131;:::i;:::-;21312:139;;21039:419;;;:::o;21464:178::-;21604:30;21600:1;21592:6;21588:14;21581:54;21464:178;:::o;21648:366::-;21790:3;21811:67;21875:2;21870:3;21811:67;:::i;:::-;21804:74;;21887:93;21976:3;21887:93;:::i;:::-;22005:2;22000:3;21996:12;21989:19;;21648:366;;;:::o;22020:419::-;22186:4;22224:2;22213:9;22209:18;22201:26;;22273:9;22267:4;22263:20;22259:1;22248:9;22244:17;22237:47;22301:131;22427:4;22301:131;:::i;:::-;22293:139;;22020:419;;;:::o;22445:191::-;22485:3;22504:20;22522:1;22504:20;:::i;:::-;22499:25;;22538:20;22556:1;22538:20;:::i;:::-;22533:25;;22581:1;22578;22574:9;22567:16;;22602:3;22599:1;22596:10;22593:36;;;22609:18;;:::i;:::-;22593:36;22445:191;;;;:::o;22642:222::-;22782:34;22778:1;22770:6;22766:14;22759:58;22851:5;22846:2;22838:6;22834:15;22827:30;22642:222;:::o;22870:366::-;23012:3;23033:67;23097:2;23092:3;23033:67;:::i;:::-;23026:74;;23109:93;23198:3;23109:93;:::i;:::-;23227:2;23222:3;23218:12;23211:19;;22870:366;;;:::o;23242:419::-;23408:4;23446:2;23435:9;23431:18;23423:26;;23495:9;23489:4;23485:20;23481:1;23470:9;23466:17;23459:47;23523:131;23649:4;23523:131;:::i;:::-;23515:139;;23242:419;;;:::o;23667:194::-;23707:4;23727:20;23745:1;23727:20;:::i;:::-;23722:25;;23761:20;23779:1;23761:20;:::i;:::-;23756:25;;23805:1;23802;23798:9;23790:17;;23829:1;23823:4;23820:11;23817:37;;;23834:18;;:::i;:::-;23817:37;23667:194;;;;:::o;23867:229::-;24007:34;24003:1;23995:6;23991:14;23984:58;24076:12;24071:2;24063:6;24059:15;24052:37;23867:229;:::o;24102:366::-;24244:3;24265:67;24329:2;24324:3;24265:67;:::i;:::-;24258:74;;24341:93;24430:3;24341:93;:::i;:::-;24459:2;24454:3;24450:12;24443:19;;24102:366;;;:::o;24474:419::-;24640:4;24678:2;24667:9;24663:18;24655:26;;24727:9;24721:4;24717:20;24713:1;24702:9;24698:17;24691:47;24755:131;24881:4;24755:131;:::i;:::-;24747:139;;24474:419;;;:::o;24899:180::-;24947:77;24944:1;24937:88;25044:4;25041:1;25034:15;25068:4;25065:1;25058:15;25085:114;25152:6;25186:5;25180:12;25170:22;;25085:114;;;:::o;25205:184::-;25304:11;25338:6;25333:3;25326:19;25378:4;25373:3;25369:14;25354:29;;25205:184;;;;:::o;25395:132::-;25462:4;25485:3;25477:11;;25515:4;25510:3;25506:14;25498:22;;25395:132;;;:::o;25533:108::-;25610:24;25628:5;25610:24;:::i;:::-;25605:3;25598:37;25533:108;;:::o;25647:179::-;25716:10;25737:46;25779:3;25771:6;25737:46;:::i;:::-;25815:4;25810:3;25806:14;25792:28;;25647:179;;;;:::o;25832:113::-;25902:4;25934;25929:3;25925:14;25917:22;;25832:113;;;:::o;25981:732::-;26100:3;26129:54;26177:5;26129:54;:::i;:::-;26199:86;26278:6;26273:3;26199:86;:::i;:::-;26192:93;;26309:56;26359:5;26309:56;:::i;:::-;26388:7;26419:1;26404:284;26429:6;26426:1;26423:13;26404:284;;;26505:6;26499:13;26532:63;26591:3;26576:13;26532:63;:::i;:::-;26525:70;;26618:60;26671:6;26618:60;:::i;:::-;26608:70;;26464:224;26451:1;26448;26444:9;26439:14;;26404:284;;;26408:14;26704:3;26697:10;;26105:608;;;25981:732;;;;:::o;26719:831::-;26982:4;27020:3;27009:9;27005:19;26997:27;;27034:71;27102:1;27091:9;27087:17;27078:6;27034:71;:::i;:::-;27115:80;27191:2;27180:9;27176:18;27167:6;27115:80;:::i;:::-;27242:9;27236:4;27232:20;27227:2;27216:9;27212:18;27205:48;27270:108;27373:4;27364:6;27270:108;:::i;:::-;27262:116;;27388:72;27456:2;27445:9;27441:18;27432:6;27388:72;:::i;:::-;27470:73;27538:3;27527:9;27523:19;27514:6;27470:73;:::i;:::-;26719:831;;;;;;;;:::o;27556:180::-;27604:77;27601:1;27594:88;27701:4;27698:1;27691:15;27725:4;27722:1;27715:15;27742:185;27782:1;27799:20;27817:1;27799:20;:::i;:::-;27794:25;;27833:20;27851:1;27833:20;:::i;:::-;27828:25;;27872:1;27862:35;;27877:18;;:::i;:::-;27862:35;27919:1;27916;27912:9;27907:14;;27742:185;;;;:::o;27933:177::-;28073:29;28069:1;28061:6;28057:14;28050:53;27933:177;:::o;28116:366::-;28258:3;28279:67;28343:2;28338:3;28279:67;:::i;:::-;28272:74;;28355:93;28444:3;28355:93;:::i;:::-;28473:2;28468:3;28464:12;28457:19;;28116:366;;;:::o;28488:419::-;28654:4;28692:2;28681:9;28677:18;28669:26;;28741:9;28735:4;28731:20;28727:1;28716:9;28712:17;28705:47;28769:131;28895:4;28769:131;:::i;:::-;28761:139;;28488:419;;;:::o;28913:410::-;28953:7;28976:20;28994:1;28976:20;:::i;:::-;28971:25;;29010:20;29028:1;29010:20;:::i;:::-;29005:25;;29065:1;29062;29058:9;29087:30;29105:11;29087:30;:::i;:::-;29076:41;;29266:1;29257:7;29253:15;29250:1;29247:22;29227:1;29220:9;29200:83;29177:139;;29296:18;;:::i;:::-;29177:139;28961:362;28913:410;;;;:::o;29329:220::-;29469:34;29465:1;29457:6;29453:14;29446:58;29538:3;29533:2;29525:6;29521:15;29514:28;29329:220;:::o;29555:366::-;29697:3;29718:67;29782:2;29777:3;29718:67;:::i;:::-;29711:74;;29794:93;29883:3;29794:93;:::i;:::-;29912:2;29907:3;29903:12;29896:19;;29555:366;;;:::o;29927:419::-;30093:4;30131:2;30120:9;30116:18;30108:26;;30180:9;30174:4;30170:20;30166:1;30155:9;30151:17;30144:47;30208:131;30334:4;30208:131;:::i;:::-;30200:139;;29927:419;;;:::o

Swarm Source

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