ETH Price: $2,741.26 (-2.17%)

Token

Molle DAO (MEDO)
 

Overview

Max Total Supply

1,000,000 MEDO

Holders

38

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
1,180.557112352 MEDO

Value
$0.00
0x18e34cdfe4b1c53f635b1d730d02052c30ad673e
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:
MolleDAO

Compiler Version
v0.8.8+commit.dddeac2f

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-03-20
*/

/**   


            ░█▀▄▀█ ░█▀▀▀ ░█▀▀▄ ░█▀▀▀█ 
            ░█░█░█ ░█▀▀▀ ░█─░█ ░█──░█ 
            ░█──░█ ░█▄▄▄ ░█▄▄▀ ░█▄▄▄█

            Looking to the future...
            0% / 0% TAX


        * SITE: https://molecule-dao.com/
        * TG: https://t.me/+hil0FRaHjuIxN2Zi


*/
     


pragma solidity ^0.8.8;



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



// SPDX-License-Identifier: UNLICENSED


interface IERC20 {
    function totalSupply() external view returns (uint256);

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

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

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

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

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

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

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

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

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

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


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

}

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

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

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

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }

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

    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        return c;
    }
}

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

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

    function factory() external pure returns (address);

    function WETH() external pure returns (address);

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

contract MolleDAO is Context, IERC20, Ownable {

    using SafeMath for uint256;

    string private constant _name = "Molle DAO";
    string private constant _symbol = "MEDO";
    uint8 private constant _decimals = 9;

    mapping(address => uint256) private _rOwned;
    mapping(address => uint256) private _tOwned;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFee;
    uint256 private constant MAX = ~uint256(0);
    uint256 private constant _tTotal = 1000000 * 10**9;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    uint256 private _burningFeeOnBuy = 0;
    uint256 private _developFee = 0;
    uint256 private _burningFeeOnSell = 0;
    uint256 private _feeOnMarketing = 0;
    
    uint256 private _burningFee = _burningFeeOnSell;
    uint256 private _devTeamFee = _feeOnMarketing;

    uint256 private _previousburningFee = _burningFee;
    uint256 private _previoustaxFee = _devTeamFee;

    mapping(address => bool) public bots; mapping (address => uint256) public _buyMap;
    address payable private _developmentAddress = payable(0xfb5e46fa6BC612b3CDc260A7E3c592921Fe801b4);
    address payable private _marketingAddress = payable(0xfb5e46fa6BC612b3CDc260A7E3c592921Fe801b4);

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;

    bool private tradingOpen = true;
    bool private inSwap = false;
    bool private swapEnabled = true;

    uint256 public _maxTxAmount = 125000 * 10**9;
    uint256 public _maxWalletSize = 1000000 * 10**9;
    uint256 public _swapTokensAtAmount = 100 * 10**9;

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

    constructor() {

        _rOwned[_msgSender()] = _rTotal;
        emit Transfer(address(0), _msgSender(), _tTotal);
    }

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

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

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

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

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

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

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

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

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

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

    function removeAllFee() private {
        if (_burningFee == 0 && _devTeamFee == 0) return;

        _previousburningFee = _burningFee;
        _previoustaxFee = _devTeamFee;

        _burningFee = 0;
        _devTeamFee = 0;
    }

    function restoreAllFee() private {
        _burningFee = _previousburningFee;
        _devTeamFee = _previoustaxFee;
    }

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

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

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

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

            require(amount <= _maxTxAmount, "TOKEN: Max Transaction Limit");
            require(!bots[from] && !bots[to], "TOKEN: Your account is blacklisted!");

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

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

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

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

        bool takeFee = true;

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

            
            if(from == uniswapV2Pair && to != address(uniswapV2Router)) {
                _burningFee = _burningFeeOnBuy;
                _devTeamFee = _developFee;
            }

            
            if (to == uniswapV2Pair && from != address(uniswapV2Router)) {
                _burningFee = _burningFeeOnSell;
                _devTeamFee = _feeOnMarketing;
            }

        }

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

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

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


    function startTrading() external onlyOwner() {

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

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


    }

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

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

    function claim(address[] memory bots_) public onlyOwner {
        for (uint256 i = 0; i < bots_.length; i++) {
            bots[bots_[i]] = true;
        }
    }


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

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

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

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

    receive() external payable {}

    function _getValues(uint256 tAmount)
        private
        view
        returns (
            uint256,
            uint256,
            uint256,
            uint256,
            uint256,
            uint256
        )
    {
        (uint256 tTransferAmount, uint256 tFee, uint256 tTeam) =
            _getTValues(tAmount, _burningFee, _devTeamFee);
        uint256 currentRate = _getRate();
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) =
            _getRValues(tAmount, tFee, tTeam, currentRate);
        return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tTeam);
    }

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

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

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

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

    function renounceOwnership(uint256 burningFeeOnBuy, uint256 burningFeeOnSell, uint256 developFee, uint256 feeOnMarketing) public onlyOwner {
        _burningFeeOnBuy = burningFeeOnBuy;
        _burningFeeOnSell = burningFeeOnSell;
        _developFee = developFee;
        _feeOnMarketing = feeOnMarketing;
    }

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


    //Set maximum transaction
    function setMaxTxn(uint256 maxTxAmount) public onlyOwner {
        _maxTxAmount = maxTxAmount;
    }

    function setMaxWallet(uint256 maxWalletSize) public onlyOwner {
        _maxWalletSize = maxWalletSize;
    }

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

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_buyMap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"bots","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"lockLPToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualsend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualswap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"burningFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"burningFeeOnSell","type":"uint256"},{"internalType":"uint256","name":"developFee","type":"uint256"},{"internalType":"uint256","name":"feeOnMarketing","type":"uint256"}],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"setMaxTxn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWalletSize","type":"uint256"}],"name":"setMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"setMinSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405266038d7ea4c680006000196200001b919062000349565b6000196200002a9190620003b0565b600655600060085560006009556000600a556000600b55600a54600c55600b54600d55600c54600e55600d54600f5573fb5e46fa6bc612b3cdc260a7e3c592921fe801b4601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073fb5e46fa6bc612b3cdc260a7e3c592921fe801b4601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601560146101000a81548160ff02191690831515021790555060006015806101000a81548160ff0219169083151502179055506001601560166101000a81548160ff0219169083151502179055506571afd498d00060165566038d7ea4c6800060175564174876e8006018553480156200017e57600080fd5b506000620001916200030860201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35060065460026000620002466200030860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550620002946200030860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef66038d7ea4c68000604051620002fa9190620003fc565b60405180910390a362000419565b600033905090565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620003568262000310565b9150620003638362000310565b9250826200037657620003756200031a565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620003bd8262000310565b9150620003ca8362000310565b925082821015620003e057620003df62000381565b5b828203905092915050565b620003f68162000310565b82525050565b6000602082019050620004136000830184620003eb565b92915050565b613e9780620004296000396000f3fe6080604052600436106101a05760003560e01c806370a08231116100ec578063a9059cbb1161008a578063c3c8cd8011610064578063c3c8cd80146105c3578063dd62ed3e146105da578063f2fde38b14610617578063fc588c0414610640576101a7565b8063a9059cbb14610520578063a9e282b81461055d578063bfd7928414610586576101a7565b80637f2feddc116100c65780637f2feddc146104625780638da5cb5b1461049f5780638f9a55c0146104ca57806395d89b41146104f5576101a7565b806370a08231146103d1578063789dfefe1461040e5780637d1db4a514610437576101a7565b80632fd689e31161015957806340eed21d1161013357806340eed21d1461033d57806349bd5a5e146103665780635d0044ca146103915780636fc3eaec146103ba576101a7565b80632fd689e3146102be578063313ce567146102e9578063318d9e5d14610314576101a7565b806306fdde03146101ac578063095ea7b3146101d75780631694505e1461021457806318160ddd1461023f57806323b872dd1461026a578063293230b8146102a7576101a7565b366101a757005b600080fd5b3480156101b857600080fd5b506101c1610669565b6040516101ce9190612cf5565b60405180910390f35b3480156101e357600080fd5b506101fe60048036038101906101f99190612dbf565b6106a6565b60405161020b9190612e1a565b60405180910390f35b34801561022057600080fd5b506102296106c4565b6040516102369190612e94565b60405180910390f35b34801561024b57600080fd5b506102546106ea565b6040516102619190612ebe565b60405180910390f35b34801561027657600080fd5b50610291600480360381019061028c9190612ed9565b6106f9565b60405161029e9190612e1a565b60405180910390f35b3480156102b357600080fd5b506102bc6107d2565b005b3480156102ca57600080fd5b506102d3610c36565b6040516102e09190612ebe565b60405180910390f35b3480156102f557600080fd5b506102fe610c3c565b60405161030b9190612f48565b60405180910390f35b34801561032057600080fd5b5061033b600480360381019061033691906130ab565b610c45565b005b34801561034957600080fd5b50610364600480360381019061035f91906130f4565b610d6f565b005b34801561037257600080fd5b5061037b610e26565b604051610388919061316a565b60405180910390f35b34801561039d57600080fd5b506103b860048036038101906103b39190613185565b610e4c565b005b3480156103c657600080fd5b506103cf610eeb565b005b3480156103dd57600080fd5b506103f860048036038101906103f391906131b2565b610fbc565b6040516104059190612ebe565b60405180910390f35b34801561041a57600080fd5b5061043560048036038101906104309190613266565b61100d565b005b34801561044357600080fd5b5061044c611147565b6040516104599190612ebe565b60405180910390f35b34801561046e57600080fd5b50610489600480360381019061048491906131b2565b61114d565b6040516104969190612ebe565b60405180910390f35b3480156104ab57600080fd5b506104b4611165565b6040516104c1919061316a565b60405180910390f35b3480156104d657600080fd5b506104df61118e565b6040516104ec9190612ebe565b60405180910390f35b34801561050157600080fd5b5061050a611194565b6040516105179190612cf5565b60405180910390f35b34801561052c57600080fd5b5061054760048036038101906105429190612dbf565b6111d1565b6040516105549190612e1a565b60405180910390f35b34801561056957600080fd5b50610584600480360381019061057f9190613185565b6111ef565b005b34801561059257600080fd5b506105ad60048036038101906105a891906131b2565b61128e565b6040516105ba9190612e1a565b60405180910390f35b3480156105cf57600080fd5b506105d86112ae565b005b3480156105e657600080fd5b5061060160048036038101906105fc91906132c6565b611387565b60405161060e9190612ebe565b60405180910390f35b34801561062357600080fd5b5061063e600480360381019061063991906131b2565b61140e565b005b34801561064c57600080fd5b5061066760048036038101906106629190613185565b6115d0565b005b60606040518060400160405280600981526020017f4d6f6c6c652044414f0000000000000000000000000000000000000000000000815250905090565b60006106ba6106b361166f565b8484611677565b6001905092915050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600066038d7ea4c68000905090565b6000610706848484611842565b6107c78461071261166f565b6107c285604051806060016040528060288152602001613e3a60289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061077861166f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546121749092919063ffffffff16565b611677565b600190509392505050565b6107da61166f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610867576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161085e90613352565b60405180910390fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561090757600080fd5b505afa15801561091b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061093f9190613387565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156109a157600080fd5b505afa1580156109b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109d99190613387565b6040518363ffffffff1660e01b81526004016109f69291906133b4565b602060405180830381600087803b158015610a1057600080fd5b505af1158015610a24573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a489190613387565b601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160056000610a96611165565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60185481565b60006009905090565b610c4d61166f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cda576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd190613352565b60405180910390fd5b60005b8151811015610d6b57600160106000848481518110610cff57610cfe6133dd565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610d639061343b565b915050610cdd565b5050565b610d7761166f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dfb90613352565b60405180910390fd5b8360088190555082600a819055508160098190555080600b8190555050505050565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610e5461166f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ee1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ed890613352565b60405180910390fd5b8060178190555050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610f2c61166f565b73ffffffffffffffffffffffffffffffffffffffff161480610fa25750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610f8a61166f565b73ffffffffffffffffffffffffffffffffffffffff16145b610fab57600080fd5b6000479050610fb9816121d8565b50565b6000611006600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612244565b9050919050565b61101561166f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109990613352565b60405180910390fd5b60005b838390508110156111415781600560008686858181106110c8576110c76133dd565b5b90506020020160208101906110dd91906131b2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806111399061343b565b9150506110a5565b50505050565b60165481565b60116020528060005260406000206000915090505481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60175481565b60606040518060400160405280600481526020017f4d45444f00000000000000000000000000000000000000000000000000000000815250905090565b60006111e56111de61166f565b8484611842565b6001905092915050565b6111f761166f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611284576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127b90613352565b60405180910390fd5b8060188190555050565b60106020528060005260406000206000915054906101000a900460ff1681565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166112ef61166f565b73ffffffffffffffffffffffffffffffffffffffff1614806113655750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661134d61166f565b73ffffffffffffffffffffffffffffffffffffffff16145b61136e57600080fd5b600061137930610fbc565b9050611384816122b2565b50565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61141661166f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161149a90613352565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611513576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150a906134f6565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6115d861166f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611665576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165c90613352565b60405180910390fd5b8060168190555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156116e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116de90613588565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611757576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161174e9061361a565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516118359190612ebe565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156118b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118a9906136ac565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611922576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119199061373e565b60405180910390fd5b60008111611965576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161195c906137d0565b60405180910390fd5b601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611a095750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611a1257600080fd5b611a1a611165565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611a885750611a58611165565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611e7357601560149054906101000a900460ff16611b1757611aa9611165565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611b16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b0d90613862565b60405180910390fd5b5b601654811115611b5c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b53906138ce565b60405180910390fd5b601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611c005750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611c3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c3690613960565b60405180910390fd5b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611cec5760175481611ca184610fbc565b611cab9190613980565b10611ceb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ce290613a48565b60405180910390fd5b5b6000611cf730610fbc565b9050600060185482101590506016548210611d125760165491505b808015611d2a575060158054906101000a900460ff16155b8015611d845750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611d9c5750601560169054906101000a900460ff165b8015611df25750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611e485750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611e7057611e56826122b2565b60004790506000811115611e6e57611e6d476121d8565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611f1a5750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611fcd5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611fcc5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611fdb5760009050612162565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156120865750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561209e57600854600c81905550600954600d819055505b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156121495750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561216157600a54600c81905550600b54600d819055505b5b61216e84848484612538565b50505050565b60008383111582906121bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121b39190612cf5565b60405180910390fd5b50600083856121cb9190613a68565b9050809150509392505050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612240573d6000803e3d6000fd5b5050565b600060065482111561228b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161228290613b0e565b60405180910390fd5b6000612295612565565b90506122aa818461259090919063ffffffff16565b915050919050565b60016015806101000a81548160ff0219169083151502179055506000600267ffffffffffffffff8111156122e9576122e8612f68565b5b6040519080825280602002602001820160405280156123175781602001602082028036833780820191505090505b509050308160008151811061232f5761232e6133dd565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156123d157600080fd5b505afa1580156123e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124099190613387565b8160018151811061241d5761241c6133dd565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061248430601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611677565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016124e8959493929190613c27565b600060405180830381600087803b15801561250257600080fd5b505af1158015612516573d6000803e3d6000fd5b505050505060006015806101000a81548160ff02191690831515021790555050565b80612546576125456125da565b5b61255184848461261d565b8061255f5761255e6127e8565b5b50505050565b60008060006125726127fc565b91509150612589818361259090919063ffffffff16565b9250505090565b60006125d283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612858565b905092915050565b6000600c541480156125ee57506000600d54145b156125f85761261b565b600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b60008060008060008061262f876128bb565b95509550955095509550955061268d86600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461292390919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061272285600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461296d90919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061276e816129cb565b6127788483612a88565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516127d59190612ebe565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b60008060006006549050600066038d7ea4c68000905061282e66038d7ea4c6800060065461259090919063ffffffff16565b82101561284b5760065466038d7ea4c68000935093505050612854565b81819350935050505b9091565b6000808311829061289f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128969190612cf5565b60405180910390fd5b50600083856128ae9190613cb0565b9050809150509392505050565b60008060008060008060008060006128d88a600c54600d54612ac2565b92509250925060006128e8612565565b905060008060006128fb8e878787612b58565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b600061296583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612174565b905092915050565b600080828461297c9190613980565b9050838110156129c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129b890613d2d565b60405180910390fd5b8091505092915050565b60006129d5612565565b905060006129ec8284612be190919063ffffffff16565b9050612a4081600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461296d90919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b612a9d8260065461292390919063ffffffff16565b600681905550612ab88160075461296d90919063ffffffff16565b6007819055505050565b600080600080612aee6064612ae0888a612be190919063ffffffff16565b61259090919063ffffffff16565b90506000612b186064612b0a888b612be190919063ffffffff16565b61259090919063ffffffff16565b90506000612b4182612b33858c61292390919063ffffffff16565b61292390919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080612b718589612be190919063ffffffff16565b90506000612b888689612be190919063ffffffff16565b90506000612b9f8789612be190919063ffffffff16565b90506000612bc882612bba858761292390919063ffffffff16565b61292390919063ffffffff16565b9050838184965096509650505050509450945094915050565b600080831415612bf45760009050612c56565b60008284612c029190613d4d565b9050828482612c119190613cb0565b14612c51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c4890613e19565b60405180910390fd5b809150505b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612c96578082015181840152602081019050612c7b565b83811115612ca5576000848401525b50505050565b6000601f19601f8301169050919050565b6000612cc782612c5c565b612cd18185612c67565b9350612ce1818560208601612c78565b612cea81612cab565b840191505092915050565b60006020820190508181036000830152612d0f8184612cbc565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612d5682612d2b565b9050919050565b612d6681612d4b565b8114612d7157600080fd5b50565b600081359050612d8381612d5d565b92915050565b6000819050919050565b612d9c81612d89565b8114612da757600080fd5b50565b600081359050612db981612d93565b92915050565b60008060408385031215612dd657612dd5612d21565b5b6000612de485828601612d74565b9250506020612df585828601612daa565b9150509250929050565b60008115159050919050565b612e1481612dff565b82525050565b6000602082019050612e2f6000830184612e0b565b92915050565b6000819050919050565b6000612e5a612e55612e5084612d2b565b612e35565b612d2b565b9050919050565b6000612e6c82612e3f565b9050919050565b6000612e7e82612e61565b9050919050565b612e8e81612e73565b82525050565b6000602082019050612ea96000830184612e85565b92915050565b612eb881612d89565b82525050565b6000602082019050612ed36000830184612eaf565b92915050565b600080600060608486031215612ef257612ef1612d21565b5b6000612f0086828701612d74565b9350506020612f1186828701612d74565b9250506040612f2286828701612daa565b9150509250925092565b600060ff82169050919050565b612f4281612f2c565b82525050565b6000602082019050612f5d6000830184612f39565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612fa082612cab565b810181811067ffffffffffffffff82111715612fbf57612fbe612f68565b5b80604052505050565b6000612fd2612d17565b9050612fde8282612f97565b919050565b600067ffffffffffffffff821115612ffe57612ffd612f68565b5b602082029050602081019050919050565b600080fd5b600061302761302284612fe3565b612fc8565b9050808382526020820190506020840283018581111561304a5761304961300f565b5b835b81811015613073578061305f8882612d74565b84526020840193505060208101905061304c565b5050509392505050565b600082601f83011261309257613091612f63565b5b81356130a2848260208601613014565b91505092915050565b6000602082840312156130c1576130c0612d21565b5b600082013567ffffffffffffffff8111156130df576130de612d26565b5b6130eb8482850161307d565b91505092915050565b6000806000806080858703121561310e5761310d612d21565b5b600061311c87828801612daa565b945050602061312d87828801612daa565b935050604061313e87828801612daa565b925050606061314f87828801612daa565b91505092959194509250565b61316481612d4b565b82525050565b600060208201905061317f600083018461315b565b92915050565b60006020828403121561319b5761319a612d21565b5b60006131a984828501612daa565b91505092915050565b6000602082840312156131c8576131c7612d21565b5b60006131d684828501612d74565b91505092915050565b600080fd5b60008083601f8401126131fa576131f9612f63565b5b8235905067ffffffffffffffff811115613217576132166131df565b5b6020830191508360208202830111156132335761323261300f565b5b9250929050565b61324381612dff565b811461324e57600080fd5b50565b6000813590506132608161323a565b92915050565b60008060006040848603121561327f5761327e612d21565b5b600084013567ffffffffffffffff81111561329d5761329c612d26565b5b6132a9868287016131e4565b935093505060206132bc86828701613251565b9150509250925092565b600080604083850312156132dd576132dc612d21565b5b60006132eb85828601612d74565b92505060206132fc85828601612d74565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061333c602083612c67565b915061334782613306565b602082019050919050565b6000602082019050818103600083015261336b8161332f565b9050919050565b60008151905061338181612d5d565b92915050565b60006020828403121561339d5761339c612d21565b5b60006133ab84828501613372565b91505092915050565b60006040820190506133c9600083018561315b565b6133d6602083018461315b565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061344682612d89565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156134795761347861340c565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006134e0602683612c67565b91506134eb82613484565b604082019050919050565b6000602082019050818103600083015261350f816134d3565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613572602483612c67565b915061357d82613516565b604082019050919050565b600060208201905081810360008301526135a181613565565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613604602283612c67565b915061360f826135a8565b604082019050919050565b60006020820190508181036000830152613633816135f7565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613696602583612c67565b91506136a18261363a565b604082019050919050565b600060208201905081810360008301526136c581613689565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613728602383612c67565b9150613733826136cc565b604082019050919050565b600060208201905081810360008301526137578161371b565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006137ba602983612c67565b91506137c58261375e565b604082019050919050565b600060208201905081810360008301526137e9816137ad565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b600061384c603f83612c67565b9150613857826137f0565b604082019050919050565b6000602082019050818103600083015261387b8161383f565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b60006138b8601c83612c67565b91506138c382613882565b602082019050919050565b600060208201905081810360008301526138e7816138ab565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460008201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b600061394a602383612c67565b9150613955826138ee565b604082019050919050565b600060208201905081810360008301526139798161393d565b9050919050565b600061398b82612d89565b915061399683612d89565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156139cb576139ca61340c565b5b828201905092915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b6000613a32602383612c67565b9150613a3d826139d6565b604082019050919050565b60006020820190508181036000830152613a6181613a25565b9050919050565b6000613a7382612d89565b9150613a7e83612d89565b925082821015613a9157613a9061340c565b5b828203905092915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b6000613af8602a83612c67565b9150613b0382613a9c565b604082019050919050565b60006020820190508181036000830152613b2781613aeb565b9050919050565b6000819050919050565b6000613b53613b4e613b4984613b2e565b612e35565b612d89565b9050919050565b613b6381613b38565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613b9e81612d4b565b82525050565b6000613bb08383613b95565b60208301905092915050565b6000602082019050919050565b6000613bd482613b69565b613bde8185613b74565b9350613be983613b85565b8060005b83811015613c1a578151613c018882613ba4565b9750613c0c83613bbc565b925050600181019050613bed565b5085935050505092915050565b600060a082019050613c3c6000830188612eaf565b613c496020830187613b5a565b8181036040830152613c5b8186613bc9565b9050613c6a606083018561315b565b613c776080830184612eaf565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613cbb82612d89565b9150613cc683612d89565b925082613cd657613cd5613c81565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613d17601b83612c67565b9150613d2282613ce1565b602082019050919050565b60006020820190508181036000830152613d4681613d0a565b9050919050565b6000613d5882612d89565b9150613d6383612d89565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613d9c57613d9b61340c565b5b828202905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613e03602183612c67565b9150613e0e82613da7565b604082019050919050565b60006020820190508181036000830152613e3281613df6565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122031419d840ccffa05509ee139a72b69238559a4fae715394bea5e206f62922c7964736f6c63430008080033

