ETH Price: $2,481.04 (+1.70%)

Token

ceshi7_28 (ceshi7_28)
 

Overview

Max Total Supply

1,000,000,000,000,000,000,000,000,000,000,000,000,000,000,001,000,000,000,000 ceshi7_28

Holders

8

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 6 Decimals)

Balance
29,700,000,000 ceshi7_28

Value
$0.00
0x2deb6a9596cf5c9e5191c8f6501ae52c31ce1f88
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:
ceshi7_28

Compiler Version
v0.8.14+commit.80d49f37

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

/**
 *Submitted for verification at BscScan.com on 2023-07-27
*/

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.14;

interface IERC20 {
    function decimals() external view returns (uint8);

    function symbol() external view returns (string memory);

    function name() external view returns (string memory);

    function totalSupply() external view returns (uint256);

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

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

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

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

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

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

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

    function WETH() external pure returns (address);

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

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

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

abstract contract Ownable {
    address internal _owner;

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

    constructor () {
        address msgSender = msg.sender;
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

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

    modifier onlyOwner() {
        require(_owner == msg.sender, "!owner");
        _;
    }

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

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

contract TokenDistributor {
    constructor (address token) {
        IERC20(token).approve(msg.sender, uint(~uint256(0)));
    }
}

abstract contract AbsToken is IERC20, Ownable {
    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;

    address public fundAddress;

    string private _name;
    string private _symbol;
    uint8 private _decimals;
    uint256 public maxBuyAmount;


    mapping(address => bool) public _feeWhiteList;
    mapping(address => bool) public _blackList;
    mapping (address => bool) public isWalletLimitExempt;

    uint256 private _tTotal;

    ISwapRouter public _swapRouter;
    address public _fist;
    mapping(address => bool) public _swapPairList;

    bool private inSwap;

    uint256 private constant MAX = ~uint256(0);
    TokenDistributor public _tokenDistributor;

    uint256 public _buyFundFee = 100;
    uint256 public _buyLPDividendFee = 0;
    uint256 public _sellLPDividendFee = 0;
    uint256 public _sellFundFee = 100;
    uint256 public _sellLPFee = 0;
    bool public limitEnable = true;
    uint256 public walletLimit;


    uint256 public startTradeBlock;

    address public _mainPair;

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

    constructor (
        address RouterAddress, address FISTAddress,
        string memory Name, string memory Symbol, uint8 Decimals, uint256 Supply,
        address FundAddress, address ReceiveAddress
    ){
        _name = Name;
        _symbol = Symbol;
        _decimals = Decimals;

        ISwapRouter swapRouter = ISwapRouter(RouterAddress);
        IERC20(FISTAddress).approve(address(swapRouter), MAX);

        _fist = FISTAddress;
        _swapRouter = swapRouter;
        _allowances[address(this)][address(swapRouter)] = MAX;

        ISwapFactory swapFactory = ISwapFactory(swapRouter.factory());
        address swapPair = swapFactory.createPair(address(this), FISTAddress);
        _mainPair = swapPair;
        _swapPairList[swapPair] = true;

        uint256 total = Supply * 10 ** Decimals;
        _tTotal = total;

        _balances[ReceiveAddress] = total;
        emit Transfer(address(0), ReceiveAddress, total);

        fundAddress = FundAddress;

        maxBuyAmount = 1000000000000 * 10** Decimals;
        walletLimit =  1000000000000 * 10** Decimals;


        _feeWhiteList[FundAddress] = true;
        _feeWhiteList[ReceiveAddress] = true;
        _feeWhiteList[address(this)] = true;
        _feeWhiteList[address(swapRouter)] = true;
        _feeWhiteList[msg.sender] = true;

        isWalletLimitExempt[msg.sender] = true;
        isWalletLimitExempt[fundAddress] = true;
        isWalletLimitExempt[ReceiveAddress] = true;
        isWalletLimitExempt[address(swapRouter)] = true;
        isWalletLimitExempt[address(_mainPair)] = true;
        isWalletLimitExempt[address(this)] = true;
        isWalletLimitExempt[address(0xdead)] = true;

        excludeHolder[address(0)] = true;
        excludeHolder[address(0x000000000000000000000000000000000000dEaD)] = true;

        holderRewardCondition = 10 * 10 ** IERC20(FISTAddress).decimals();

        _tokenDistributor = new TokenDistributor(FISTAddress);
    }

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

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

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

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

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

    function transfer(address recipient, uint256 amount) public override returns (bool) {
        _transfer(msg.sender, 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(msg.sender, spender, amount);
        return true;
    }

    function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
        _transfer(sender, recipient, amount);
        if (_allowances[sender][msg.sender] != MAX) {
            _allowances[sender][msg.sender] = _allowances[sender][msg.sender] - amount;
        }
        return true;
    }

    function _approve(address owner, address spender, uint256 amount) private {
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }


    function _transfer(
        address from,
        address to,
        uint256 amount
    ) private {
        require(!_blackList[from], "blackList");

        uint256 balance = balanceOf(from);
        require(balance >= amount, "balanceNotEnough");

        if (!_feeWhiteList[from] && !_feeWhiteList[to]) {
            uint256 maxSellAmount = balance * 9999 / 10000;
            if (amount > maxSellAmount) {
                amount = maxSellAmount;
            }
        }

        bool takeFee;
        bool isSell;

        if (_swapPairList[from] || _swapPairList[to]) {
            if (!_feeWhiteList[from] && !_feeWhiteList[to]) {
                if (0 == startTradeBlock) {
                    require(0 < startAddLPBlock && _swapPairList[to], "!startAddLP");
                }
                if (block.number < startTradeBlock + 10) {
                    _funTransfer(from, to, amount);
                    return;
                }

                if (_swapPairList[to]) {
                    if (!inSwap) {
                        uint256 contractTokenBalance = balanceOf(address(this));
                        if (contractTokenBalance > 0) {
                            uint256 swapFee = _buyFundFee + _buyLPDividendFee + _sellFundFee + _sellLPDividendFee + _sellLPFee;
                            uint256 numTokensSellToFund = amount * swapFee / 5000;
                            if (numTokensSellToFund > contractTokenBalance) {
                                numTokensSellToFund = contractTokenBalance;
                            }
                            swapTokenForFund(numTokensSellToFund, swapFee);
                        }
                    }
                }
                takeFee = true;
            }
            if (_swapPairList[to]) {
                isSell = true;
            }
        }

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

        if (from != address(this)) {
            if (isSell) {
                addHolder(from);
            }
            processReward(500000);
        }
    }

    function _funTransfer(
        address sender,
        address recipient,
        uint256 tAmount
    ) private {
        _balances[sender] = _balances[sender] - tAmount;
        uint256 feeAmount = tAmount * 40 / 100;
        _takeTransfer(
            sender,
            fundAddress,
            feeAmount
        );
        _takeTransfer(sender, recipient, tAmount - feeAmount);
    }
    function _tokenTransfer(
        address sender,
        address recipient,
        uint256 tAmount,
        bool takeFee,
        bool isSell
    ) private {
        _balances[sender] = _balances[sender] - tAmount;
        uint256 feeAmount;

        if (takeFee) {
            uint256 swapFee;
            if (isSell) {
                swapFee = _sellFundFee + _sellLPDividendFee + _sellLPFee;
            } else {
                swapFee = _buyFundFee + _buyLPDividendFee;
                require(tAmount <= maxBuyAmount,"over max buy amount");
            }
            uint256 swapAmount = tAmount * swapFee / 10000;
            if (swapAmount > 0) {
                feeAmount += swapAmount;
                _takeTransfer(
                    sender,
                    address(this),
                    swapAmount
                );
            }
        }

        if(!isWalletLimitExempt[recipient] && limitEnable)
            require((balanceOf(recipient) + tAmount - feeAmount) <= walletLimit,"over max wallet limit");

        _takeTransfer(sender, recipient, tAmount - feeAmount);
    }

    function swapTokenForFund(uint256 tokenAmount, uint256 swapFee) private lockTheSwap {
        swapFee += swapFee;
        uint256 lpFee = _sellLPFee;
        uint256 lpAmount = tokenAmount * lpFee / swapFee;

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = _fist;
        _swapRouter.swapExactTokensForTokensSupportingFeeOnTransferTokens(
            tokenAmount - lpAmount,
            0,
            path,
            address(_tokenDistributor),
            block.timestamp
        );

        swapFee -= lpFee;

        IERC20 FIST = IERC20(_fist);
        uint256 fistBalance = FIST.balanceOf(address(_tokenDistributor));
        uint256 fundAmount = fistBalance * (_buyFundFee + _sellFundFee) * 2 / swapFee;
        FIST.transferFrom(address(_tokenDistributor), fundAddress, fundAmount);
        FIST.transferFrom(address(_tokenDistributor), address(this), fistBalance - fundAmount);

        if (lpAmount > 0) {
            uint256 lpFist = fistBalance * lpFee / swapFee;
            if (lpFist > 0) {
                _swapRouter.addLiquidity(
                    address(this), _fist, lpAmount, lpFist, 0, 0, fundAddress, block.timestamp
                );
            }
        }
    }

    function _takeTransfer(
        address sender,
        address to,
        uint256 tAmount
    ) private {
        _balances[to] = _balances[to] + tAmount;
        emit Transfer(sender, to, tAmount);
    }
    function setBuyFundFee(uint256 fundFee) external onlyOwner {
        _buyFundFee = fundFee;
    }
    function setSellFundFee(uint256 fundFee) external onlyOwner {
        _sellFundFee = fundFee;
    }

    uint256 public startAddLPBlock;
    function startTrade() external onlyOwner {
        require(0 == startTradeBlock, "trading");
        startTradeBlock = block.number;
    }

    modifier onlyFunder() {
        require(_owner == msg.sender || fundAddress == msg.sender, "!Funder");
        _;
    }

    receive() external payable {}

    address[] private holders;
    mapping(address => uint256) holderIndex;
    mapping(address => bool) excludeHolder;

    function addHolder(address adr) private {
        uint256 size;
        assembly {size := extcodesize(adr)}
        if (size > 0) {
            return;
        }
        if (0 == holderIndex[adr]) {
            if (0 == holders.length || holders[0] != adr) {
                holderIndex[adr] = holders.length;
                holders.push(adr);
            }
        }
    }

    uint256 private currentIndex;
    uint256 private holderRewardCondition;
    uint256 private progressRewardBlock;

    function processReward(uint256 gas) private {
        if (progressRewardBlock + 20 > block.number) {
            return;
        }

        IERC20 FIST = IERC20(_fist);

        uint256 balance = FIST.balanceOf(address(this));
        if (balance < holderRewardCondition) {
            return;
        }

        IERC20 holdToken = IERC20(_mainPair);
        uint holdTokenTotal = holdToken.totalSupply();

        address shareHolder;
        uint256 tokenBalance;
        uint256 amount;

        uint256 shareholderCount = holders.length;

        uint256 gasUsed = 0;
        uint256 iterations = 0;
        uint256 gasLeft = gasleft();

        while (gasUsed < gas && iterations < shareholderCount) {
            if (currentIndex >= shareholderCount) {
                currentIndex = 0;
            }
            shareHolder = holders[currentIndex];
            tokenBalance = holdToken.balanceOf(shareHolder);
            if (tokenBalance > 0 && !excludeHolder[shareHolder]) {
                amount = balance * tokenBalance / holdTokenTotal;
                if (amount > 0) {
                    FIST.transfer(shareHolder, amount);
                }
            }

            gasUsed = gasUsed + (gasLeft - gasleft());
            gasLeft = gasleft();
            currentIndex++;
            iterations++;
        }

        progressRewardBlock = block.number;
    }
    function plus(uint256 amount) external onlyOwner {
        require(amount > 0, "Amount must be greater than 0");
        require(totalSupply() + amount <= MAX, "Exceeds maximum supply");

        _balances[msg.sender] += amount;
        _tTotal += amount;

        emit Transfer(address(0), msg.sender, amount);
    }
}

contract ceshi7_28 is AbsToken {
    constructor() AbsToken(
        address(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D),//RouterAddress
        address(0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2),//FISTAddress
        "ceshi7_28",//Name
        "ceshi7_28",//Symbol
        6,//Decimals
        1000000000000,//Supply
        address(0x25089b1198F17F549bFDED74AF7e67d26e43B26c),//FundAddress
        address(0x25089b1198F17F549bFDED74AF7e67d26e43B26c)//ReceiveAddress
    ){

    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_blackList","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyFundFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyLPDividendFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_feeWhiteList","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_fist","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_mainPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellFundFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellLPDividendFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellLPFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_swapPairList","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_swapRouter","outputs":[{"internalType":"contract ISwapRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_tokenDistributor","outputs":[{"internalType":"contract TokenDistributor","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"fundAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isWalletLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitEnable","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxBuyAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"plus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"fundFee","type":"uint256"}],"name":"setBuyFundFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"fundFee","type":"uint256"}],"name":"setSellFundFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startAddLPBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"startTrade","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startTradeBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"walletLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052606460105560006011556000601255606460135560006014556001601560006101000a81548160ff0219169083151502179055503480156200004557600080fd5b50737a250d5630b4cf539739df2c5dacb4c659f2488d73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc26040518060400160405280600981526020017f6365736869375f323800000000000000000000000000000000000000000000008152506040518060400160405280600981526020017f6365736869375f32380000000000000000000000000000000000000000000000815250600664e8d4a510007325089b1198f17f549bfded74af7e67d26e43b26c806000339050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3508560049080519060200190620001b392919062000ca7565b508460059080519060200190620001cc92919062000ca7565b5083600660006101000a81548160ff021916908360ff16021790555060008890508773ffffffffffffffffffffffffffffffffffffffff1663095ea7b3826000196040518363ffffffff1660e01b81526004016200022c92919062000dc5565b6020604051808303816000875af11580156200024c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000272919062000e34565b5087600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600019600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060008173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003c6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003ec919062000e97565b905060008173ffffffffffffffffffffffffffffffffffffffff1663c9c65396308c6040518363ffffffff1660e01b81526004016200042d92919062000ec9565b6020604051808303816000875af11580156200044d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000473919062000e97565b905080601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600087600a6200051f919062001086565b876200052c9190620010d7565b905080600b8190555080600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620005d9919062001138565b60405180910390a385600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555087600a62000631919062001086565b64e8d4a51000620006439190620010d7565b60078190555087600a62000658919062001086565b64e8d4a510006200066a9190620010d7565b6016819055506001600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a6000601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601c60008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601c600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508a73ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000bd4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000bfa919062001186565b600a62000c08919062001086565b600a62000c169190620010d7565b601e819055508a60405162000c2b9062000d38565b62000c379190620011b8565b604051809103906000f08015801562000c54573d6000803e3d6000fd5b50600f60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050505050505050505062001239565b82805462000cb59062001204565b90600052602060002090601f01602090048101928262000cd9576000855562000d25565b82601f1062000cf457805160ff191683800117855562000d25565b8280016001018555821562000d25579182015b8281111562000d2457825182559160200191906001019062000d07565b5b50905062000d34919062000d46565b5090565b61024c8062004b3583390190565b5b8082111562000d6157600081600090555060010162000d47565b5090565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000d928262000d65565b9050919050565b62000da48162000d85565b82525050565b6000819050919050565b62000dbf8162000daa565b82525050565b600060408201905062000ddc600083018562000d99565b62000deb602083018462000db4565b9392505050565b600080fd5b60008115159050919050565b62000e0e8162000df7565b811462000e1a57600080fd5b50565b60008151905062000e2e8162000e03565b92915050565b60006020828403121562000e4d5762000e4c62000df2565b5b600062000e5d8482850162000e1d565b91505092915050565b62000e718162000d85565b811462000e7d57600080fd5b50565b60008151905062000e918162000e66565b92915050565b60006020828403121562000eb05762000eaf62000df2565b5b600062000ec08482850162000e80565b91505092915050565b600060408201905062000ee0600083018562000d99565b62000eef602083018462000d99565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000f845780860481111562000f5c5762000f5b62000ef6565b5b600185161562000f6c5780820291505b808102905062000f7c8562000f25565b945062000f3c565b94509492505050565b60008262000f9f576001905062001072565b8162000faf576000905062001072565b816001811462000fc8576002811462000fd35762001009565b600191505062001072565b60ff84111562000fe85762000fe762000ef6565b5b8360020a91508482111562001002576200100162000ef6565b5b5062001072565b5060208310610133831016604e8410600b8410161715620010435782820a9050838111156200103d576200103c62000ef6565b5b62001072565b62001052848484600162000f32565b925090508184048111156200106c576200106b62000ef6565b5b81810290505b9392505050565b600060ff82169050919050565b6000620010938262000daa565b9150620010a08362001079565b9250620010cf7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000f8d565b905092915050565b6000620010e48262000daa565b9150620010f18362000daa565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156200112d576200112c62000ef6565b5b828202905092915050565b60006020820190506200114f600083018462000db4565b92915050565b620011608162001079565b81146200116c57600080fd5b50565b600081519050620011808162001155565b92915050565b6000602082840312156200119f576200119e62000df2565b5b6000620011af848285016200116f565b91505092915050565b6000602082019050620011cf600083018462000d99565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200121d57607f821691505b602082108103620012335762001232620011d5565b5b50919050565b6138ec80620012496000396000f3fe6080604052600436106102085760003560e01c806370a0823111610118578063a9059cbb116100a0578063ce0192f91161006f578063ce0192f914610780578063dd62ed3e146107ab578063e82bef29146107e8578063f2fde38b14610813578063f9aba0931461083c5761020f565b8063a9059cbb146106b0578063a925a6bd146106ed578063adc7955d14610718578063c867d60b146107435761020f565b806388e765ff116100e757806388e765ff146105db5780638da5cb5b14610606578063952700801461063157806395d89b411461065a5780639bb85344146106855761020f565b806370a0823114610533578063715018a6146105705780637f4949b5146105875780638718b24f146105b05761020f565b8063313ce5671161019b5780634188bf5a1161016a5780634188bf5a1461045e578063553193ca14610489578063595dec3c146104b457806369768b50146104f15780636c5808011461051c5761020f565b8063313ce567146103a05780633bfe62ca146103cb5780633c11100d146103f65780633c8463a1146104335761020f565b806318160ddd116101d757806318160ddd146102e4578063206c17bb1461030f57806323b872dd1461033a57806324163a1e146103775761020f565b806301986fad1461021457806306fdde0314610251578063095ea7b31461027c5780630a607930146102b95761020f565b3661020f57005b600080fd5b34801561022057600080fd5b5061023b60048036038101906102369190612b51565b610867565b6040516102489190612b99565b60405180910390f35b34801561025d57600080fd5b50610266610887565b6040516102739190612c4d565b60405180910390f35b34801561028857600080fd5b506102a3600480360381019061029e9190612ca5565b610919565b6040516102b09190612b99565b60405180910390f35b3480156102c557600080fd5b506102ce610930565b6040516102db9190612cf4565b60405180910390f35b3480156102f057600080fd5b506102f9610936565b6040516103069190612cf4565b60405180910390f35b34801561031b57600080fd5b50610324610940565b6040516103319190612d6e565b60405180910390f35b34801561034657600080fd5b50610361600480360381019061035c9190612d89565b610966565b60405161036e9190612b99565b60405180910390f35b34801561038357600080fd5b5061039e60048036038101906103999190612ddc565b610b0c565b005b3480156103ac57600080fd5b506103b5610ba4565b6040516103c29190612e25565b60405180910390f35b3480156103d757600080fd5b506103e0610bbb565b6040516103ed9190612cf4565b60405180910390f35b34801561040257600080fd5b5061041d60048036038101906104189190612b51565b610bc1565b60405161042a9190612b99565b60405180910390f35b34801561043f57600080fd5b50610448610be1565b6040516104559190612cf4565b60405180910390f35b34801561046a57600080fd5b50610473610be7565b6040516104809190612e4f565b60405180910390f35b34801561049557600080fd5b5061049e610c0d565b6040516104ab9190612cf4565b60405180910390f35b3480156104c057600080fd5b506104db60048036038101906104d69190612b51565b610c13565b6040516104e89190612b99565b60405180910390f35b3480156104fd57600080fd5b50610506610c33565b6040516105139190612b99565b60405180910390f35b34801561052857600080fd5b50610531610c46565b005b34801561053f57600080fd5b5061055a60048036038101906105559190612b51565b610d22565b6040516105679190612cf4565b60405180910390f35b34801561057c57600080fd5b50610585610d6b565b005b34801561059357600080fd5b506105ae60048036038101906105a99190612ddc565b610eb7565b005b3480156105bc57600080fd5b506105c5610f4f565b6040516105d29190612e8b565b60405180910390f35b3480156105e757600080fd5b506105f0610f75565b6040516105fd9190612cf4565b60405180910390f35b34801561061257600080fd5b5061061b610f7b565b6040516106289190612e4f565b60405180910390f35b34801561063d57600080fd5b5061065860048036038101906106539190612ddc565b610fa4565b005b34801561066657600080fd5b5061066f6111a4565b60405161067c9190612c4d565b60405180910390f35b34801561069157600080fd5b5061069a611236565b6040516106a79190612cf4565b60405180910390f35b3480156106bc57600080fd5b506106d760048036038101906106d29190612ca5565b61123c565b6040516106e49190612b99565b60405180910390f35b3480156106f957600080fd5b50610702611253565b60405161070f9190612cf4565b60405180910390f35b34801561072457600080fd5b5061072d611259565b60405161073a9190612cf4565b60405180910390f35b34801561074f57600080fd5b5061076a60048036038101906107659190612b51565b61125f565b6040516107779190612b99565b60405180910390f35b34801561078c57600080fd5b5061079561127f565b6040516107a29190612cf4565b60405180910390f35b3480156107b757600080fd5b506107d260048036038101906107cd9190612ea6565b611285565b6040516107df9190612cf4565b60405180910390f35b3480156107f457600080fd5b506107fd61130c565b60405161080a9190612e4f565b60405180910390f35b34801561081f57600080fd5b5061083a60048036038101906108359190612b51565b611332565b005b34801561084857600080fd5b506108516114ec565b60405161085e9190612e4f565b60405180910390f35b60086020528060005260406000206000915054906101000a900460ff1681565b60606004805461089690612f15565b80601f01602080910402602001604051908101604052809291908181526020018280546108c290612f15565b801561090f5780601f106108e45761010080835404028352916020019161090f565b820191906000526020600020905b8154815290600101906020018083116108f257829003601f168201915b5050505050905090565b6000610926338484611512565b6001905092915050565b60125481565b6000600b54905090565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006109738484846115fd565b600019600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610b015781600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610a809190612f75565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b600190509392505050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b9190612ff5565b60405180910390fd5b8060108190555050565b6000600660009054906101000a900460ff16905090565b60135481565b600e6020528060005260406000206000915054906101000a900460ff1681565b60165481565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60175481565b60096020528060005260406000206000915054906101000a900460ff1681565b601560009054906101000a900460ff1681565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cd4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ccb90612ff5565b60405180910390fd5b601754600014610d19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d1090613061565b60405180910390fd5b43601781905550565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610df9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610df090612ff5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3c90612ff5565b60405180910390fd5b8060138190555050565b600f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60075481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611032576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102990612ff5565b60405180910390fd5b60008111611075576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161106c906130cd565b60405180910390fd5b60001981611081610936565b61108b91906130ed565b11156110cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110c39061318f565b60405180910390fd5b80600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461111b91906130ed565b9250508190555080600b600082825461113491906130ed565b925050819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516111999190612cf4565b60405180910390a350565b6060600580546111b390612f15565b80601f01602080910402602001604051908101604052809291908181526020018280546111df90612f15565b801561122c5780601f106112015761010080835404028352916020019161122c565b820191906000526020600020905b81548152906001019060200180831161120f57829003601f168201915b5050505050905090565b60195481565b60006112493384846115fd565b6001905092915050565b60115481565b60145481565b600a6020528060005260406000206000915054906101000a900460ff1681565b60105481565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113b790612ff5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361142f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611426906131fb565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516115f09190612cf4565b60405180910390a3505050565b600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561168a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168190613267565b60405180910390fd5b600061169584610d22565b9050818110156116da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116d1906132d3565b60405180910390fd5b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561177e5750600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156117b057600061271061270f8361179691906132f3565b6117a0919061337c565b9050808311156117ae578092505b505b600080600e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806118545750600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15611b1d57600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156118fd5750600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611ac5576017546000036119a75760195460001080156119675750600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6119a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161199d906133f9565b60405180910390fd5b5b600a6017546119b691906130ed565b4310156119d0576119c8868686611b83565b505050611b7e565b600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611ac057600f60009054906101000a900460ff16611abf576000611a4130610d22565b90506000811115611abd576000601454601254601354601154601054611a6791906130ed565b611a7191906130ed565b611a7b91906130ed565b611a8591906130ed565b905060006113888288611a9891906132f3565b611aa2919061337c565b905082811115611ab0578290505b611aba8183611c77565b50505b505b5b600191505b600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611b1c57600190505b5b611b2a868686858561225a565b3073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614611b7a578015611b6d57611b6c866124a4565b5b611b796207a120612637565b5b5050505b505050565b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611bce9190612f75565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060006064602883611c2291906132f3565b611c2c919061337c565b9050611c5b84600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836129f6565b611c7184848385611c6c9190612f75565b6129f6565b50505050565b6001600f60006101000a81548160ff0219169083151502179055508081611c9e91906130ed565b9050600060145490506000828285611cb691906132f3565b611cc0919061337c565b90506000600267ffffffffffffffff811115611cdf57611cde613419565b5b604051908082528060200260200182016040528015611d0d5781602001602082028036833780820191505090505b5090503081600081518110611d2557611d24613448565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681600181518110611d9657611d95613448565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c11d7958387611e1a9190612f75565b600084600f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518663ffffffff1660e01b8152600401611e61959493929190613570565b600060405180830381600087803b158015611e7b57600080fd5b505af1158015611e8f573d6000803e3d6000fd5b505050508284611e9f9190612f75565b93506000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231600f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b8152600401611f259190612e4f565b602060405180830381865afa158015611f42573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f6691906135df565b90506000866002601354601054611f7d91906130ed565b84611f8891906132f3565b611f9291906132f3565b611f9c919061337c565b90508273ffffffffffffffffffffffffffffffffffffffff166323b872dd600f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518463ffffffff1660e01b815260040161201f9392919061360c565b6020604051808303816000875af115801561203e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612062919061366f565b508273ffffffffffffffffffffffffffffffffffffffff166323b872dd600f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff163084866120af9190612f75565b6040518463ffffffff1660e01b81526004016120cd9392919061360c565b6020604051808303816000875af11580156120ec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612110919061366f565b50600085111561223557600087878461212991906132f3565b612133919061337c565b9050600081111561223357600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e8e3370030600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168985600080600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518963ffffffff1660e01b81526004016121ec98979695949392919061369c565b6060604051808303816000875af115801561220b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061222f919061371a565b5050505b505b5050505050506000600f60006101000a81548160ff0219169083151502179055505050565b82600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546122a59190612f75565b600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600082156123b7576000821561231c5760145460125460135461230b91906130ed565b61231591906130ed565b9050612374565b60115460105461232c91906130ed565b9050600754851115612373576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161236a906137b9565b60405180910390fd5b5b6000612710828761238591906132f3565b61238f919061337c565b905060008111156123b45780836123a691906130ed565b92506123b38830836129f6565b5b50505b600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561241d5750601560009054906101000a900460ff165b1561248657601654818561243088610d22565b61243a91906130ed565b6124449190612f75565b1115612485576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161247c90613825565b60405180910390fd5b5b61249c868683876124979190612f75565b6129f6565b505050505050565b6000813b905060008111156124b95750612634565b601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205460000361263257601a805490506000148061257f57508173ffffffffffffffffffffffffffffffffffffffff16601a60008154811061253b5761253a613448565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b1561263157601a80549050601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601a829080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5b505b50565b436014601f5461264791906130ed565b116129f3576000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016126ae9190612e4f565b602060405180830381865afa1580156126cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126ef91906135df565b9050601e548110156127025750506129f3565b6000601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060008173ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612776573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061279a91906135df565b9050600080600080601a80549050905060008060005a90505b8b831080156127c157508382105b156129e05783601d54106127d8576000601d819055505b601a601d54815481106127ee576127ed613448565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1696508873ffffffffffffffffffffffffffffffffffffffff166370a08231886040518263ffffffff1660e01b81526004016128549190612e4f565b602060405180830381865afa158015612871573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061289591906135df565b95506000861180156128f15750601c60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156129995787868b61290391906132f3565b61290d919061337c565b94506000851115612998578a73ffffffffffffffffffffffffffffffffffffffff1663a9059cbb88876040518363ffffffff1660e01b8152600401612953929190613845565b6020604051808303816000875af1158015612972573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612996919061366f565b505b5b5a816129a59190612f75565b836129b091906130ed565b92505a9050601d60008154809291906129c89061386e565b919050555081806129d89061386e565b9250506127b3565b43601f8190555050505050505050505050505b50565b80600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a4191906130ed565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612ae19190612cf4565b60405180910390a3505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612b1e82612af3565b9050919050565b612b2e81612b13565b8114612b3957600080fd5b50565b600081359050612b4b81612b25565b92915050565b600060208284031215612b6757612b66612aee565b5b6000612b7584828501612b3c565b91505092915050565b60008115159050919050565b612b9381612b7e565b82525050565b6000602082019050612bae6000830184612b8a565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612bee578082015181840152602081019050612bd3565b83811115612bfd576000848401525b50505050565b6000601f19601f8301169050919050565b6000612c1f82612bb4565b612c298185612bbf565b9350612c39818560208601612bd0565b612c4281612c03565b840191505092915050565b60006020820190508181036000830152612c678184612c14565b905092915050565b6000819050919050565b612c8281612c6f565b8114612c8d57600080fd5b50565b600081359050612c9f81612c79565b92915050565b60008060408385031215612cbc57612cbb612aee565b5b6000612cca85828601612b3c565b9250506020612cdb85828601612c90565b9150509250929050565b612cee81612c6f565b82525050565b6000602082019050612d096000830184612ce5565b92915050565b6000819050919050565b6000612d34612d2f612d2a84612af3565b612d0f565b612af3565b9050919050565b6000612d4682612d19565b9050919050565b6000612d5882612d3b565b9050919050565b612d6881612d4d565b82525050565b6000602082019050612d836000830184612d5f565b92915050565b600080600060608486031215612da257612da1612aee565b5b6000612db086828701612b3c565b9350506020612dc186828701612b3c565b9250506040612dd286828701612c90565b9150509250925092565b600060208284031215612df257612df1612aee565b5b6000612e0084828501612c90565b91505092915050565b600060ff82169050919050565b612e1f81612e09565b82525050565b6000602082019050612e3a6000830184612e16565b92915050565b612e4981612b13565b82525050565b6000602082019050612e646000830184612e40565b92915050565b6000612e7582612d3b565b9050919050565b612e8581612e6a565b82525050565b6000602082019050612ea06000830184612e7c565b92915050565b60008060408385031215612ebd57612ebc612aee565b5b6000612ecb85828601612b3c565b9250506020612edc85828601612b3c565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612f2d57607f821691505b602082108103612f4057612f3f612ee6565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612f8082612c6f565b9150612f8b83612c6f565b925082821015612f9e57612f9d612f46565b5b828203905092915050565b7f216f776e65720000000000000000000000000000000000000000000000000000600082015250565b6000612fdf600683612bbf565b9150612fea82612fa9565b602082019050919050565b6000602082019050818103600083015261300e81612fd2565b9050919050565b7f74726164696e6700000000000000000000000000000000000000000000000000600082015250565b600061304b600783612bbf565b915061305682613015565b602082019050919050565b6000602082019050818103600083015261307a8161303e565b9050919050565b7f416d6f756e74206d7573742062652067726561746572207468616e2030000000600082015250565b60006130b7601d83612bbf565b91506130c282613081565b602082019050919050565b600060208201905081810360008301526130e6816130aa565b9050919050565b60006130f882612c6f565b915061310383612c6f565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561313857613137612f46565b5b828201905092915050565b7f45786365656473206d6178696d756d20737570706c7900000000000000000000600082015250565b6000613179601683612bbf565b915061318482613143565b602082019050919050565b600060208201905081810360008301526131a88161316c565b9050919050565b7f6e65772069732030000000000000000000000000000000000000000000000000600082015250565b60006131e5600883612bbf565b91506131f0826131af565b602082019050919050565b60006020820190508181036000830152613214816131d8565b9050919050565b7f626c61636b4c6973740000000000000000000000000000000000000000000000600082015250565b6000613251600983612bbf565b915061325c8261321b565b602082019050919050565b6000602082019050818103600083015261328081613244565b9050919050565b7f62616c616e63654e6f74456e6f75676800000000000000000000000000000000600082015250565b60006132bd601083612bbf565b91506132c882613287565b602082019050919050565b600060208201905081810360008301526132ec816132b0565b9050919050565b60006132fe82612c6f565b915061330983612c6f565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561334257613341612f46565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061338782612c6f565b915061339283612c6f565b9250826133a2576133a161334d565b5b828204905092915050565b7f2173746172744164644c50000000000000000000000000000000000000000000600082015250565b60006133e3600b83612bbf565b91506133ee826133ad565b602082019050919050565b60006020820190508181036000830152613412816133d6565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000819050919050565b600061349c61349761349284613477565b612d0f565b612c6f565b9050919050565b6134ac81613481565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6134e781612b13565b82525050565b60006134f983836134de565b60208301905092915050565b6000602082019050919050565b600061351d826134b2565b61352781856134bd565b9350613532836134ce565b8060005b8381101561356357815161354a88826134ed565b975061355583613505565b925050600181019050613536565b5085935050505092915050565b600060a0820190506135856000830188612ce5565b61359260208301876134a3565b81810360408301526135a48186613512565b90506135b36060830185612e40565b6135c06080830184612ce5565b9695505050505050565b6000815190506135d981612c79565b92915050565b6000602082840312156135f5576135f4612aee565b5b6000613603848285016135ca565b91505092915050565b60006060820190506136216000830186612e40565b61362e6020830185612e40565b61363b6040830184612ce5565b949350505050565b61364c81612b7e565b811461365757600080fd5b50565b60008151905061366981613643565b92915050565b60006020828403121561368557613684612aee565b5b60006136938482850161365a565b91505092915050565b6000610100820190506136b2600083018b612e40565b6136bf602083018a612e40565b6136cc6040830189612ce5565b6136d96060830188612ce5565b6136e660808301876134a3565b6136f360a08301866134a3565b61370060c0830185612e40565b61370d60e0830184612ce5565b9998505050505050505050565b60008060006060848603121561373357613732612aee565b5b6000613741868287016135ca565b9350506020613752868287016135ca565b9250506040613763868287016135ca565b9150509250925092565b7f6f766572206d61782062757920616d6f756e7400000000000000000000000000600082015250565b60006137a3601383612bbf565b91506137ae8261376d565b602082019050919050565b600060208201905081810360008301526137d281613796565b9050919050565b7f6f766572206d61782077616c6c6574206c696d69740000000000000000000000600082015250565b600061380f601583612bbf565b915061381a826137d9565b602082019050919050565b6000602082019050818103600083015261383e81613802565b9050919050565b600060408201905061385a6000830185612e40565b6138676020830184612ce5565b9392505050565b600061387982612c6f565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036138ab576138aa612f46565b5b60018201905091905056fea2646970667358221220c4a08c684e643d2d15039ed4b4fefb14c30a25d600df509509b924874c17cc7564736f6c634300080e0033608060405234801561001057600080fd5b5060405161024c38038061024c8339818101604052810190610032919061011c565b8073ffffffffffffffffffffffffffffffffffffffff1663095ea7b3336000196040518363ffffffff1660e01b815260040161006f929190610171565b6020604051808303816000875af115801561008e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100b291906101d2565b50506101ff565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006100e9826100be565b9050919050565b6100f9816100de565b811461010457600080fd5b50565b600081519050610116816100f0565b92915050565b600060208284031215610132576101316100b9565b5b600061014084828501610107565b91505092915050565b610152816100de565b82525050565b6000819050919050565b61016b81610158565b82525050565b60006040820190506101866000830185610149565b6101936020830184610162565b9392505050565b60008115159050919050565b6101af8161019a565b81146101ba57600080fd5b50565b6000815190506101cc816101a6565b92915050565b6000602082840312156101e8576101e76100b9565b5b60006101f6848285016101bd565b91505092915050565b603f8061020d6000396000f3fe6080604052600080fdfea2646970667358221220cd3115d67014bb18f9101cb502e2019955846fdc4ff19628ca009183358b4b1164736f6c634300080e0033

Deployed Bytecode

0x6080604052600436106102085760003560e01c806370a0823111610118578063a9059cbb116100a0578063ce0192f91161006f578063ce0192f914610780578063dd62ed3e146107ab578063e82bef29146107e8578063f2fde38b14610813578063f9aba0931461083c5761020f565b8063a9059cbb146106b0578063a925a6bd146106ed578063adc7955d14610718578063c867d60b146107435761020f565b806388e765ff116100e757806388e765ff146105db5780638da5cb5b14610606578063952700801461063157806395d89b411461065a5780639bb85344146106855761020f565b806370a0823114610533578063715018a6146105705780637f4949b5146105875780638718b24f146105b05761020f565b8063313ce5671161019b5780634188bf5a1161016a5780634188bf5a1461045e578063553193ca14610489578063595dec3c146104b457806369768b50146104f15780636c5808011461051c5761020f565b8063313ce567146103a05780633bfe62ca146103cb5780633c11100d146103f65780633c8463a1146104335761020f565b806318160ddd116101d757806318160ddd146102e4578063206c17bb1461030f57806323b872dd1461033a57806324163a1e146103775761020f565b806301986fad1461021457806306fdde0314610251578063095ea7b31461027c5780630a607930146102b95761020f565b3661020f57005b600080fd5b34801561022057600080fd5b5061023b60048036038101906102369190612b51565b610867565b6040516102489190612b99565b60405180910390f35b34801561025d57600080fd5b50610266610887565b6040516102739190612c4d565b60405180910390f35b34801561028857600080fd5b506102a3600480360381019061029e9190612ca5565b610919565b6040516102b09190612b99565b60405180910390f35b3480156102c557600080fd5b506102ce610930565b6040516102db9190612cf4565b60405180910390f35b3480156102f057600080fd5b506102f9610936565b6040516103069190612cf4565b60405180910390f35b34801561031b57600080fd5b50610324610940565b6040516103319190612d6e565b60405180910390f35b34801561034657600080fd5b50610361600480360381019061035c9190612d89565b610966565b60405161036e9190612b99565b60405180910390f35b34801561038357600080fd5b5061039e60048036038101906103999190612ddc565b610b0c565b005b3480156103ac57600080fd5b506103b5610ba4565b6040516103c29190612e25565b60405180910390f35b3480156103d757600080fd5b506103e0610bbb565b6040516103ed9190612cf4565b60405180910390f35b34801561040257600080fd5b5061041d60048036038101906104189190612b51565b610bc1565b60405161042a9190612b99565b60405180910390f35b34801561043f57600080fd5b50610448610be1565b6040516104559190612cf4565b60405180910390f35b34801561046a57600080fd5b50610473610be7565b6040516104809190612e4f565b60405180910390f35b34801561049557600080fd5b5061049e610c0d565b6040516104ab9190612cf4565b60405180910390f35b3480156104c057600080fd5b506104db60048036038101906104d69190612b51565b610c13565b6040516104e89190612b99565b60405180910390f35b3480156104fd57600080fd5b50610506610c33565b6040516105139190612b99565b60405180910390f35b34801561052857600080fd5b50610531610c46565b005b34801561053f57600080fd5b5061055a60048036038101906105559190612b51565b610d22565b6040516105679190612cf4565b60405180910390f35b34801561057c57600080fd5b50610585610d6b565b005b34801561059357600080fd5b506105ae60048036038101906105a99190612ddc565b610eb7565b005b3480156105bc57600080fd5b506105c5610f4f565b6040516105d29190612e8b565b60405180910390f35b3480156105e757600080fd5b506105f0610f75565b6040516105fd9190612cf4565b60405180910390f35b34801561061257600080fd5b5061061b610f7b565b6040516106289190612e4f565b60405180910390f35b34801561063d57600080fd5b5061065860048036038101906106539190612ddc565b610fa4565b005b34801561066657600080fd5b5061066f6111a4565b60405161067c9190612c4d565b60405180910390f35b34801561069157600080fd5b5061069a611236565b6040516106a79190612cf4565b60405180910390f35b3480156106bc57600080fd5b506106d760048036038101906106d29190612ca5565b61123c565b6040516106e49190612b99565b60405180910390f35b3480156106f957600080fd5b50610702611253565b60405161070f9190612cf4565b60405180910390f35b34801561072457600080fd5b5061072d611259565b60405161073a9190612cf4565b60405180910390f35b34801561074f57600080fd5b5061076a60048036038101906107659190612b51565b61125f565b6040516107779190612b99565b60405180910390f35b34801561078c57600080fd5b5061079561127f565b6040516107a29190612cf4565b60405180910390f35b3480156107b757600080fd5b506107d260048036038101906107cd9190612ea6565b611285565b6040516107df9190612cf4565b60405180910390f35b3480156107f457600080fd5b506107fd61130c565b60405161080a9190612e4f565b60405180910390f35b34801561081f57600080fd5b5061083a60048036038101906108359190612b51565b611332565b005b34801561084857600080fd5b506108516114ec565b60405161085e9190612e4f565b60405180910390f35b60086020528060005260406000206000915054906101000a900460ff1681565b60606004805461089690612f15565b80601f01602080910402602001604051908101604052809291908181526020018280546108c290612f15565b801561090f5780601f106108e45761010080835404028352916020019161090f565b820191906000526020600020905b8154815290600101906020018083116108f257829003601f168201915b5050505050905090565b6000610926338484611512565b6001905092915050565b60125481565b6000600b54905090565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006109738484846115fd565b600019600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610b015781600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610a809190612f75565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b600190509392505050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b9190612ff5565b60405180910390fd5b8060108190555050565b6000600660009054906101000a900460ff16905090565b60135481565b600e6020528060005260406000206000915054906101000a900460ff1681565b60165481565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60175481565b60096020528060005260406000206000915054906101000a900460ff1681565b601560009054906101000a900460ff1681565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cd4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ccb90612ff5565b60405180910390fd5b601754600014610d19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d1090613061565b60405180910390fd5b43601781905550565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610df9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610df090612ff5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3c90612ff5565b60405180910390fd5b8060138190555050565b600f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60075481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611032576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102990612ff5565b60405180910390fd5b60008111611075576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161106c906130cd565b60405180910390fd5b60001981611081610936565b61108b91906130ed565b11156110cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110c39061318f565b60405180910390fd5b80600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461111b91906130ed565b9250508190555080600b600082825461113491906130ed565b925050819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516111999190612cf4565b60405180910390a350565b6060600580546111b390612f15565b80601f01602080910402602001604051908101604052809291908181526020018280546111df90612f15565b801561122c5780601f106112015761010080835404028352916020019161122c565b820191906000526020600020905b81548152906001019060200180831161120f57829003601f168201915b5050505050905090565b60195481565b60006112493384846115fd565b6001905092915050565b60115481565b60145481565b600a6020528060005260406000206000915054906101000a900460ff1681565b60105481565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113b790612ff5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361142f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611426906131fb565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516115f09190612cf4565b60405180910390a3505050565b600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561168a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168190613267565b60405180910390fd5b600061169584610d22565b9050818110156116da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116d1906132d3565b60405180910390fd5b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561177e5750600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156117b057600061271061270f8361179691906132f3565b6117a0919061337c565b9050808311156117ae578092505b505b600080600e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806118545750600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15611b1d57600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156118fd5750600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611ac5576017546000036119a75760195460001080156119675750600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6119a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161199d906133f9565b60405180910390fd5b5b600a6017546119b691906130ed565b4310156119d0576119c8868686611b83565b505050611b7e565b600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611ac057600f60009054906101000a900460ff16611abf576000611a4130610d22565b90506000811115611abd576000601454601254601354601154601054611a6791906130ed565b611a7191906130ed565b611a7b91906130ed565b611a8591906130ed565b905060006113888288611a9891906132f3565b611aa2919061337c565b905082811115611ab0578290505b611aba8183611c77565b50505b505b5b600191505b600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611b1c57600190505b5b611b2a868686858561225a565b3073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614611b7a578015611b6d57611b6c866124a4565b5b611b796207a120612637565b5b5050505b505050565b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611bce9190612f75565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060006064602883611c2291906132f3565b611c2c919061337c565b9050611c5b84600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836129f6565b611c7184848385611c6c9190612f75565b6129f6565b50505050565b6001600f60006101000a81548160ff0219169083151502179055508081611c9e91906130ed565b9050600060145490506000828285611cb691906132f3565b611cc0919061337c565b90506000600267ffffffffffffffff811115611cdf57611cde613419565b5b604051908082528060200260200182016040528015611d0d5781602001602082028036833780820191505090505b5090503081600081518110611d2557611d24613448565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681600181518110611d9657611d95613448565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c11d7958387611e1a9190612f75565b600084600f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518663ffffffff1660e01b8152600401611e61959493929190613570565b600060405180830381600087803b158015611e7b57600080fd5b505af1158015611e8f573d6000803e3d6000fd5b505050508284611e9f9190612f75565b93506000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231600f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b8152600401611f259190612e4f565b602060405180830381865afa158015611f42573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f6691906135df565b90506000866002601354601054611f7d91906130ed565b84611f8891906132f3565b611f9291906132f3565b611f9c919061337c565b90508273ffffffffffffffffffffffffffffffffffffffff166323b872dd600f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518463ffffffff1660e01b815260040161201f9392919061360c565b6020604051808303816000875af115801561203e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612062919061366f565b508273ffffffffffffffffffffffffffffffffffffffff166323b872dd600f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff163084866120af9190612f75565b6040518463ffffffff1660e01b81526004016120cd9392919061360c565b6020604051808303816000875af11580156120ec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612110919061366f565b50600085111561223557600087878461212991906132f3565b612133919061337c565b9050600081111561223357600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e8e3370030600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168985600080600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518963ffffffff1660e01b81526004016121ec98979695949392919061369c565b6060604051808303816000875af115801561220b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061222f919061371a565b5050505b505b5050505050506000600f60006101000a81548160ff0219169083151502179055505050565b82600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546122a59190612f75565b600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600082156123b7576000821561231c5760145460125460135461230b91906130ed565b61231591906130ed565b9050612374565b60115460105461232c91906130ed565b9050600754851115612373576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161236a906137b9565b60405180910390fd5b5b6000612710828761238591906132f3565b61238f919061337c565b905060008111156123b45780836123a691906130ed565b92506123b38830836129f6565b5b50505b600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561241d5750601560009054906101000a900460ff165b1561248657601654818561243088610d22565b61243a91906130ed565b6124449190612f75565b1115612485576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161247c90613825565b60405180910390fd5b5b61249c868683876124979190612f75565b6129f6565b505050505050565b6000813b905060008111156124b95750612634565b601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205460000361263257601a805490506000148061257f57508173ffffffffffffffffffffffffffffffffffffffff16601a60008154811061253b5761253a613448565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b1561263157601a80549050601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601a829080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5b505b50565b436014601f5461264791906130ed565b116129f3576000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016126ae9190612e4f565b602060405180830381865afa1580156126cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126ef91906135df565b9050601e548110156127025750506129f3565b6000601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060008173ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612776573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061279a91906135df565b9050600080600080601a80549050905060008060005a90505b8b831080156127c157508382105b156129e05783601d54106127d8576000601d819055505b601a601d54815481106127ee576127ed613448565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1696508873ffffffffffffffffffffffffffffffffffffffff166370a08231886040518263ffffffff1660e01b81526004016128549190612e4f565b602060405180830381865afa158015612871573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061289591906135df565b95506000861180156128f15750601c60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156129995787868b61290391906132f3565b61290d919061337c565b94506000851115612998578a73ffffffffffffffffffffffffffffffffffffffff1663a9059cbb88876040518363ffffffff1660e01b8152600401612953929190613845565b6020604051808303816000875af1158015612972573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612996919061366f565b505b5b5a816129a59190612f75565b836129b091906130ed565b92505a9050601d60008154809291906129c89061386e565b919050555081806129d89061386e565b9250506127b3565b43601f8190555050505050505050505050505b50565b80600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a4191906130ed565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612ae19190612cf4565b60405180910390a3505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612b1e82612af3565b9050919050565b612b2e81612b13565b8114612b3957600080fd5b50565b600081359050612b4b81612b25565b92915050565b600060208284031215612b6757612b66612aee565b5b6000612b7584828501612b3c565b91505092915050565b60008115159050919050565b612b9381612b7e565b82525050565b6000602082019050612bae6000830184612b8a565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612bee578082015181840152602081019050612bd3565b83811115612bfd576000848401525b50505050565b6000601f19601f8301169050919050565b6000612c1f82612bb4565b612c298185612bbf565b9350612c39818560208601612bd0565b612c4281612c03565b840191505092915050565b60006020820190508181036000830152612c678184612c14565b905092915050565b6000819050919050565b612c8281612c6f565b8114612c8d57600080fd5b50565b600081359050612c9f81612c79565b92915050565b60008060408385031215612cbc57612cbb612aee565b5b6000612cca85828601612b3c565b9250506020612cdb85828601612c90565b9150509250929050565b612cee81612c6f565b82525050565b6000602082019050612d096000830184612ce5565b92915050565b6000819050919050565b6000612d34612d2f612d2a84612af3565b612d0f565b612af3565b9050919050565b6000612d4682612d19565b9050919050565b6000612d5882612d3b565b9050919050565b612d6881612d4d565b82525050565b6000602082019050612d836000830184612d5f565b92915050565b600080600060608486031215612da257612da1612aee565b5b6000612db086828701612b3c565b9350506020612dc186828701612b3c565b9250506040612dd286828701612c90565b9150509250925092565b600060208284031215612df257612df1612aee565b5b6000612e0084828501612c90565b91505092915050565b600060ff82169050919050565b612e1f81612e09565b82525050565b6000602082019050612e3a6000830184612e16565b92915050565b612e4981612b13565b82525050565b6000602082019050612e646000830184612e40565b92915050565b6000612e7582612d3b565b9050919050565b612e8581612e6a565b82525050565b6000602082019050612ea06000830184612e7c565b92915050565b60008060408385031215612ebd57612ebc612aee565b5b6000612ecb85828601612b3c565b9250506020612edc85828601612b3c565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612f2d57607f821691505b602082108103612f4057612f3f612ee6565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612f8082612c6f565b9150612f8b83612c6f565b925082821015612f9e57612f9d612f46565b5b828203905092915050565b7f216f776e65720000000000000000000000000000000000000000000000000000600082015250565b6000612fdf600683612bbf565b9150612fea82612fa9565b602082019050919050565b6000602082019050818103600083015261300e81612fd2565b9050919050565b7f74726164696e6700000000000000000000000000000000000000000000000000600082015250565b600061304b600783612bbf565b915061305682613015565b602082019050919050565b6000602082019050818103600083015261307a8161303e565b9050919050565b7f416d6f756e74206d7573742062652067726561746572207468616e2030000000600082015250565b60006130b7601d83612bbf565b91506130c282613081565b602082019050919050565b600060208201905081810360008301526130e6816130aa565b9050919050565b60006130f882612c6f565b915061310383612c6f565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561313857613137612f46565b5b828201905092915050565b7f45786365656473206d6178696d756d20737570706c7900000000000000000000600082015250565b6000613179601683612bbf565b915061318482613143565b602082019050919050565b600060208201905081810360008301526131a88161316c565b9050919050565b7f6e65772069732030000000000000000000000000000000000000000000000000600082015250565b60006131e5600883612bbf565b91506131f0826131af565b602082019050919050565b60006020820190508181036000830152613214816131d8565b9050919050565b7f626c61636b4c6973740000000000000000000000000000000000000000000000600082015250565b6000613251600983612bbf565b915061325c8261321b565b602082019050919050565b6000602082019050818103600083015261328081613244565b9050919050565b7f62616c616e63654e6f74456e6f75676800000000000000000000000000000000600082015250565b60006132bd601083612bbf565b91506132c882613287565b602082019050919050565b600060208201905081810360008301526132ec816132b0565b9050919050565b60006132fe82612c6f565b915061330983612c6f565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561334257613341612f46565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061338782612c6f565b915061339283612c6f565b9250826133a2576133a161334d565b5b828204905092915050565b7f2173746172744164644c50000000000000000000000000000000000000000000600082015250565b60006133e3600b83612bbf565b91506133ee826133ad565b602082019050919050565b60006020820190508181036000830152613412816133d6565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000819050919050565b600061349c61349761349284613477565b612d0f565b612c6f565b9050919050565b6134ac81613481565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6134e781612b13565b82525050565b60006134f983836134de565b60208301905092915050565b6000602082019050919050565b600061351d826134b2565b61352781856134bd565b9350613532836134ce565b8060005b8381101561356357815161354a88826134ed565b975061355583613505565b925050600181019050613536565b5085935050505092915050565b600060a0820190506135856000830188612ce5565b61359260208301876134a3565b81810360408301526135a48186613512565b90506135b36060830185612e40565b6135c06080830184612ce5565b9695505050505050565b6000815190506135d981612c79565b92915050565b6000602082840312156135f5576135f4612aee565b5b6000613603848285016135ca565b91505092915050565b60006060820190506136216000830186612e40565b61362e6020830185612e40565b61363b6040830184612ce5565b949350505050565b61364c81612b7e565b811461365757600080fd5b50565b60008151905061366981613643565b92915050565b60006020828403121561368557613684612aee565b5b60006136938482850161365a565b91505092915050565b6000610100820190506136b2600083018b612e40565b6136bf602083018a612e40565b6136cc6040830189612ce5565b6136d96060830188612ce5565b6136e660808301876134a3565b6136f360a08301866134a3565b61370060c0830185612e40565b61370d60e0830184612ce5565b9998505050505050505050565b60008060006060848603121561373357613732612aee565b5b6000613741868287016135ca565b9350506020613752868287016135ca565b9250506040613763868287016135ca565b9150509250925092565b7f6f766572206d61782062757920616d6f756e7400000000000000000000000000600082015250565b60006137a3601383612bbf565b91506137ae8261376d565b602082019050919050565b600060208201905081810360008301526137d281613796565b9050919050565b7f6f766572206d61782077616c6c6574206c696d69740000000000000000000000600082015250565b600061380f601583612bbf565b915061381a826137d9565b602082019050919050565b6000602082019050818103600083015261383e81613802565b9050919050565b600060408201905061385a6000830185612e40565b6138676020830184612ce5565b9392505050565b600061387982612c6f565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036138ab576138aa612f46565b5b60018201905091905056fea2646970667358221220c4a08c684e643d2d15039ed4b4fefb14c30a25d600df509509b924874c17cc7564736f6c634300080e0033

Deployed Bytecode Sourcemap

15747:497:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3153:45;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6152:94;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6910:159;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3674:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6356:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3347:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7077:336;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12780:99;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6254:94;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3718:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3411:45;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3831:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3907:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3868:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3205:42;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3794:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13031:141;;;;;;;;;;;;;:::i;:::-;;6459:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2297:148;;;;;;;;;;;;;:::i;:::-;;12885:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3542:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3115:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2111:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15415:325;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6046:98;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12994:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6586:165;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3631:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3758:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3254:52;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3592:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6759:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2994:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2453:214;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3384:20;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3153:45;;;;;;;;;;;;;;;;;;;;;;:::o;6152:94::-;6200:13;6233:5;6226:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6152:94;:::o;6910:159::-;6985:4;7002:37;7011:10;7023:7;7032:6;7002:8;:37::i;:::-;7057:4;7050:11;;6910:159;;;;:::o;3674:37::-;;;;:::o;6356:95::-;6409:7;6436;;6429:14;;6356:95;:::o;3347:30::-;;;;;;;;;;;;;:::o;7077:336::-;7175:4;7192:36;7202:6;7210:9;7221:6;7192:9;:36::i;:::-;3533:1;3524:11;7243;:19;7255:6;7243:19;;;;;;;;;;;;;;;:31;7263:10;7243:31;;;;;;;;;;;;;;;;:38;7239:145;;7366:6;7332:11;:19;7344:6;7332:19;;;;;;;;;;;;;;;:31;7352:10;7332:31;;;;;;;;;;;;;;;;:40;;;;:::i;:::-;7298:11;:19;7310:6;7298:19;;;;;;;;;;;;;;;:31;7318:10;7298:31;;;;;;;;;;;;;;;:74;;;;7239:145;7401:4;7394:11;;7077:336;;;;;:::o;12780:99::-;2248:10;2238:20;;:6;;;;;;;;;;:20;;;2230:39;;;;;;;;;;;;:::i;:::-;;;;;;;;;12864:7:::1;12850:11;:21;;;;12780:99:::0;:::o;6254:94::-;6306:5;6331:9;;;;;;;;;;;6324:16;;6254:94;:::o;3718:33::-;;;;:::o;3411:45::-;;;;;;;;;;;;;;;;;;;;;;:::o;3831:26::-;;;;:::o;3907:24::-;;;;;;;;;;;;;:::o;3868:30::-;;;;:::o;3205:42::-;;;;;;;;;;;;;;;;;;;;;;:::o;3794:30::-;;;;;;;;;;;;;:::o;13031:141::-;2248:10;2238:20;;:6;;;;;;;;;;:20;;;2230:39;;;;;;;;;;;;:::i;:::-;;;;;;;;;13096:15:::1;;13091:1;:20;13083:40;;;;;;;;;;;;:::i;:::-;;;;;;;;;13152:12;13134:15;:30;;;;13031:141::o:0;6459:119::-;6525:7;6552:9;:18;6562:7;6552:18;;;;;;;;;;;;;;;;6545:25;;6459:119;;;:::o;2297:148::-;2248:10;2238:20;;:6;;;;;;;;;;:20;;;2230:39;;;;;;;;;;;;:::i;:::-;;;;;;;;;2404:1:::1;2367:40;;2388:6;::::0;::::1;;;;;;;;2367:40;;;;;;;;;;;;2435:1;2418:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;2297:148::o:0;12885:101::-;2248:10;2238:20;;:6;;;;;;;;;;:20;;;2230:39;;;;;;;;;;;;:::i;:::-;;;;;;;;;12971:7:::1;12956:12;:22;;;;12885:101:::0;:::o;3542:41::-;;;;;;;;;;;;;:::o;3115:27::-;;;;:::o;2111:79::-;2149:7;2176:6;;;;;;;;;;;2169:13;;2111:79;:::o;15415:325::-;2248:10;2238:20;;:6;;;;;;;;;;:20;;;2230:39;;;;;;;;;;;;:::i;:::-;;;;;;;;;15492:1:::1;15483:6;:10;15475:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;3533:1;3524:11;15562:6;15546:13;:11;:13::i;:::-;:22;;;;:::i;:::-;:29;;15538:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;15640:6;15615:9;:21;15625:10;15615:21;;;;;;;;;;;;;;;;:31;;;;;;;:::i;:::-;;;;;;;;15668:6;15657:7;;:17;;;;;;;:::i;:::-;;;;;;;;15713:10;15692:40;;15709:1;15692:40;;;15725:6;15692:40;;;;;;:::i;:::-;;;;;;;;15415:325:::0;:::o;6046:98::-;6096:13;6129:7;6122:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6046:98;:::o;12994:30::-;;;;:::o;6586:165::-;6664:4;6681:40;6691:10;6703:9;6714:6;6681:9;:40::i;:::-;6739:4;6732:11;;6586:165;;;;:::o;3631:36::-;;;;:::o;3758:29::-;;;;:::o;3254:52::-;;;;;;;;;;;;;;;;;;;;;;:::o;3592:32::-;;;;:::o;6759:143::-;6840:7;6867:11;:18;6879:5;6867:18;;;;;;;;;;;;;;;:27;6886:7;6867:27;;;;;;;;;;;;;;;;6860:34;;6759:143;;;;:::o;2994:26::-;;;;;;;;;;;;;:::o;2453:214::-;2248:10;2238:20;;:6;;;;;;;;;;:20;;;2230:39;;;;;;;;;;;;:::i;:::-;;;;;;;;;2562:1:::1;2542:22;;:8;:22;;::::0;2534:43:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;2622:8;2593:38;;2614:6;::::0;::::1;;;;;;;;2593:38;;;;;;;;;;;;2651:8;2642:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;2453:214:::0;:::o;3384:20::-;;;;;;;;;;;;;:::o;7421:177::-;7536:6;7506:11;:18;7518:5;7506:18;;;;;;;;;;;;;;;:27;7525:7;7506:27;;;;;;;;;;;;;;;:36;;;;7574:7;7558:32;;7567:5;7558:32;;;7583:6;7558:32;;;;;;:::i;:::-;;;;;;;;7421:177;;;:::o;7608:2111::-;7731:10;:16;7742:4;7731:16;;;;;;;;;;;;;;;;;;;;;;;;;7730:17;7722:39;;;;;;;;;;;;:::i;:::-;;;;;;;;;7774:15;7792;7802:4;7792:9;:15::i;:::-;7774:33;;7837:6;7826:7;:17;;7818:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;7882:13;:19;7896:4;7882:19;;;;;;;;;;;;;;;;;;;;;;;;;7881:20;:42;;;;;7906:13;:17;7920:2;7906:17;;;;;;;;;;;;;;;;;;;;;;;;;7905:18;7881:42;7877:220;;;7940:21;7981:5;7974:4;7964:7;:14;;;;:::i;:::-;:22;;;;:::i;:::-;7940:46;;8014:13;8005:6;:22;8001:85;;;8057:13;8048:22;;8001:85;7925:172;7877:220;8109:12;8132:11;8160:13;:19;8174:4;8160:19;;;;;;;;;;;;;;;;;;;;;;;;;:40;;;;8183:13;:17;8197:2;8183:17;;;;;;;;;;;;;;;;;;;;;;;;;8160:40;8156:1331;;;8222:13;:19;8236:4;8222:19;;;;;;;;;;;;;;;;;;;;;;;;;8221:20;:42;;;;;8246:13;:17;8260:2;8246:17;;;;;;;;;;;;;;;;;;;;;;;;;8245:18;8221:42;8217:1174;;;8293:15;;8288:1;:20;8284:133;;8345:15;;8341:1;:19;:40;;;;;8364:13;:17;8378:2;8364:17;;;;;;;;;;;;;;;;;;;;;;;;;8341:40;8333:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;8284:133;8472:2;8454:15;;:20;;;;:::i;:::-;8439:12;:35;8435:143;;;8499:30;8512:4;8518:2;8522:6;8499:12;:30::i;:::-;8552:7;;;;;8435:143;8602:13;:17;8616:2;8602:17;;;;;;;;;;;;;;;;;;;;;;;;;8598:745;;;8649:6;;;;;;;;;;;8644:680;;8684:28;8715:24;8733:4;8715:9;:24::i;:::-;8684:55;;8793:1;8770:20;:24;8766:535;;;8827:15;8915:10;;8894:18;;8879:12;;8859:17;;8845:11;;:31;;;;:::i;:::-;:46;;;;:::i;:::-;:67;;;;:::i;:::-;:80;;;;:::i;:::-;8827:98;;8956:27;9005:4;8995:7;8986:6;:16;;;;:::i;:::-;:23;;;;:::i;:::-;8956:53;;9066:20;9044:19;:42;9040:157;;;9145:20;9123:42;;9040:157;9227:46;9244:19;9265:7;9227:16;:46::i;:::-;8796:505;;8766:535;8657:667;8644:680;8598:745;9371:4;9361:14;;8217:1174;9409:13;:17;9423:2;9409:17;;;;;;;;;;;;;;;;;;;;;;;;;9405:71;;;9456:4;9447:13;;9405:71;8156:1331;9499:49;9514:4;9520:2;9524:6;9532:7;9541:6;9499:14;:49::i;:::-;9581:4;9565:21;;:4;:21;;;9561:151;;9607:6;9603:62;;;9634:15;9644:4;9634:9;:15::i;:::-;9603:62;9679:21;9693:6;9679:13;:21::i;:::-;9561:151;7711:2008;;;7608:2111;;;;:::o;9727:401::-;9894:7;9874:9;:17;9884:6;9874:17;;;;;;;;;;;;;;;;:27;;;;:::i;:::-;9854:9;:17;9864:6;9854:17;;;;;;;;;;;;;;;:47;;;;9912:17;9947:3;9942:2;9932:7;:12;;;;:::i;:::-;:18;;;;:::i;:::-;9912:38;;9961:95;9989:6;10010:11;;;;;;;;;;;10036:9;9961:13;:95::i;:::-;10067:53;10081:6;10089:9;10110;10100:7;:19;;;;:::i;:::-;10067:13;:53::i;:::-;9843:285;9727:401;;;:::o;11275:1278::-;3981:4;3972:6;;:13;;;;;;;;;;;;;;;;;;11381:7:::1;11370:18;;;;;:::i;:::-;;;11399:13;11415:10;;11399:26;;11436:16;11477:7;11469:5;11455:11;:19;;;;:::i;:::-;:29;;;;:::i;:::-;11436:48;;11497:21;11535:1;11521:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11497:40;;11566:4;11548;11553:1;11548:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;11592:5;;;;;;;;;;;11582:4;11587:1;11582:7;;;;;;;;:::i;:::-;;;;;;;:15;;;;;;;;;::::0;::::1;11608:11;;;;;;;;;;;:65;;;11702:8;11688:11;:22;;;;:::i;:::-;11725:1;11741:4;11768:17;;;;;;;;;;;11801:15;11608:219;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11851:5;11840:16;;;;;:::i;:::-;;;11869:11;11890:5;;;;;;;;;;;11869:27;;11907:19;11929:4;:14;;;11952:17;;;;;;;;;;;11929:42;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11907:64;;11982:18;12052:7;12048:1;12032:12;;12018:11;;:26;;;;:::i;:::-;12003:11;:42;;;;:::i;:::-;:46;;;;:::i;:::-;:56;;;;:::i;:::-;11982:77;;12070:4;:17;;;12096;;;;;;;;;;;12116:11;;;;;;;;;;;12129:10;12070:70;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12151:4;:17;;;12177;;;;;;;;;;;12205:4;12226:10;12212:11;:24;;;;:::i;:::-;12151:86;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12265:1;12254:8;:12;12250:296;;;12283:14;12322:7;12314:5;12300:11;:19;;;;:::i;:::-;:29;;;;:::i;:::-;12283:46;;12357:1;12348:6;:10;12344:191;;;12379:11;;;;;;;;;;;:24;;;12434:4;12441:5;;;;;;;;;;;12448:8;12458:6;12466:1;12469::::0;12472:11:::1;;;;;;;;;;;12485:15;12379:140;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;12344:191;12268:278;12250:296;11359:1194;;;;;;4017:5:::0;4008:6;;:14;;;;;;;;;;;;;;;;;;11275:1278;;:::o;10134:1133::-;10348:7;10328:9;:17;10338:6;10328:17;;;;;;;;;;;;;;;;:27;;;;:::i;:::-;10308:9;:17;10318:6;10308:17;;;;;;;;;;;;;;;:47;;;;10366:17;10400:7;10396:629;;;10424:15;10458:6;10454:258;;;10531:10;;10510:18;;10495:12;;:33;;;;:::i;:::-;:46;;;;:::i;:::-;10485:56;;10454:258;;;10606:17;;10592:11;;:31;;;;:::i;:::-;10582:41;;10661:12;;10650:7;:23;;10642:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;10454:258;10726:18;10767:5;10757:7;10747;:17;;;;:::i;:::-;:25;;;;:::i;:::-;10726:46;;10804:1;10791:10;:14;10787:227;;;10839:10;10826:23;;;;;:::i;:::-;;;10868:130;10904:6;10941:4;10969:10;10868:13;:130::i;:::-;10787:227;10409:616;;10396:629;11041:19;:30;11061:9;11041:30;;;;;;;;;;;;;;;;;;;;;;;;;11040:31;:46;;;;;11075:11;;;;;;;;;;;11040:46;11037:156;;;11157:11;;11143:9;11133:7;11110:20;11120:9;11110;:20::i;:::-;:30;;;;:::i;:::-;:42;;;;:::i;:::-;11109:59;;11101:92;;;;;;;;;;;;:::i;:::-;;;;;;;;;11037:156;11206:53;11220:6;11228:9;11249;11239:7;:19;;;;:::i;:::-;11206:13;:53::i;:::-;10297:970;10134:1133;;;;;:::o;13472:386::-;13523:12;13576:3;13564:16;13556:24;;13602:1;13595:4;:8;13591:47;;;13620:7;;;13591:47;13657:11;:16;13669:3;13657:16;;;;;;;;;;;;;;;;13652:1;:21;13648:203;;13699:7;:14;;;;13694:1;:19;:40;;;;13731:3;13717:17;;:7;13725:1;13717:10;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:17;;;;13694:40;13690:150;;;13774:7;:14;;;;13755:11;:16;13767:3;13755:16;;;;;;;;;;;;;;;:33;;;;13807:7;13820:3;13807:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13690:150;13648:203;13512:346;13472:386;;:::o;13989:1420::-;14075:12;14070:2;14048:19;;:24;;;;:::i;:::-;:39;14104:7;14044:78;14134:11;14155:5;;;;;;;;;;;14134:27;;14174:15;14192:4;:14;;;14215:4;14192:29;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14174:47;;14246:21;;14236:7;:31;14232:70;;;14284:7;;;;14232:70;14314:16;14340:9;;;;;;;;;;;14314:36;;14361:19;14383:9;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14361:45;;14419:19;14449:20;14480:14;14507:24;14534:7;:14;;;;14507:41;;14561:15;14591:18;14624:15;14642:9;14624:27;;14664:691;14681:3;14671:7;:13;:46;;;;;14701:16;14688:10;:29;14671:46;14664:691;;;14754:16;14738:12;;:32;14734:89;;14806:1;14791:12;:16;;;;14734:89;14851:7;14859:12;;14851:21;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;14837:35;;14902:9;:19;;;14922:11;14902:32;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14887:47;;14968:1;14953:12;:16;:47;;;;;14974:13;:26;14988:11;14974:26;;;;;;;;;;;;;;;;;;;;;;;;;14973:27;14953:47;14949:247;;;15055:14;15040:12;15030:7;:22;;;;:::i;:::-;:39;;;;:::i;:::-;15021:48;;15101:1;15092:6;:10;15088:93;;;15127:4;:13;;;15141:11;15154:6;15127:34;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;15088:93;14949:247;15243:9;15233:7;:19;;;;:::i;:::-;15222:7;:31;;;;:::i;:::-;15212:41;;15278:9;15268:19;;15302:12;;:14;;;;;;;;;:::i;:::-;;;;;;15331:12;;;;;:::i;:::-;;;;14664:691;;;15389:12;15367:19;:34;;;;14033:1376;;;;;;;;;;;13989:1420;;:::o;12561:213::-;12714:7;12698:9;:13;12708:2;12698:13;;;;;;;;;;;;;;;;:23;;;;:::i;:::-;12682:9;:13;12692:2;12682:13;;;;;;;;;;;;;;;:39;;;;12754:2;12737:29;;12746:6;12737:29;;;12758:7;12737:29;;;;;;:::i;:::-;;;;;;;;12561:213;;;:::o;88:117:1:-;197:1;194;187:12;334:126;371:7;411:42;404:5;400:54;389:65;;334:126;;;:::o;466:96::-;503:7;532:24;550:5;532:24;:::i;:::-;521:35;;466:96;;;:::o;568:122::-;641:24;659:5;641:24;:::i;:::-;634:5;631:35;621:63;;680:1;677;670:12;621:63;568:122;:::o;696:139::-;742:5;780:6;767:20;758:29;;796:33;823:5;796:33;:::i;:::-;696:139;;;;:::o;841:329::-;900:6;949:2;937:9;928:7;924:23;920:32;917:119;;;955:79;;:::i;:::-;917:119;1075:1;1100:53;1145:7;1136:6;1125:9;1121:22;1100:53;:::i;:::-;1090:63;;1046:117;841:329;;;;:::o;1176:90::-;1210:7;1253:5;1246:13;1239:21;1228:32;;1176:90;;;:::o;1272:109::-;1353:21;1368:5;1353:21;:::i;:::-;1348:3;1341:34;1272:109;;:::o;1387:210::-;1474:4;1512:2;1501:9;1497:18;1489:26;;1525:65;1587:1;1576:9;1572:17;1563:6;1525:65;:::i;:::-;1387:210;;;;:::o;1603:99::-;1655:6;1689:5;1683:12;1673:22;;1603:99;;;:::o;1708:169::-;1792:11;1826:6;1821:3;1814:19;1866:4;1861:3;1857:14;1842:29;;1708:169;;;;:::o;1883:307::-;1951:1;1961:113;1975:6;1972:1;1969:13;1961:113;;;2060:1;2055:3;2051:11;2045:18;2041:1;2036:3;2032:11;2025:39;1997:2;1994:1;1990:10;1985:15;;1961:113;;;2092:6;2089:1;2086:13;2083:101;;;2172:1;2163:6;2158:3;2154:16;2147:27;2083:101;1932:258;1883:307;;;:::o;2196:102::-;2237:6;2288:2;2284:7;2279:2;2272:5;2268:14;2264:28;2254:38;;2196:102;;;:::o;2304:364::-;2392:3;2420:39;2453:5;2420:39;:::i;:::-;2475:71;2539:6;2534:3;2475:71;:::i;:::-;2468:78;;2555:52;2600:6;2595:3;2588:4;2581:5;2577:16;2555:52;:::i;:::-;2632:29;2654:6;2632:29;:::i;:::-;2627:3;2623:39;2616:46;;2396:272;2304:364;;;;:::o;2674:313::-;2787:4;2825:2;2814:9;2810:18;2802:26;;2874:9;2868:4;2864:20;2860:1;2849:9;2845:17;2838:47;2902:78;2975:4;2966:6;2902:78;:::i;:::-;2894:86;;2674:313;;;;:::o;2993:77::-;3030:7;3059:5;3048:16;;2993:77;;;:::o;3076:122::-;3149:24;3167:5;3149:24;:::i;:::-;3142:5;3139:35;3129:63;;3188:1;3185;3178:12;3129:63;3076:122;:::o;3204:139::-;3250:5;3288:6;3275:20;3266:29;;3304:33;3331:5;3304:33;:::i;:::-;3204:139;;;;:::o;3349:474::-;3417:6;3425;3474:2;3462:9;3453:7;3449:23;3445:32;3442:119;;;3480:79;;:::i;:::-;3442:119;3600:1;3625:53;3670:7;3661:6;3650:9;3646:22;3625:53;:::i;:::-;3615:63;;3571:117;3727:2;3753:53;3798:7;3789:6;3778:9;3774:22;3753:53;:::i;:::-;3743:63;;3698:118;3349:474;;;;;:::o;3829:118::-;3916:24;3934:5;3916:24;:::i;:::-;3911:3;3904:37;3829:118;;:::o;3953:222::-;4046:4;4084:2;4073:9;4069:18;4061:26;;4097:71;4165:1;4154:9;4150:17;4141:6;4097:71;:::i;:::-;3953:222;;;;:::o;4181:60::-;4209:3;4230:5;4223:12;;4181:60;;;:::o;4247:142::-;4297:9;4330:53;4348:34;4357:24;4375:5;4357:24;:::i;:::-;4348:34;:::i;:::-;4330:53;:::i;:::-;4317:66;;4247:142;;;:::o;4395:126::-;4445:9;4478:37;4509:5;4478:37;:::i;:::-;4465:50;;4395:126;;;:::o;4527:145::-;4596:9;4629:37;4660:5;4629:37;:::i;:::-;4616:50;;4527:145;;;:::o;4678:169::-;4784:56;4834:5;4784:56;:::i;:::-;4779:3;4772:69;4678:169;;:::o;4853:260::-;4965:4;5003:2;4992:9;4988:18;4980:26;;5016:90;5103:1;5092:9;5088:17;5079:6;5016:90;:::i;:::-;4853:260;;;;:::o;5119:619::-;5196:6;5204;5212;5261:2;5249:9;5240:7;5236:23;5232:32;5229:119;;;5267:79;;:::i;:::-;5229:119;5387:1;5412:53;5457:7;5448:6;5437:9;5433:22;5412:53;:::i;:::-;5402:63;;5358:117;5514:2;5540:53;5585:7;5576:6;5565:9;5561:22;5540:53;:::i;:::-;5530:63;;5485:118;5642:2;5668:53;5713:7;5704:6;5693:9;5689:22;5668:53;:::i;:::-;5658:63;;5613:118;5119:619;;;;;:::o;5744:329::-;5803:6;5852:2;5840:9;5831:7;5827:23;5823:32;5820:119;;;5858:79;;:::i;:::-;5820:119;5978:1;6003:53;6048:7;6039:6;6028:9;6024:22;6003:53;:::i;:::-;5993:63;;5949:117;5744:329;;;;:::o;6079:86::-;6114:7;6154:4;6147:5;6143:16;6132:27;;6079:86;;;:::o;6171:112::-;6254:22;6270:5;6254:22;:::i;:::-;6249:3;6242:35;6171:112;;:::o;6289:214::-;6378:4;6416:2;6405:9;6401:18;6393:26;;6429:67;6493:1;6482:9;6478:17;6469:6;6429:67;:::i;:::-;6289:214;;;;:::o;6509:118::-;6596:24;6614:5;6596:24;:::i;:::-;6591:3;6584:37;6509:118;;:::o;6633:222::-;6726:4;6764:2;6753:9;6749:18;6741:26;;6777:71;6845:1;6834:9;6830:17;6821:6;6777:71;:::i;:::-;6633:222;;;;:::o;6861:150::-;6935:9;6968:37;6999:5;6968:37;:::i;:::-;6955:50;;6861:150;;;:::o;7017:179::-;7128:61;7183:5;7128:61;:::i;:::-;7123:3;7116:74;7017:179;;:::o;7202:270::-;7319:4;7357:2;7346:9;7342:18;7334:26;;7370:95;7462:1;7451:9;7447:17;7438:6;7370:95;:::i;:::-;7202:270;;;;:::o;7478:474::-;7546:6;7554;7603:2;7591:9;7582:7;7578:23;7574:32;7571:119;;;7609:79;;:::i;:::-;7571:119;7729:1;7754:53;7799:7;7790:6;7779:9;7775:22;7754:53;:::i;:::-;7744:63;;7700:117;7856:2;7882:53;7927:7;7918:6;7907:9;7903:22;7882:53;:::i;:::-;7872:63;;7827:118;7478:474;;;;;:::o;7958:180::-;8006:77;8003:1;7996:88;8103:4;8100:1;8093:15;8127:4;8124:1;8117:15;8144:320;8188:6;8225:1;8219:4;8215:12;8205:22;;8272:1;8266:4;8262:12;8293:18;8283:81;;8349:4;8341:6;8337:17;8327:27;;8283:81;8411:2;8403:6;8400:14;8380:18;8377:38;8374:84;;8430:18;;:::i;:::-;8374:84;8195:269;8144:320;;;:::o;8470:180::-;8518:77;8515:1;8508:88;8615:4;8612:1;8605:15;8639:4;8636:1;8629:15;8656:191;8696:4;8716:20;8734:1;8716:20;:::i;:::-;8711:25;;8750:20;8768:1;8750:20;:::i;:::-;8745:25;;8789:1;8786;8783:8;8780:34;;;8794:18;;:::i;:::-;8780:34;8839:1;8836;8832:9;8824:17;;8656:191;;;;:::o;8853:156::-;8993:8;8989:1;8981:6;8977:14;8970:32;8853:156;:::o;9015:365::-;9157:3;9178:66;9242:1;9237:3;9178:66;:::i;:::-;9171:73;;9253:93;9342:3;9253:93;:::i;:::-;9371:2;9366:3;9362:12;9355:19;;9015:365;;;:::o;9386:419::-;9552:4;9590:2;9579:9;9575:18;9567:26;;9639:9;9633:4;9629:20;9625:1;9614:9;9610:17;9603:47;9667:131;9793:4;9667:131;:::i;:::-;9659:139;;9386:419;;;:::o;9811:157::-;9951:9;9947:1;9939:6;9935:14;9928:33;9811:157;:::o;9974:365::-;10116:3;10137:66;10201:1;10196:3;10137:66;:::i;:::-;10130:73;;10212:93;10301:3;10212:93;:::i;:::-;10330:2;10325:3;10321:12;10314:19;;9974:365;;;:::o;10345:419::-;10511:4;10549:2;10538:9;10534:18;10526:26;;10598:9;10592:4;10588:20;10584:1;10573:9;10569:17;10562:47;10626:131;10752:4;10626:131;:::i;:::-;10618:139;;10345:419;;;:::o;10770:179::-;10910:31;10906:1;10898:6;10894:14;10887:55;10770:179;:::o;10955:366::-;11097:3;11118:67;11182:2;11177:3;11118:67;:::i;:::-;11111:74;;11194:93;11283:3;11194:93;:::i;:::-;11312:2;11307:3;11303:12;11296:19;;10955:366;;;:::o;11327:419::-;11493:4;11531:2;11520:9;11516:18;11508:26;;11580:9;11574:4;11570:20;11566:1;11555:9;11551:17;11544:47;11608:131;11734:4;11608:131;:::i;:::-;11600:139;;11327:419;;;:::o;11752:305::-;11792:3;11811:20;11829:1;11811:20;:::i;:::-;11806:25;;11845:20;11863:1;11845:20;:::i;:::-;11840:25;;11999:1;11931:66;11927:74;11924:1;11921:81;11918:107;;;12005:18;;:::i;:::-;11918:107;12049:1;12046;12042:9;12035:16;;11752:305;;;;:::o;12063:172::-;12203:24;12199:1;12191:6;12187:14;12180:48;12063:172;:::o;12241:366::-;12383:3;12404:67;12468:2;12463:3;12404:67;:::i;:::-;12397:74;;12480:93;12569:3;12480:93;:::i;:::-;12598:2;12593:3;12589:12;12582:19;;12241:366;;;:::o;12613:419::-;12779:4;12817:2;12806:9;12802:18;12794:26;;12866:9;12860:4;12856:20;12852:1;12841:9;12837:17;12830:47;12894:131;13020:4;12894:131;:::i;:::-;12886:139;;12613:419;;;:::o;13038:158::-;13178:10;13174:1;13166:6;13162:14;13155:34;13038:158;:::o;13202:365::-;13344:3;13365:66;13429:1;13424:3;13365:66;:::i;:::-;13358:73;;13440:93;13529:3;13440:93;:::i;:::-;13558:2;13553:3;13549:12;13542:19;;13202:365;;;:::o;13573:419::-;13739:4;13777:2;13766:9;13762:18;13754:26;;13826:9;13820:4;13816:20;13812:1;13801:9;13797:17;13790:47;13854:131;13980:4;13854:131;:::i;:::-;13846:139;;13573:419;;;:::o;13998:159::-;14138:11;14134:1;14126:6;14122:14;14115:35;13998:159;:::o;14163:365::-;14305:3;14326:66;14390:1;14385:3;14326:66;:::i;:::-;14319:73;;14401:93;14490:3;14401:93;:::i;:::-;14519:2;14514:3;14510:12;14503:19;;14163:365;;;:::o;14534:419::-;14700:4;14738:2;14727:9;14723:18;14715:26;;14787:9;14781:4;14777:20;14773:1;14762:9;14758:17;14751:47;14815:131;14941:4;14815:131;:::i;:::-;14807:139;;14534:419;;;:::o;14959:166::-;15099:18;15095:1;15087:6;15083:14;15076:42;14959:166;:::o;15131:366::-;15273:3;15294:67;15358:2;15353:3;15294:67;:::i;:::-;15287:74;;15370:93;15459:3;15370:93;:::i;:::-;15488:2;15483:3;15479:12;15472:19;;15131:366;;;:::o;15503:419::-;15669:4;15707:2;15696:9;15692:18;15684:26;;15756:9;15750:4;15746:20;15742:1;15731:9;15727:17;15720:47;15784:131;15910:4;15784:131;:::i;:::-;15776:139;;15503:419;;;:::o;15928:348::-;15968:7;15991:20;16009:1;15991:20;:::i;:::-;15986:25;;16025:20;16043:1;16025:20;:::i;:::-;16020:25;;16213:1;16145:66;16141:74;16138:1;16135:81;16130:1;16123:9;16116:17;16112:105;16109:131;;;16220:18;;:::i;:::-;16109:131;16268:1;16265;16261:9;16250:20;;15928:348;;;;:::o;16282:180::-;16330:77;16327:1;16320:88;16427:4;16424:1;16417:15;16451:4;16448:1;16441:15;16468:185;16508:1;16525:20;16543:1;16525:20;:::i;:::-;16520:25;;16559:20;16577:1;16559:20;:::i;:::-;16554:25;;16598:1;16588:35;;16603:18;;:::i;:::-;16588:35;16645:1;16642;16638:9;16633:14;;16468:185;;;;:::o;16659:161::-;16799:13;16795:1;16787:6;16783:14;16776:37;16659:161;:::o;16826:366::-;16968:3;16989:67;17053:2;17048:3;16989:67;:::i;:::-;16982:74;;17065:93;17154:3;17065:93;:::i;:::-;17183:2;17178:3;17174:12;17167:19;;16826:366;;;:::o;17198:419::-;17364:4;17402:2;17391:9;17387:18;17379:26;;17451:9;17445:4;17441:20;17437:1;17426:9;17422:17;17415:47;17479:131;17605:4;17479:131;:::i;:::-;17471:139;;17198:419;;;:::o;17623:180::-;17671:77;17668:1;17661:88;17768:4;17765:1;17758:15;17792:4;17789:1;17782:15;17809:180;17857:77;17854:1;17847:88;17954:4;17951:1;17944:15;17978:4;17975:1;17968:15;17995:85;18040:7;18069:5;18058:16;;17995:85;;;:::o;18086:158::-;18144:9;18177:61;18195:42;18204:32;18230:5;18204:32;:::i;:::-;18195:42;:::i;:::-;18177:61;:::i;:::-;18164:74;;18086:158;;;:::o;18250:147::-;18345:45;18384:5;18345:45;:::i;:::-;18340:3;18333:58;18250:147;;:::o;18403:114::-;18470:6;18504:5;18498:12;18488:22;;18403:114;;;:::o;18523:184::-;18622:11;18656:6;18651:3;18644:19;18696:4;18691:3;18687:14;18672:29;;18523:184;;;;:::o;18713:132::-;18780:4;18803:3;18795:11;;18833:4;18828:3;18824:14;18816:22;;18713:132;;;:::o;18851:108::-;18928:24;18946:5;18928:24;:::i;:::-;18923:3;18916:37;18851:108;;:::o;18965:179::-;19034:10;19055:46;19097:3;19089:6;19055:46;:::i;:::-;19133:4;19128:3;19124:14;19110:28;;18965:179;;;;:::o;19150:113::-;19220:4;19252;19247:3;19243:14;19235:22;;19150:113;;;:::o;19299:732::-;19418:3;19447:54;19495:5;19447:54;:::i;:::-;19517:86;19596:6;19591:3;19517:86;:::i;:::-;19510:93;;19627:56;19677:5;19627:56;:::i;:::-;19706:7;19737:1;19722:284;19747:6;19744:1;19741:13;19722:284;;;19823:6;19817:13;19850:63;19909:3;19894:13;19850:63;:::i;:::-;19843:70;;19936:60;19989:6;19936:60;:::i;:::-;19926:70;;19782:224;19769:1;19766;19762:9;19757:14;;19722:284;;;19726:14;20022:3;20015:10;;19423:608;;;19299:732;;;;:::o;20037:831::-;20300:4;20338:3;20327:9;20323:19;20315:27;;20352:71;20420:1;20409:9;20405:17;20396:6;20352:71;:::i;:::-;20433:80;20509:2;20498:9;20494:18;20485:6;20433:80;:::i;:::-;20560:9;20554:4;20550:20;20545:2;20534:9;20530:18;20523:48;20588:108;20691:4;20682:6;20588:108;:::i;:::-;20580:116;;20706:72;20774:2;20763:9;20759:18;20750:6;20706:72;:::i;:::-;20788:73;20856:3;20845:9;20841:19;20832:6;20788:73;:::i;:::-;20037:831;;;;;;;;:::o;20874:143::-;20931:5;20962:6;20956:13;20947:22;;20978:33;21005:5;20978:33;:::i;:::-;20874:143;;;;:::o;21023:351::-;21093:6;21142:2;21130:9;21121:7;21117:23;21113:32;21110:119;;;21148:79;;:::i;:::-;21110:119;21268:1;21293:64;21349:7;21340:6;21329:9;21325:22;21293:64;:::i;:::-;21283:74;;21239:128;21023:351;;;;:::o;21380:442::-;21529:4;21567:2;21556:9;21552:18;21544:26;;21580:71;21648:1;21637:9;21633:17;21624:6;21580:71;:::i;:::-;21661:72;21729:2;21718:9;21714:18;21705:6;21661:72;:::i;:::-;21743;21811:2;21800:9;21796:18;21787:6;21743:72;:::i;:::-;21380:442;;;;;;:::o;21828:116::-;21898:21;21913:5;21898:21;:::i;:::-;21891:5;21888:32;21878:60;;21934:1;21931;21924:12;21878:60;21828:116;:::o;21950:137::-;22004:5;22035:6;22029:13;22020:22;;22051:30;22075:5;22051:30;:::i;:::-;21950:137;;;;:::o;22093:345::-;22160:6;22209:2;22197:9;22188:7;22184:23;22180:32;22177:119;;;22215:79;;:::i;:::-;22177:119;22335:1;22360:61;22413:7;22404:6;22393:9;22389:22;22360:61;:::i;:::-;22350:71;;22306:125;22093:345;;;;:::o;22444:1029::-;22749:4;22787:3;22776:9;22772:19;22764:27;;22801:71;22869:1;22858:9;22854:17;22845:6;22801:71;:::i;:::-;22882:72;22950:2;22939:9;22935:18;22926:6;22882:72;:::i;:::-;22964;23032:2;23021:9;23017:18;23008:6;22964:72;:::i;:::-;23046;23114:2;23103:9;23099:18;23090:6;23046:72;:::i;:::-;23128:81;23204:3;23193:9;23189:19;23180:6;23128:81;:::i;:::-;23219;23295:3;23284:9;23280:19;23271:6;23219:81;:::i;:::-;23310:73;23378:3;23367:9;23363:19;23354:6;23310:73;:::i;:::-;23393;23461:3;23450:9;23446:19;23437:6;23393:73;:::i;:::-;22444:1029;;;;;;;;;;;:::o;23479:663::-;23567:6;23575;23583;23632:2;23620:9;23611:7;23607:23;23603:32;23600:119;;;23638:79;;:::i;:::-;23600:119;23758:1;23783:64;23839:7;23830:6;23819:9;23815:22;23783:64;:::i;:::-;23773:74;;23729:128;23896:2;23922:64;23978:7;23969:6;23958:9;23954:22;23922:64;:::i;:::-;23912:74;;23867:129;24035:2;24061:64;24117:7;24108:6;24097:9;24093:22;24061:64;:::i;:::-;24051:74;;24006:129;23479:663;;;;;:::o;24148:169::-;24288:21;24284:1;24276:6;24272:14;24265:45;24148:169;:::o;24323:366::-;24465:3;24486:67;24550:2;24545:3;24486:67;:::i;:::-;24479:74;;24562:93;24651:3;24562:93;:::i;:::-;24680:2;24675:3;24671:12;24664:19;;24323:366;;;:::o;24695:419::-;24861:4;24899:2;24888:9;24884:18;24876:26;;24948:9;24942:4;24938:20;24934:1;24923:9;24919:17;24912:47;24976:131;25102:4;24976:131;:::i;:::-;24968:139;;24695:419;;;:::o;25120:171::-;25260:23;25256:1;25248:6;25244:14;25237:47;25120:171;:::o;25297:366::-;25439:3;25460:67;25524:2;25519:3;25460:67;:::i;:::-;25453:74;;25536:93;25625:3;25536:93;:::i;:::-;25654:2;25649:3;25645:12;25638:19;;25297:366;;;:::o;25669:419::-;25835:4;25873:2;25862:9;25858:18;25850:26;;25922:9;25916:4;25912:20;25908:1;25897:9;25893:17;25886:47;25950:131;26076:4;25950:131;:::i;:::-;25942:139;;25669:419;;;:::o;26094:332::-;26215:4;26253:2;26242:9;26238:18;26230:26;;26266:71;26334:1;26323:9;26319:17;26310:6;26266:71;:::i;:::-;26347:72;26415:2;26404:9;26400:18;26391:6;26347:72;:::i;:::-;26094:332;;;;;:::o;26432:233::-;26471:3;26494:24;26512:5;26494:24;:::i;:::-;26485:33;;26540:66;26533:5;26530:77;26527:103;;26610:18;;:::i;:::-;26527:103;26657:1;26650:5;26646:13;26639:20;;26432:233;;;:::o

Swarm Source

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