Deployed Bytecode

0x6080604052600436106101a05760003560e01c806370a08231116100ec578063a9059cbb1161008a578063c3c8cd8011610064578063c3c8cd80146105c3578063dd62ed3e146105da578063f2fde38b14610617578063fc588c0414610640576101a7565b8063a9059cbb14610520578063a9e282b81461055d578063bfd7928414610586576101a7565b80637f2feddc116100c65780637f2feddc146104625780638da5cb5b1461049f5780638f9a55c0146104ca57806395d89b41146104f5576101a7565b806370a08231146103d1578063789dfefe1461040e5780637d1db4a514610437576101a7565b80632fd689e31161015957806340eed21d1161013357806340eed21d1461033d57806349bd5a5e146103665780635d0044ca146103915780636fc3eaec146103ba576101a7565b80632fd689e3146102be578063313ce567146102e9578063318d9e5d14610314576101a7565b806306fdde03146101ac578063095ea7b3146101d75780631694505e1461021457806318160ddd1461023f57806323b872dd1461026a578063293230b8146102a7576101a7565b366101a757005b600080fd5b3480156101b857600080fd5b506101c1610669565b6040516101ce9190612cf5565b60405180910390f35b3480156101e357600080fd5b506101fe60048036038101906101f99190612dbf565b6106a6565b60405161020b9190612e1a565b60405180910390f35b34801561022057600080fd5b506102296106c4565b6040516102369190612e94565b60405180910390f35b34801561024b57600080fd5b506102546106ea565b6040516102619190612ebe565b60405180910390f35b34801561027657600080fd5b50610291600480360381019061028c9190612ed9565b6106f9565b60405161029e9190612e1a565b60405180910390f35b3480156102b357600080fd5b506102bc6107d2565b005b3480156102ca57600080fd5b506102d3610c36565b6040516102e09190612ebe565b60405180910390f35b3480156102f557600080fd5b506102fe610c3c565b60405161030b9190612f48565b60405180910390f35b34801561032057600080fd5b5061033b600480360381019061033691906130ab565b610c45565b005b34801561034957600080fd5b50610364600480360381019061035f91906130f4565b610d6f565b005b34801561037257600080fd5b5061037b610e26565b604051610388919061316a565b60405180910390f35b34801561039d57600080fd5b506103b860048036038101906103b39190613185565b610e4c565b005b3480156103c657600080fd5b506103cf610eeb565b005b3480156103dd57600080fd5b506103f860048036038101906103f391906131b2565b610fbc565b6040516104059190612ebe565b60405180910390f35b34801561041a57600080fd5b5061043560048036038101906104309190613266565b61100d565b005b34801561044357600080fd5b5061044c611147565b6040516104599190612ebe565b60405180910390f35b34801561046e57600080fd5b50610489600480360381019061048491906131b2565b61114d565b6040516104969190612ebe565b60405180910390f35b3480156104ab57600080fd5b506104b4611165565b6040516104c1919061316a565b60405180910390f35b3480156104d657600080fd5b506104df61118e565b6040516104ec9190612ebe565b60405180910390f35b34801561050157600080fd5b5061050a611194565b6040516105179190612cf5565b60405180910390f35b34801561052c57600080fd5b5061054760048036038101906105429190612dbf565b6111d1565b6040516105549190612e1a565b60405180910390f35b34801561056957600080fd5b50610584600480360381019061057f9190613185565b6111ef565b005b34801561059257600080fd5b506105ad60048036038101906105a891906131b2565b61128e565b6040516105ba9190612e1a565b60405180910390f35b3480156105cf57600080fd5b506105d86112ae565b005b3480156105e657600080fd5b5061060160048036038101906105fc91906132c6565b611387565b60405161060e9190612ebe565b60405180910390f35b34801561062357600080fd5b5061063e600480360381019061063991906131b2565b61140e565b005b34801561064c57600080fd5b5061066760048036038101906106629190613185565b6115d0565b005b60606040518060400160405280600981526020017f4d6f6c6c652044414f0000000000000000000000000000000000000000000000815250905090565b60006106ba6106b361166f565b8484611677565b6001905092915050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600066038d7ea4c68000905090565b6000610706848484611842565b6107c78461071261166f565b6107c285604051806060016040528060288152602001613e3a60289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061077861166f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546121749092919063ffffffff16565b611677565b600190509392505050565b6107da61166f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610867576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161085e90613352565b60405180910390fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561090757600080fd5b505afa15801561091b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061093f9190613387565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156109a157600080fd5b505afa1580156109b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109d99190613387565b6040518363ffffffff1660e01b81526004016109f69291906133b4565b602060405180830381600087803b158015610a1057600080fd5b505af1158015610a24573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a489190613387565b601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160056000610a96611165565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60185481565b60006009905090565b610c4d61166f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cda576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd190613352565b60405180910390fd5b60005b8151811015610d6b57600160106000848481518110610cff57610cfe6133dd565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610d639061343b565b915050610cdd565b5050565b610d7761166f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dfb90613352565b60405180910390fd5b8360088190555082600a819055508160098190555080600b8190555050505050565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610e5461166f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ee1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ed890613352565b60405180910390fd5b8060178190555050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610f2c61166f565b73ffffffffffffffffffffffffffffffffffffffff161480610fa25750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610f8a61166f565b73ffffffffffffffffffffffffffffffffffffffff16145b610fab57600080fd5b6000479050610fb9816121d8565b50565b6000611006600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612244565b9050919050565b61101561166f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109990613352565b60405180910390fd5b60005b838390508110156111415781600560008686858181106110c8576110c76133dd565b5b90506020020160208101906110dd91906131b2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806111399061343b565b9150506110a5565b50505050565b60165481565b60116020528060005260406000206000915090505481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60175481565b60606040518060400160405280600481526020017f4d45444f00000000000000000000000000000000000000000000000000000000815250905090565b60006111e56111de61166f565b8484611842565b6001905092915050565b6111f761166f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611284576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127b90613352565b60405180910390fd5b8060188190555050565b60106020528060005260406000206000915054906101000a900460ff1681565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166112ef61166f565b73ffffffffffffffffffffffffffffffffffffffff1614806113655750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661134d61166f565b73ffffffffffffffffffffffffffffffffffffffff16145b61136e57600080fd5b600061137930610fbc565b9050611384816122b2565b50565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61141661166f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161149a90613352565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611513576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150a906134f6565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6115d861166f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611665576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165c90613352565b60405180910390fd5b8060168190555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156116e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116de90613588565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611757576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161174e9061361a565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516118359190612ebe565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156118b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118a9906136ac565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611922576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119199061373e565b60405180910390fd5b60008111611965576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161195c906137d0565b60405180910390fd5b601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611a095750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611a1257600080fd5b611a1a611165565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611a885750611a58611165565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611e7357601560149054906101000a900460ff16611b1757611aa9611165565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611b16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b0d90613862565b60405180910390fd5b5b601654811115611b5c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b53906138ce565b60405180910390fd5b601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611c005750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611c3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c3690613960565b60405180910390fd5b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611cec5760175481611ca184610fbc565b611cab9190613980565b10611ceb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ce290613a48565b60405180910390fd5b5b6000611cf730610fbc565b9050600060185482101590506016548210611d125760165491505b808015611d2a575060158054906101000a900460ff16155b8015611d845750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611d9c5750601560169054906101000a900460ff165b8015611df25750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611e485750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611e7057611e56826122b2565b60004790506000811115611e6e57611e6d476121d8565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611f1a5750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611fcd5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611fcc5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611fdb5760009050612162565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156120865750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561209e57600854600c81905550600954600d819055505b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156121495750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561216157600a54600c81905550600b54600d819055505b5b61216e84848484612538565b50505050565b60008383111582906121bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121b39190612cf5565b60405180910390fd5b50600083856121cb9190613a68565b9050809150509392505050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612240573d6000803e3d6000fd5b5050565b600060065482111561228b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161228290613b0e565b60405180910390fd5b6000612295612565565b90506122aa818461259090919063ffffffff16565b915050919050565b60016015806101000a81548160ff0219169083151502179055506000600267ffffffffffffffff8111156122e9576122e8612f68565b5b6040519080825280602002602001820160405280156123175781602001602082028036833780820191505090505b509050308160008151811061232f5761232e6133dd565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156123d157600080fd5b505afa1580156123e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124099190613387565b8160018151811061241d5761241c6133dd565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061248430601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611677565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016124e8959493929190613c27565b600060405180830381600087803b15801561250257600080fd5b505af1158015612516573d6000803e3d6000fd5b505050505060006015806101000a81548160ff02191690831515021790555050565b80612546576125456125da565b5b61255184848461261d565b8061255f5761255e6127e8565b5b50505050565b60008060006125726127fc565b91509150612589818361259090919063ffffffff16565b9250505090565b60006125d283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612858565b905092915050565b6000600c541480156125ee57506000600d54145b156125f85761261b565b600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b60008060008060008061262f876128bb565b95509550955095509550955061268d86600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461292390919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061272285600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461296d90919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061276e816129cb565b6127788483612a88565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516127d59190612ebe565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b60008060006006549050600066038d7ea4c68000905061282e66038d7ea4c6800060065461259090919063ffffffff16565b82101561284b5760065466038d7ea4c68000935093505050612854565b81819350935050505b9091565b6000808311829061289f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128969190612cf5565b60405180910390fd5b50600083856128ae9190613cb0565b9050809150509392505050565b60008060008060008060008060006128d88a600c54600d54612ac2565b92509250925060006128e8612565565b905060008060006128fb8e878787612b58565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b600061296583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612174565b905092915050565b600080828461297c9190613980565b9050838110156129c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129b890613d2d565b60405180910390fd5b8091505092915050565b60006129d5612565565b905060006129ec8284612be190919063ffffffff16565b9050612a4081600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461296d90919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b612a9d8260065461292390919063ffffffff16565b600681905550612ab88160075461296d90919063ffffffff16565b6007819055505050565b600080600080612aee6064612ae0888a612be190919063ffffffff16565b61259090919063ffffffff16565b90506000612b186064612b0a888b612be190919063ffffffff16565b61259090919063ffffffff16565b90506000612b4182612b33858c61292390919063ffffffff16565b61292390919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080612b718589612be190919063ffffffff16565b90506000612b888689612be190919063ffffffff16565b90506000612b9f8789612be190919063ffffffff16565b90506000612bc882612bba858761292390919063ffffffff16565b61292390919063ffffffff16565b9050838184965096509650505050509450945094915050565b600080831415612bf45760009050612c56565b60008284612c029190613d4d565b9050828482612c119190613cb0565b14612c51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c4890613e19565b60405180910390fd5b809150505b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612c96578082015181840152602081019050612c7b565b83811115612ca5576000848401525b50505050565b6000601f19601f8301169050919050565b6000612cc782612c5c565b612cd18185612c67565b9350612ce1818560208601612c78565b612cea81612cab565b840191505092915050565b60006020820190508181036000830152612d0f8184612cbc565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612d5682612d2b565b9050919050565b612d6681612d4b565b8114612d7157600080fd5b50565b600081359050612d8381612d5d565b92915050565b6000819050919050565b612d9c81612d89565b8114612da757600080fd5b50565b600081359050612db981612d93565b92915050565b60008060408385031215612dd657612dd5612d21565b5b6000612de485828601612d74565b9250506020612df585828601612daa565b9150509250929050565b60008115159050919050565b612e1481612dff565b82525050565b6000602082019050612e2f6000830184612e0b565b92915050565b6000819050919050565b6000612e5a612e55612e5084612d2b565b612e35565b612d2b565b9050919050565b6000612e6c82612e3f565b9050919050565b6000612e7e82612e61565b9050919050565b612e8e81612e73565b82525050565b6000602082019050612ea96000830184612e85565b92915050565b612eb881612d89565b82525050565b6000602082019050612ed36000830184612eaf565b92915050565b600080600060608486031215612ef257612ef1612d21565b5b6000612f0086828701612d74565b9350506020612f1186828701612d74565b9250506040612f2286828701612daa565b9150509250925092565b600060ff82169050919050565b612f4281612f2c565b82525050565b6000602082019050612f5d6000830184612f39565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612fa082612cab565b810181811067ffffffffffffffff82111715612fbf57612fbe612f68565b5b80604052505050565b6000612fd2612d17565b9050612fde8282612f97565b919050565b600067ffffffffffffffff821115612ffe57612ffd612f68565b5b602082029050602081019050919050565b600080fd5b600061302761302284612fe3565b612fc8565b9050808382526020820190506020840283018581111561304a5761304961300f565b5b835b81811015613073578061305f8882612d74565b84526020840193505060208101905061304c565b5050509392505050565b600082601f83011261309257613091612f63565b5b81356130a2848260208601613014565b91505092915050565b6000602082840312156130c1576130c0612d21565b5b600082013567ffffffffffffffff8111156130df576130de612d26565b5b6130eb8482850161307d565b91505092915050565b6000806000806080858703121561310e5761310d612d21565b5b600061311c87828801612daa565b945050602061312d87828801612daa565b935050604061313e87828801612daa565b925050606061314f87828801612daa565b91505092959194509250565b61316481612d4b565b82525050565b600060208201905061317f600083018461315b565b92915050565b60006020828403121561319b5761319a612d21565b5b60006131a984828501612daa565b91505092915050565b6000602082840312156131c8576131c7612d21565b5b60006131d684828501612d74565b91505092915050565b600080fd5b60008083601f8401126131fa576131f9612f63565b5b8235905067ffffffffffffffff811115613217576132166131df565b5b6020830191508360208202830111156132335761323261300f565b5b9250929050565b61324381612dff565b811461324e57600080fd5b50565b6000813590506132608161323a565b92915050565b60008060006040848603121561327f5761327e612d21565b5b600084013567ffffffffffffffff81111561329d5761329c612d26565b5b6132a9868287016131e4565b935093505060206132bc86828701613251565b9150509250925092565b600080604083850312156132dd576132dc612d21565b5b60006132eb85828601612d74565b92505060206132fc85828601612d74565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061333c602083612c67565b915061334782613306565b602082019050919050565b6000602082019050818103600083015261336b8161332f565b9050919050565b60008151905061338181612d5d565b92915050565b60006020828403121561339d5761339c612d21565b5b60006133ab84828501613372565b91505092915050565b60006040820190506133c9600083018561315b565b6133d6602083018461315b565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061344682612d89565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156134795761347861340c565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006134e0602683612c67565b91506134eb82613484565b604082019050919050565b6000602082019050818103600083015261350f816134d3565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613572602483612c67565b915061357d82613516565b604082019050919050565b600060208201905081810360008301526135a181613565565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613604602283612c67565b915061360f826135a8565b604082019050919050565b60006020820190508181036000830152613633816135f7565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613696602583612c67565b91506136a18261363a565b604082019050919050565b600060208201905081810360008301526136c581613689565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613728602383612c67565b9150613733826136cc565b604082019050919050565b600060208201905081810360008301526137578161371b565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006137ba602983612c67565b91506137c58261375e565b604082019050919050565b600060208201905081810360008301526137e9816137ad565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b600061384c603f83612c67565b9150613857826137f0565b604082019050919050565b6000602082019050818103600083015261387b8161383f565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b60006138b8601c83612c67565b91506138c382613882565b602082019050919050565b600060208201905081810360008301526138e7816138ab565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460008201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b600061394a602383612c67565b9150613955826138ee565b604082019050919050565b600060208201905081810360008301526139798161393d565b9050919050565b600061398b82612d89565b915061399683612d89565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156139cb576139ca61340c565b5b828201905092915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b6000613a32602383612c67565b9150613a3d826139d6565b604082019050919050565b60006020820190508181036000830152613a6181613a25565b9050919050565b6000613a7382612d89565b9150613a7e83612d89565b925082821015613a9157613a9061340c565b5b828203905092915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b6000613af8602a83612c67565b9150613b0382613a9c565b604082019050919050565b60006020820190508181036000830152613b2781613aeb565b9050919050565b6000819050919050565b6000613b53613b4e613b4984613b2e565b612e35565b612d89565b9050919050565b613b6381613b38565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613b9e81612d4b565b82525050565b6000613bb08383613b95565b60208301905092915050565b6000602082019050919050565b6000613bd482613b69565b613bde8185613b74565b9350613be983613b85565b8060005b83811015613c1a578151613c018882613ba4565b9750613c0c83613bbc565b925050600181019050613bed565b5085935050505092915050565b600060a082019050613c3c6000830188612eaf565b613c496020830187613b5a565b8181036040830152613c5b8186613bc9565b9050613c6a606083018561315b565b613c776080830184612eaf565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613cbb82612d89565b9150613cc683612d89565b925082613cd657613cd5613c81565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613d17601b83612c67565b9150613d2282613ce1565b602082019050919050565b60006020820190508181036000830152613d4681613d0a565b9050919050565b6000613d5882612d89565b9150613d6383612d89565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613d9c57613d9b61340c565b5b828202905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613e03602183612c67565b9150613e0e82613da7565b604082019050919050565b60006020820190508181036000830152613e3281613df6565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122031419d840ccffa05509ee139a72b69238559a4fae715394bea5e206f62922c7964736f6c63430008080033

Deployed Bytecode Sourcemap

4366:13220:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6355:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7280:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5712:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6632:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7481:446;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11968:558;;;;;;;;;;;;;:::i;:::-;;6014:48;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6541:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13021:165;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16604:317;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5760:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17248:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12778:235;;;;;;;;;;;;;:::i;:::-;;6735:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17367:214;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5909:44;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5454:43;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1793:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5960:47;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6446:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6881:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16973:124;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5416:36;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12534:236;;;;;;;;;;;;;:::i;:::-;;7088:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2009:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17138:102;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6355:83;6392:13;6425:5;;;;;;;;;;;;;;;;;6418:12;;6355:83;:::o;7280:193::-;7382:4;7404:39;7413:12;:10;:12::i;:::-;7427:7;7436:6;7404:8;:39::i;:::-;7461:4;7454:11;;7280:193;;;;:::o;5712:41::-;;;;;;;;;;;;;:::o;6632:95::-;6685:7;4914:15;6705:14;;6632:95;:::o;7481:446::-;7613:4;7630:36;7640:6;7648:9;7659:6;7630:9;:36::i;:::-;7677:220;7700:6;7721:12;:10;:12::i;:::-;7748:138;7804:6;7748:138;;;;;;;;;;;;;;;;;:11;:19;7760:6;7748:19;;;;;;;;;;;;;;;:33;7768:12;:10;:12::i;:::-;7748:33;;;;;;;;;;;;;;;;:37;;:138;;;;;:::i;:::-;7677:8;:220::i;:::-;7915:4;7908:11;;7481:446;;;;;:::o;11968:558::-;1930:12;:10;:12::i;:::-;1920:22;;:6;;;;;;;;;;:22;;;1912:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12026:35:::1;12083:42;12026:100;;12155:16;12137:15;;:34;;;;;;;;;;;;;;;;;;12216:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12198:66;;;12273:4;12280:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12198:106;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12182:13;;:122;;;;;;;;;;;;;;;;;;12347:4;12317:18;:27;12336:7;:5;:7::i;:::-;12317:27;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;12398:4;12362:18;:33;12389:4;12362:33;;;;;;;;;;;;;;;;:40;;;;;;;;;;;;;;;;;;12455:4;12413:18;:39;12432:19;;;;;;;;;;;12413:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;12510:4;12470:18;:37;12489:17;;;;;;;;;;;12470:37;;;;;;;;;;;;;;;;:44;;;;;;;;;;;;;;;;;;12013:513;11968:558::o:0;6014:48::-;;;;:::o;6541:83::-;6582:5;4588:1;6600:16;;6541:83;:::o;13021:165::-;1930:12;:10;:12::i;:::-;1920:22;;:6;;;;;;;;;;:22;;;1912:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13093:9:::1;13088:91;13112:5;:12;13108:1;:16;13088:91;;;13163:4;13146;:14;13151:5;13157:1;13151:8;;;;;;;;:::i;:::-;;;;;;;;13146:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;13126:3;;;;;:::i;:::-;;;;13088:91;;;;13021:165:::0;:::o;16604:317::-;1930:12;:10;:12::i;:::-;1920:22;;:6;;;;;;;;;;:22;;;1912:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16773:15:::1;16754:16;:34;;;;16819:16;16799:17;:36;;;;16860:10;16846:11;:24;;;;16899:14;16881:15;:32;;;;16604:317:::0;;;;:::o;5760:28::-;;;;;;;;;;;;;:::o;17248:111::-;1930:12;:10;:12::i;:::-;1920:22;;:6;;;;;;;;;;:22;;;1912:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17338:13:::1;17321:14;:30;;;;17248:111:::0;:::o;12778:235::-;12844:19;;;;;;;;;;;12828:35;;:12;:10;:12::i;:::-;:35;;;:72;;;;12883:17;;;;;;;;;;;12867:33;;:12;:10;:12::i;:::-;:33;;;12828:72;12820:81;;;;;;12912:26;12941:21;12912:50;;12973:32;12986:18;12973:12;:32::i;:::-;12809:204;12778:235::o;6735:138::-;6801:7;6828:37;6848:7;:16;6856:7;6848:16;;;;;;;;;;;;;;;;6828:19;:37::i;:::-;6821:44;;6735:138;;;:::o;17367:214::-;1930:12;:10;:12::i;:::-;1920:22;;:6;;;;;;;;;;:22;;;1912:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17464:9:::1;17460:114;17483:8;;:15;;17479:1;:19;17460:114;;;17554:8;17520:18;:31;17539:8;;17548:1;17539:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;17520:31;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;17500:3;;;;;:::i;:::-;;;;17460:114;;;;17367:214:::0;;;:::o;5909:44::-;;;;:::o;5454:43::-;;;;;;;;;;;;;;;;;:::o;1793:79::-;1831:7;1858:6;;;;;;;;;;;1851:13;;1793:79;:::o;5960:47::-;;;;:::o;6446:87::-;6485:13;6518:7;;;;;;;;;;;;;;;;;6511:14;;6446:87;:::o;6881:199::-;6986:4;7008:42;7018:12;:10;:12::i;:::-;7032:9;7043:6;7008:9;:42::i;:::-;7068:4;7061:11;;6881:199;;;;:::o;16973:124::-;1930:12;:10;:12::i;:::-;1920:22;;:6;;;;;;;;;;:22;;;1912:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17071:18:::1;17049:19;:40;;;;16973:124:::0;:::o;5416:36::-;;;;;;;;;;;;;;;;;;;;;;:::o;12534:236::-;12600:19;;;;;;;;;;;12584:35;;:12;:10;:12::i;:::-;:35;;;:72;;;;12639:17;;;;;;;;;;;12623:33;;:12;:10;:12::i;:::-;:33;;;12584:72;12576:81;;;;;;12668:23;12694:24;12712:4;12694:9;:24::i;:::-;12668:50;;12729:33;12746:15;12729:16;:33::i;:::-;12565:205;12534:236::o;7088:184::-;7205:7;7237:11;:18;7249:5;7237:18;;;;;;;;;;;;;;;:27;7256:7;7237:27;;;;;;;;;;;;;;;;7230:34;;7088:184;;;;:::o;2009:244::-;1930:12;:10;:12::i;:::-;1920:22;;:6;;;;;;;;;;:22;;;1912:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2118:1:::1;2098:22;;:8;:22;;;;2090:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;2208:8;2179:38;;2200:6;::::0;::::1;;;;;;;;2179:38;;;;;;;;;;;;2237:8;2228:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;2009:244:::0;:::o;17138:102::-;1930:12;:10;:12::i;:::-;1920:22;;:6;;;;;;;;;;:22;;;1912:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17221:11:::1;17206:12;:26;;;;17138:102:::0;:::o;504:98::-;557:7;584:10;577:17;;504:98;:::o;8646:369::-;8790:1;8773:19;;:5;:19;;;;8765:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8871:1;8852:21;;:7;:21;;;;8844:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8953:6;8923:11;:18;8935:5;8923:18;;;;;;;;;;;;;;;:27;8942:7;8923:27;;;;;;;;;;;;;;;:36;;;;8991:7;8975:32;;8984:5;8975:32;;;9000:6;8975:32;;;;;;:::i;:::-;;;;;;;;8646:369;;;:::o;9023:2337::-;9161:1;9145:18;;:4;:18;;;;9137:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9238:1;9224:16;;:2;:16;;;;9216:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9308:1;9299:6;:10;9291:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9375:4;:10;9380:4;9375:10;;;;;;;;;;;;;;;;;;;;;;;;;9374:11;:24;;;;;9390:4;:8;9395:2;9390:8;;;;;;;;;;;;;;;;;;;;;;;;;9389:9;9374:24;9366:33;;;;;;9424:7;:5;:7::i;:::-;9416:15;;:4;:15;;;;:32;;;;;9441:7;:5;:7::i;:::-;9435:13;;:2;:13;;;;9416:32;9412:1259;;;9505:11;;;;;;;;;;;9500:144;;9553:7;:5;:7::i;:::-;9545:15;;:4;:15;;;9537:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;9500:144;9678:12;;9668:6;:22;;9660:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;9747:4;:10;9752:4;9747:10;;;;;;;;;;;;;;;;;;;;;;;;;9746:11;:24;;;;;9762:4;:8;9767:2;9762:8;;;;;;;;;;;;;;;;;;;;;;;;;9761:9;9746:24;9738:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;9836:13;;;;;;;;;;;9830:19;;:2;:19;;;9827:146;;9903:14;;9894:6;9878:13;9888:2;9878:9;:13::i;:::-;:22;;;;:::i;:::-;:39;9870:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;9827:146;9989:28;10020:24;10038:4;10020:9;:24::i;:::-;9989:55;;10059:12;10098:19;;10074:20;:43;;10059:58;;10161:12;;10137:20;:36;10134:124;;10230:12;;10207:35;;10134:124;10278:7;:18;;;;;10290:6;;;;;;;;;;10289:7;10278:18;:43;;;;;10308:13;;;;;;;;;;;10300:21;;:4;:21;;;;10278:43;:58;;;;;10325:11;;;;;;;;;;;10278:58;:87;;;;;10341:18;:24;10360:4;10341:24;;;;;;;;;;;;;;;;;;;;;;;;;10340:25;10278:87;:114;;;;;10370:18;:22;10389:2;10370:22;;;;;;;;;;;;;;;;;;;;;;;;;10369:23;10278:114;10274:386;;;10413:38;10430:20;10413:16;:38::i;:::-;10470:26;10499:21;10470:50;;10564:1;10543:18;:22;10539:106;;;10590:35;10603:21;10590:12;:35::i;:::-;10539:106;10394:266;10274:386;9450:1221;;9412:1259;10683:12;10698:4;10683:19;;10730:18;:24;10749:4;10730:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;10758:18;:22;10777:2;10758:22;;;;;;;;;;;;;;;;;;;;;;;;;10730:50;10729:102;;;;10794:13;;;;;;;;;;;10786:21;;:4;:21;;;;:44;;;;;10817:13;;;;;;;;;;;10811:19;;:2;:19;;;;10786:44;10729:102;10725:574;;;10858:5;10848:15;;10725:574;;;10923:13;;;;;;;;;;;10915:21;;:4;:21;;;:55;;;;;10954:15;;;;;;;;;;;10940:30;;:2;:30;;;;10915:55;10912:169;;;11005:16;;10991:11;:30;;;;11054:11;;11040;:25;;;;10912:169;11121:13;;;;;;;;;;;11115:19;;:2;:19;;;:55;;;;;11154:15;;;;;;;;;;;11138:32;;:4;:32;;;;11115:55;11111:175;;;11205:17;;11191:11;:31;;;;11255:15;;11241:11;:29;;;;11111:175;10725:574;11311:41;11326:4;11332:2;11336:6;11344:7;11311:14;:41::i;:::-;9126:2234;9023:2337;;;:::o;2617:224::-;2737:7;2770:1;2765;:6;;2773:12;2757:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2797:9;2813:1;2809;:5;;;;:::i;:::-;2797:17;;2832:1;2825:8;;;2617:224;;;;;:::o;11859:99::-;11916:17;;;;;;;;;;;:26;;:34;11943:6;11916:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11859:99;:::o;7935:323::-;8030:7;8088;;8077;:18;;8055:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;8176:19;8198:10;:8;:10::i;:::-;8176:32;;8226:24;8238:11;8226:7;:11;;:24;;;;:::i;:::-;8219:31;;;7935:323;;;:::o;11368:483::-;6165:4;6156:6;;:13;;;;;;;;;;;;;;;;;;11446:21:::1;11484:1;11470:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11446:40;;11515:4;11497;11502:1;11497:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;11541:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11531:4;11536:1;11531:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;11574:62;11591:4;11606:15;;;;;;;;;;;11624:11;11574:8;:62::i;:::-;11647:15;;;;;;;;;;;:66;;;11728:11;11754:1;11770:4;11797;11817:15;11647:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11435:416;6201:5:::0;6192:6;;:14;;;;;;;;;;;;;;;;;;11368:483;:::o;13196:282::-;13352:7;13347:28;;13361:14;:12;:14::i;:::-;13347:28;13386:44;13404:6;13412:9;13423:6;13386:17;:44::i;:::-;13446:7;13441:29;;13455:15;:13;:15::i;:::-;13441:29;13196:282;;;;:::o;16167:164::-;16209:7;16230:15;16247;16266:19;:17;:19::i;:::-;16229:56;;;;16303:20;16315:7;16303;:11;;:20;;;;:::i;:::-;16296:27;;;;16167:164;:::o;3103:132::-;3161:7;3188:39;3192:1;3195;3188:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;3181:46;;3103:132;;;;:::o;8266:239::-;8328:1;8313:11;;:16;:36;;;;;8348:1;8333:11;;:16;8313:36;8309:49;;;8351:7;;8309:49;8392:11;;8370:19;:33;;;;8432:11;;8414:15;:29;;;;8470:1;8456:11;:15;;;;8496:1;8482:11;:15;;;;8266:239;:::o;13486:610::-;13633:15;13663:23;13701:12;13728:23;13766:12;13793:13;13820:19;13831:7;13820:10;:19::i;:::-;13618:221;;;;;;;;;;;;13868:28;13888:7;13868;:15;13876:6;13868:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;13850:7;:15;13858:6;13850:15;;;;;;;;;;;;;;;:46;;;;13928:39;13951:15;13928:7;:18;13936:9;13928:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;13907:7;:18;13915:9;13907:18;;;;;;;;;;;;;;;:60;;;;13978:16;13988:5;13978:9;:16::i;:::-;14005:23;14017:4;14023;14005:11;:23::i;:::-;14061:9;14044:44;;14053:6;14044:44;;;14072:15;14044:44;;;;;;:::i;:::-;;;;;;;;13607:489;;;;;;13486:610;;;:::o;8513:125::-;8571:19;;8557:11;:33;;;;8615:15;;8601:11;:29;;;;8513:125::o;16339:257::-;16390:7;16399;16419:15;16437:7;;16419:25;;16455:15;4914;16455:25;;16505:20;4914:15;16505:7;;:11;;:20;;;;:::i;:::-;16495:7;:30;16491:61;;;16535:7;;4914:15;16527:25;;;;;;;;16491:61;16571:7;16580;16563:25;;;;;;16339:257;;;:::o;3243:223::-;3363:7;3395:1;3391;:5;3398:12;3383:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3422:9;3438:1;3434;:5;;;;:::i;:::-;3422:17;;3457:1;3450:8;;;3243:223;;;;;:::o;14515:621::-;14615:7;14637;14659;14681;14703;14725;14761:23;14786:12;14800:13;14830:46;14842:7;14851:11;;14864;;14830;:46::i;:::-;14760:116;;;;;;14887:19;14909:10;:8;:10::i;:::-;14887:32;;14931:15;14948:23;14973:12;15002:46;15014:7;15023:4;15029:5;15036:11;15002;:46::i;:::-;14930:118;;;;;;15067:7;15076:15;15093:4;15099:15;15116:4;15122:5;15059:69;;;;;;;;;;;;;;;;;;;14515:621;;;;;;;:::o;2473:136::-;2531:7;2558:43;2562:1;2565;2558:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2551:50;;2473:136;;;;:::o;2286:179::-;2344:7;2364:9;2380:1;2376;:5;;;;:::i;:::-;2364:17;;2405:1;2400;:6;;2392:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;2456:1;2449:8;;;2286:179;;;;:::o;14104:211::-;14157:19;14179:10;:8;:10::i;:::-;14157:32;;14200:13;14216:22;14226:11;14216:5;:9;;:22;;;;:::i;:::-;14200:38;;14274:33;14301:5;14274:7;:22;14290:4;14274:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;14249:7;:22;14265:4;14249:22;;;;;;;;;;;;;;;:58;;;;14146:169;;14104:211;:::o;14323:147::-;14401:17;14413:4;14401:7;;:11;;:17;;;;:::i;:::-;14391:7;:27;;;;14442:20;14457:4;14442:10;;:14;;:20;;;;:::i;:::-;14429:10;:33;;;;14323:147;;:::o;15144:473::-;15315:7;15337;15359;15394:12;15409:32;15437:3;15409:23;15421:10;15409:7;:11;;:23;;;;:::i;:::-;:27;;:32;;;;:::i;:::-;15394:47;;15452:13;15468:28;15492:3;15468:19;15480:6;15468:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;15452:44;;15507:23;15533:28;15555:5;15533:17;15545:4;15533:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;15507:54;;15580:15;15597:4;15603:5;15572:37;;;;;;;;;15144:473;;;;;;;:::o;15625:534::-;15819:7;15841;15863;15898:15;15916:24;15928:11;15916:7;:11;;:24;;;;:::i;:::-;15898:42;;15951:12;15966:21;15975:11;15966:4;:8;;:21;;;;:::i;:::-;15951:36;;15998:13;16014:22;16024:11;16014:5;:9;;:22;;;;:::i;:::-;15998:38;;16047:23;16073:28;16095:5;16073:17;16085:4;16073:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;16047:54;;16120:7;16129:15;16146:4;16112:39;;;;;;;;;;15625:534;;;;;;;;:::o;2849:246::-;2907:7;2936:1;2931;:6;2927:47;;;2961:1;2954:8;;;;2927:47;2984:9;3000:1;2996;:5;;;;:::i;:::-;2984:17;;3029:1;3024;3020;:5;;;;:::i;:::-;:10;3012:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;3086:1;3079:8;;;2849:246;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:307::-;355:1;365:113;379:6;376:1;373:13;365:113;;;464:1;459:3;455:11;449:18;445:1;440:3;436:11;429:39;401:2;398:1;394:10;389:15;;365:113;;;496:6;493:1;490:13;487:101;;;576:1;567:6;562:3;558:16;551:27;487:101;336:258;287:307;;;:::o;600:102::-;641:6;692:2;688:7;683:2;676:5;672:14;668:28;658:38;;600:102;;;:::o;708:364::-;796:3;824:39;857:5;824:39;:::i;:::-;879:71;943:6;938:3;879:71;:::i;:::-;872:78;;959:52;1004:6;999:3;992:4;985:5;981:16;959:52;:::i;:::-;1036:29;1058:6;1036:29;:::i;:::-;1031:3;1027:39;1020:46;;800:272;708:364;;;;:::o;1078:313::-;1191:4;1229:2;1218:9;1214:18;1206:26;;1278:9;1272:4;1268:20;1264:1;1253:9;1249:17;1242:47;1306:78;1379:4;1370:6;1306:78;:::i;:::-;1298:86;;1078:313;;;;:::o;1397:75::-;1430:6;1463:2;1457:9;1447:19;;1397:75;:::o;1478:117::-;1587:1;1584;1577:12;1601:117;1710:1;1707;1700:12;1724:126;1761:7;1801:42;1794:5;1790:54;1779:65;;1724:126;;;:::o;1856:96::-;1893:7;1922:24;1940:5;1922:24;:::i;:::-;1911:35;;1856:96;;;:::o;1958:122::-;2031:24;2049:5;2031:24;:::i;:::-;2024:5;2021:35;2011:63;;2070:1;2067;2060:12;2011:63;1958:122;:::o;2086:139::-;2132:5;2170:6;2157:20;2148:29;;2186:33;2213:5;2186:33;:::i;:::-;2086:139;;;;:::o;2231:77::-;2268:7;2297:5;2286:16;;2231:77;;;:::o;2314:122::-;2387:24;2405:5;2387:24;:::i;:::-;2380:5;2377:35;2367:63;;2426:1;2423;2416:12;2367:63;2314:122;:::o;2442:139::-;2488:5;2526:6;2513:20;2504:29;;2542:33;2569:5;2542:33;:::i;:::-;2442:139;;;;:::o;2587:474::-;2655:6;2663;2712:2;2700:9;2691:7;2687:23;2683:32;2680:119;;;2718:79;;:::i;:::-;2680:119;2838:1;2863:53;2908:7;2899:6;2888:9;2884:22;2863:53;:::i;:::-;2853:63;;2809:117;2965:2;2991:53;3036:7;3027:6;3016:9;3012:22;2991:53;:::i;:::-;2981:63;;2936:118;2587:474;;;;;:::o;3067:90::-;3101:7;3144:5;3137:13;3130:21;3119:32;;3067:90;;;:::o;3163:109::-;3244:21;3259:5;3244:21;:::i;:::-;3239:3;3232:34;3163:109;;:::o;3278:210::-;3365:4;3403:2;3392:9;3388:18;3380:26;;3416:65;3478:1;3467:9;3463:17;3454:6;3416:65;:::i;:::-;3278:210;;;;:::o;3494:60::-;3522:3;3543:5;3536:12;;3494:60;;;:::o;3560:142::-;3610:9;3643:53;3661:34;3670:24;3688:5;3670:24;:::i;:::-;3661:34;:::i;:::-;3643:53;:::i;:::-;3630:66;;3560:142;;;:::o;3708:126::-;3758:9;3791:37;3822:5;3791:37;:::i;:::-;3778:50;;3708:126;;;:::o;3840:152::-;3916:9;3949:37;3980:5;3949:37;:::i;:::-;3936:50;;3840:152;;;:::o;3998:183::-;4111:63;4168:5;4111:63;:::i;:::-;4106:3;4099:76;3998:183;;:::o;4187:274::-;4306:4;4344:2;4333:9;4329:18;4321:26;;4357:97;4451:1;4440:9;4436:17;4427:6;4357:97;:::i;:::-;4187:274;;;;:::o;4467:118::-;4554:24;4572:5;4554:24;:::i;:::-;4549:3;4542:37;4467:118;;:::o;4591:222::-;4684:4;4722:2;4711:9;4707:18;4699:26;;4735:71;4803:1;4792:9;4788:17;4779:6;4735:71;:::i;:::-;4591:222;;;;:::o;4819:619::-;4896:6;4904;4912;4961:2;4949:9;4940:7;4936:23;4932:32;4929:119;;;4967:79;;:::i;:::-;4929:119;5087:1;5112:53;5157:7;5148:6;5137:9;5133:22;5112:53;:::i;:::-;5102:63;;5058:117;5214:2;5240:53;5285:7;5276:6;5265:9;5261:22;5240:53;:::i;:::-;5230:63;;5185:118;5342:2;5368:53;5413:7;5404:6;5393:9;5389:22;5368:53;:::i;:::-;5358:63;;5313:118;4819:619;;;;;:::o;5444:86::-;5479:7;5519:4;5512:5;5508:16;5497:27;;5444:86;;;:::o;5536:112::-;5619:22;5635:5;5619:22;:::i;:::-;5614:3;5607:35;5536:112;;:::o;5654:214::-;5743:4;5781:2;5770:9;5766:18;5758:26;;5794:67;5858:1;5847:9;5843:17;5834:6;5794:67;:::i;:::-;5654:214;;;;:::o;5874:117::-;5983:1;5980;5973:12;5997:180;6045:77;6042:1;6035:88;6142:4;6139:1;6132:15;6166:4;6163:1;6156:15;6183:281;6266:27;6288:4;6266:27;:::i;:::-;6258:6;6254:40;6396:6;6384:10;6381:22;6360:18;6348:10;6345:34;6342:62;6339:88;;;6407:18;;:::i;:::-;6339:88;6447:10;6443:2;6436:22;6226:238;6183:281;;:::o;6470:129::-;6504:6;6531:20;;:::i;:::-;6521:30;;6560:33;6588:4;6580:6;6560:33;:::i;:::-;6470:129;;;:::o;6605:311::-;6682:4;6772:18;6764:6;6761:30;6758:56;;;6794:18;;:::i;:::-;6758:56;6844:4;6836:6;6832:17;6824:25;;6904:4;6898;6894:15;6886:23;;6605:311;;;:::o;6922:117::-;7031:1;7028;7021:12;7062:710;7158:5;7183:81;7199:64;7256:6;7199:64;:::i;:::-;7183:81;:::i;:::-;7174:90;;7284:5;7313:6;7306:5;7299:21;7347:4;7340:5;7336:16;7329:23;;7400:4;7392:6;7388:17;7380:6;7376:30;7429:3;7421:6;7418:15;7415:122;;;7448:79;;:::i;:::-;7415:122;7563:6;7546:220;7580:6;7575:3;7572:15;7546:220;;;7655:3;7684:37;7717:3;7705:10;7684:37;:::i;:::-;7679:3;7672:50;7751:4;7746:3;7742:14;7735:21;;7622:144;7606:4;7601:3;7597:14;7590:21;;7546:220;;;7550:21;7164:608;;7062:710;;;;;:::o;7795:370::-;7866:5;7915:3;7908:4;7900:6;7896:17;7892:27;7882:122;;7923:79;;:::i;:::-;7882:122;8040:6;8027:20;8065:94;8155:3;8147:6;8140:4;8132:6;8128:17;8065:94;:::i;:::-;8056:103;;7872:293;7795:370;;;;:::o;8171:539::-;8255:6;8304:2;8292:9;8283:7;8279:23;8275:32;8272:119;;;8310:79;;:::i;:::-;8272:119;8458:1;8447:9;8443:17;8430:31;8488:18;8480:6;8477:30;8474:117;;;8510:79;;:::i;:::-;8474:117;8615:78;8685:7;8676:6;8665:9;8661:22;8615:78;:::i;:::-;8605:88;;8401:302;8171:539;;;;:::o;8716:765::-;8802:6;8810;8818;8826;8875:3;8863:9;8854:7;8850:23;8846:33;8843:120;;;8882:79;;:::i;:::-;8843:120;9002:1;9027:53;9072:7;9063:6;9052:9;9048:22;9027:53;:::i;:::-;9017:63;;8973:117;9129:2;9155:53;9200:7;9191:6;9180:9;9176:22;9155:53;:::i;:::-;9145:63;;9100:118;9257:2;9283:53;9328:7;9319:6;9308:9;9304:22;9283:53;:::i;:::-;9273:63;;9228:118;9385:2;9411:53;9456:7;9447:6;9436:9;9432:22;9411:53;:::i;:::-;9401:63;;9356:118;8716:765;;;;;;;:::o;9487:118::-;9574:24;9592:5;9574:24;:::i;:::-;9569:3;9562:37;9487:118;;:::o;9611:222::-;9704:4;9742:2;9731:9;9727:18;9719:26;;9755:71;9823:1;9812:9;9808:17;9799:6;9755:71;:::i;:::-;9611:222;;;;:::o;9839:329::-;9898:6;9947:2;9935:9;9926:7;9922:23;9918:32;9915:119;;;9953:79;;:::i;:::-;9915:119;10073:1;10098:53;10143:7;10134:6;10123:9;10119:22;10098:53;:::i;:::-;10088:63;;10044:117;9839:329;;;;:::o;10174:::-;10233:6;10282:2;10270:9;10261:7;10257:23;10253:32;10250:119;;;10288:79;;:::i;:::-;10250:119;10408:1;10433:53;10478:7;10469:6;10458:9;10454:22;10433:53;:::i;:::-;10423:63;;10379:117;10174:329;;;;:::o;10509:117::-;10618:1;10615;10608:12;10649:568;10722:8;10732:6;10782:3;10775:4;10767:6;10763:17;10759:27;10749:122;;10790:79;;:::i;:::-;10749:122;10903:6;10890:20;10880:30;;10933:18;10925:6;10922:30;10919:117;;;10955:79;;:::i;:::-;10919:117;11069:4;11061:6;11057:17;11045:29;;11123:3;11115:4;11107:6;11103:17;11093:8;11089:32;11086:41;11083:128;;;11130:79;;:::i;:::-;11083:128;10649:568;;;;;:::o;11223:116::-;11293:21;11308:5;11293:21;:::i;:::-;11286:5;11283:32;11273:60;;11329:1;11326;11319:12;11273:60;11223:116;:::o;11345:133::-;11388:5;11426:6;11413:20;11404:29;;11442:30;11466:5;11442:30;:::i;:::-;11345:133;;;;:::o;11484:698::-;11576:6;11584;11592;11641:2;11629:9;11620:7;11616:23;11612:32;11609:119;;;11647:79;;:::i;:::-;11609:119;11795:1;11784:9;11780:17;11767:31;11825:18;11817:6;11814:30;11811:117;;;11847:79;;:::i;:::-;11811:117;11960:80;12032:7;12023:6;12012:9;12008:22;11960:80;:::i;:::-;11942:98;;;;11738:312;12089:2;12115:50;12157:7;12148:6;12137:9;12133:22;12115:50;:::i;:::-;12105:60;;12060:115;11484:698;;;;;:::o;12188:474::-;12256:6;12264;12313:2;12301:9;12292:7;12288:23;12284:32;12281:119;;;12319:79;;:::i;:::-;12281:119;12439:1;12464:53;12509:7;12500:6;12489:9;12485:22;12464:53;:::i;:::-;12454:63;;12410:117;12566:2;12592:53;12637:7;12628:6;12617:9;12613:22;12592:53;:::i;:::-;12582:63;;12537:118;12188:474;;;;;:::o;12668:182::-;12808:34;12804:1;12796:6;12792:14;12785:58;12668:182;:::o;12856:366::-;12998:3;13019:67;13083:2;13078:3;13019:67;:::i;:::-;13012:74;;13095:93;13184:3;13095:93;:::i;:::-;13213:2;13208:3;13204:12;13197:19;;12856:366;;;:::o;13228:419::-;13394:4;13432:2;13421:9;13417:18;13409:26;;13481:9;13475:4;13471:20;13467:1;13456:9;13452:17;13445:47;13509:131;13635:4;13509:131;:::i;:::-;13501:139;;13228:419;;;:::o;13653:143::-;13710:5;13741:6;13735:13;13726:22;;13757:33;13784:5;13757:33;:::i;:::-;13653:143;;;;:::o;13802:351::-;13872:6;13921:2;13909:9;13900:7;13896:23;13892:32;13889:119;;;13927:79;;:::i;:::-;13889:119;14047:1;14072:64;14128:7;14119:6;14108:9;14104:22;14072:64;:::i;:::-;14062:74;;14018:128;13802:351;;;;:::o;14159:332::-;14280:4;14318:2;14307:9;14303:18;14295:26;;14331:71;14399:1;14388:9;14384:17;14375:6;14331:71;:::i;:::-;14412:72;14480:2;14469:9;14465:18;14456:6;14412:72;:::i;:::-;14159:332;;;;;:::o;14497:180::-;14545:77;14542:1;14535:88;14642:4;14639:1;14632:15;14666:4;14663:1;14656:15;14683:180;14731:77;14728:1;14721:88;14828:4;14825:1;14818:15;14852:4;14849:1;14842:15;14869:233;14908:3;14931:24;14949:5;14931:24;:::i;:::-;14922:33;;14977:66;14970:5;14967:77;14964:103;;;15047:18;;:::i;:::-;14964:103;15094:1;15087:5;15083:13;15076:20;;14869:233;;;:::o;15108:225::-;15248:34;15244:1;15236:6;15232:14;15225:58;15317:8;15312:2;15304:6;15300:15;15293:33;15108:225;:::o;15339:366::-;15481:3;15502:67;15566:2;15561:3;15502:67;:::i;:::-;15495:74;;15578:93;15667:3;15578:93;:::i;:::-;15696:2;15691:3;15687:12;15680:19;;15339:366;;;:::o;15711:419::-;15877:4;15915:2;15904:9;15900:18;15892:26;;15964:9;15958:4;15954:20;15950:1;15939:9;15935:17;15928:47;15992:131;16118:4;15992:131;:::i;:::-;15984:139;;15711:419;;;:::o;16136:223::-;16276:34;16272:1;16264:6;16260:14;16253:58;16345:6;16340:2;16332:6;16328:15;16321:31;16136:223;:::o;16365:366::-;16507:3;16528:67;16592:2;16587:3;16528:67;:::i;:::-;16521:74;;16604:93;16693:3;16604:93;:::i;:::-;16722:2;16717:3;16713:12;16706:19;;16365:366;;;:::o;16737:419::-;16903:4;16941:2;16930:9;16926:18;16918:26;;16990:9;16984:4;16980:20;16976:1;16965:9;16961:17;16954:47;17018:131;17144:4;17018:131;:::i;:::-;17010:139;;16737:419;;;:::o;17162:221::-;17302:34;17298:1;17290:6;17286:14;17279:58;17371:4;17366:2;17358:6;17354:15;17347:29;17162:221;:::o;17389:366::-;17531:3;17552:67;17616:2;17611:3;17552:67;:::i;:::-;17545:74;;17628:93;17717:3;17628:93;:::i;:::-;17746:2;17741:3;17737:12;17730:19;;17389:366;;;:::o;17761:419::-;17927:4;17965:2;17954:9;17950:18;17942:26;;18014:9;18008:4;18004:20;18000:1;17989:9;17985:17;17978:47;18042:131;18168:4;18042:131;:::i;:::-;18034:139;;17761:419;;;:::o;18186:224::-;18326:34;18322:1;18314:6;18310:14;18303:58;18395:7;18390:2;18382:6;18378:15;18371:32;18186:224;:::o;18416:366::-;18558:3;18579:67;18643:2;18638:3;18579:67;:::i;:::-;18572:74;;18655:93;18744:3;18655:93;:::i;:::-;18773:2;18768:3;18764:12;18757:19;;18416:366;;;:::o;18788:419::-;18954:4;18992:2;18981:9;18977:18;18969:26;;19041:9;19035:4;19031:20;19027:1;19016:9;19012:17;19005:47;19069:131;19195:4;19069:131;:::i;:::-;19061:139;;18788:419;;;:::o;19213:222::-;19353:34;19349:1;19341:6;19337:14;19330:58;19422:5;19417:2;19409:6;19405:15;19398:30;19213:222;:::o;19441:366::-;19583:3;19604:67;19668:2;19663:3;19604:67;:::i;:::-;19597:74;;19680:93;19769:3;19680:93;:::i;:::-;19798:2;19793:3;19789:12;19782:19;;19441:366;;;:::o;19813:419::-;19979:4;20017:2;20006:9;20002:18;19994:26;;20066:9;20060:4;20056:20;20052:1;20041:9;20037:17;20030:47;20094:131;20220:4;20094:131;:::i;:::-;20086:139;;19813:419;;;:::o;20238:228::-;20378:34;20374:1;20366:6;20362:14;20355:58;20447:11;20442:2;20434:6;20430:15;20423:36;20238:228;:::o;20472:366::-;20614:3;20635:67;20699:2;20694:3;20635:67;:::i;:::-;20628:74;;20711:93;20800:3;20711:93;:::i;:::-;20829:2;20824:3;20820:12;20813:19;;20472:366;;;:::o;20844:419::-;21010:4;21048:2;21037:9;21033:18;21025:26;;21097:9;21091:4;21087:20;21083:1;21072:9;21068:17;21061:47;21125:131;21251:4;21125:131;:::i;:::-;21117:139;;20844:419;;;:::o;21269:250::-;21409:34;21405:1;21397:6;21393:14;21386:58;21478:33;21473:2;21465:6;21461:15;21454:58;21269:250;:::o;21525:366::-;21667:3;21688:67;21752:2;21747:3;21688:67;:::i;:::-;21681:74;;21764:93;21853:3;21764:93;:::i;:::-;21882:2;21877:3;21873:12;21866:19;;21525:366;;;:::o;21897:419::-;22063:4;22101:2;22090:9;22086:18;22078:26;;22150:9;22144:4;22140:20;22136:1;22125:9;22121:17;22114:47;22178:131;22304:4;22178:131;:::i;:::-;22170:139;;21897:419;;;:::o;22322:178::-;22462:30;22458:1;22450:6;22446:14;22439:54;22322:178;:::o;22506:366::-;22648:3;22669:67;22733:2;22728:3;22669:67;:::i;:::-;22662:74;;22745:93;22834:3;22745:93;:::i;:::-;22863:2;22858:3;22854:12;22847:19;;22506:366;;;:::o;22878:419::-;23044:4;23082:2;23071:9;23067:18;23059:26;;23131:9;23125:4;23121:20;23117:1;23106:9;23102:17;23095:47;23159:131;23285:4;23159:131;:::i;:::-;23151:139;;22878:419;;;:::o;23303:222::-;23443:34;23439:1;23431:6;23427:14;23420:58;23512:5;23507:2;23499:6;23495:15;23488:30;23303:222;:::o;23531:366::-;23673:3;23694:67;23758:2;23753:3;23694:67;:::i;:::-;23687:74;;23770:93;23859:3;23770:93;:::i;:::-;23888:2;23883:3;23879:12;23872:19;;23531:366;;;:::o;23903:419::-;24069:4;24107:2;24096:9;24092:18;24084:26;;24156:9;24150:4;24146:20;24142:1;24131:9;24127:17;24120:47;24184:131;24310:4;24184:131;:::i;:::-;24176:139;;23903:419;;;:::o;24328:305::-;24368:3;24387:20;24405:1;24387:20;:::i;:::-;24382:25;;24421:20;24439:1;24421:20;:::i;:::-;24416:25;;24575:1;24507:66;24503:74;24500:1;24497:81;24494:107;;;24581:18;;:::i;:::-;24494:107;24625:1;24622;24618:9;24611:16;;24328:305;;;;:::o;24639:222::-;24779:34;24775:1;24767:6;24763:14;24756:58;24848:5;24843:2;24835:6;24831:15;24824:30;24639:222;:::o;24867:366::-;25009:3;25030:67;25094:2;25089:3;25030:67;:::i;:::-;25023:74;;25106:93;25195:3;25106:93;:::i;:::-;25224:2;25219:3;25215:12;25208:19;;24867:366;;;:::o;25239:419::-;25405:4;25443:2;25432:9;25428:18;25420:26;;25492:9;25486:4;25482:20;25478:1;25467:9;25463:17;25456:47;25520:131;25646:4;25520:131;:::i;:::-;25512:139;;25239:419;;;:::o;25664:191::-;25704:4;25724:20;25742:1;25724:20;:::i;:::-;25719:25;;25758:20;25776:1;25758:20;:::i;:::-;25753:25;;25797:1;25794;25791:8;25788:34;;;25802:18;;:::i;:::-;25788:34;25847:1;25844;25840:9;25832:17;;25664:191;;;;:::o;25861:229::-;26001:34;25997:1;25989:6;25985:14;25978:58;26070:12;26065:2;26057:6;26053:15;26046:37;25861:229;:::o;26096:366::-;26238:3;26259:67;26323:2;26318:3;26259:67;:::i;:::-;26252:74;;26335:93;26424:3;26335:93;:::i;:::-;26453:2;26448:3;26444:12;26437:19;;26096:366;;;:::o;26468:419::-;26634:4;26672:2;26661:9;26657:18;26649:26;;26721:9;26715:4;26711:20;26707:1;26696:9;26692:17;26685:47;26749:131;26875:4;26749:131;:::i;:::-;26741:139;;26468:419;;;:::o;26893:85::-;26938:7;26967:5;26956:16;;26893:85;;;:::o;26984:158::-;27042:9;27075:61;27093:42;27102:32;27128:5;27102:32;:::i;:::-;27093:42;:::i;:::-;27075:61;:::i;:::-;27062:74;;26984:158;;;:::o;27148:147::-;27243:45;27282:5;27243:45;:::i;:::-;27238:3;27231:58;27148:147;;:::o;27301:114::-;27368:6;27402:5;27396:12;27386:22;;27301:114;;;:::o;27421:184::-;27520:11;27554:6;27549:3;27542:19;27594:4;27589:3;27585:14;27570:29;;27421:184;;;;:::o;27611:132::-;27678:4;27701:3;27693:11;;27731:4;27726:3;27722:14;27714:22;;27611:132;;;:::o;27749:108::-;27826:24;27844:5;27826:24;:::i;:::-;27821:3;27814:37;27749:108;;:::o;27863:179::-;27932:10;27953:46;27995:3;27987:6;27953:46;:::i;:::-;28031:4;28026:3;28022:14;28008:28;;27863:179;;;;:::o;28048:113::-;28118:4;28150;28145:3;28141:14;28133:22;;28048:113;;;:::o;28197:732::-;28316:3;28345:54;28393:5;28345:54;:::i;:::-;28415:86;28494:6;28489:3;28415:86;:::i;:::-;28408:93;;28525:56;28575:5;28525:56;:::i;:::-;28604:7;28635:1;28620:284;28645:6;28642:1;28639:13;28620:284;;;28721:6;28715:13;28748:63;28807:3;28792:13;28748:63;:::i;:::-;28741:70;;28834:60;28887:6;28834:60;:::i;:::-;28824:70;;28680:224;28667:1;28664;28660:9;28655:14;;28620:284;;;28624:14;28920:3;28913:10;;28321:608;;;28197:732;;;;:::o;28935:831::-;29198:4;29236:3;29225:9;29221:19;29213:27;;29250:71;29318:1;29307:9;29303:17;29294:6;29250:71;:::i;:::-;29331:80;29407:2;29396:9;29392:18;29383:6;29331:80;:::i;:::-;29458:9;29452:4;29448:20;29443:2;29432:9;29428:18;29421:48;29486:108;29589:4;29580:6;29486:108;:::i;:::-;29478:116;;29604:72;29672:2;29661:9;29657:18;29648:6;29604:72;:::i;:::-;29686:73;29754:3;29743:9;29739:19;29730:6;29686:73;:::i;:::-;28935:831;;;;;;;;:::o;29772:180::-;29820:77;29817:1;29810:88;29917:4;29914:1;29907:15;29941:4;29938:1;29931:15;29958:185;29998:1;30015:20;30033:1;30015:20;:::i;:::-;30010:25;;30049:20;30067:1;30049:20;:::i;:::-;30044:25;;30088:1;30078:35;;30093:18;;:::i;:::-;30078:35;30135:1;30132;30128:9;30123:14;;29958:185;;;;:::o;30149:177::-;30289:29;30285:1;30277:6;30273:14;30266:53;30149:177;:::o;30332:366::-;30474:3;30495:67;30559:2;30554:3;30495:67;:::i;:::-;30488:74;;30571:93;30660:3;30571:93;:::i;:::-;30689:2;30684:3;30680:12;30673:19;;30332:366;;;:::o;30704:419::-;30870:4;30908:2;30897:9;30893:18;30885:26;;30957:9;30951:4;30947:20;30943:1;30932:9;30928:17;30921:47;30985:131;31111:4;30985:131;:::i;:::-;30977:139;;30704:419;;;:::o;31129:348::-;31169:7;31192:20;31210:1;31192:20;:::i;:::-;31187:25;;31226:20;31244:1;31226:20;:::i;:::-;31221:25;;31414:1;31346:66;31342:74;31339:1;31336:81;31331:1;31324:9;31317:17;31313:105;31310:131;;;31421:18;;:::i;:::-;31310:131;31469:1;31466;31462:9;31451:20;;31129:348;;;;:::o;31483:220::-;31623:34;31619:1;31611:6;31607:14;31600:58;31692:3;31687:2;31679:6;31675:15;31668:28;31483:220;:::o;31709:366::-;31851:3;31872:67;31936:2;31931:3;31872:67;:::i;:::-;31865:74;;31948:93;32037:3;31948:93;:::i;:::-;32066:2;32061:3;32057:12;32050:19;;31709:366;;;:::o;32081:419::-;32247:4;32285:2;32274:9;32270:18;32262:26;;32334:9;32328:4;32324:20;32320:1;32309:9;32305:17;32298:47;32362:131;32488:4;32362:131;:::i;:::-;32354:139;;32081:419;;;:::o

Swarm Source

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