ETH Price: $3,383.17 (-1.58%)
Gas: 2 Gwei

Token

Doug (DOUG)
 

Overview

Max Total Supply

207,000,000,000 DOUG

Holders

476

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0.000000791484897537 DOUG

Value
$0.00
0x89914e35a8f5fd735f4245037ff67f4775605bf1
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:
Doug

Compiler Version
v0.8.18+commit.87f61d96

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier:MIT

/**

Hey there, it's ya boy Doug Heffernan from Queens!  
Welcome to the official smart contract of the Doug Token. 

Website: www.dougheffernan.org
Twitter: www.twitter.com/thetokenofdoug
Telegram: www.t.me/thetokenofdoug

**/

pragma solidity ^0.8.18;

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

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

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

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

    function _msgData() internal view virtual returns (bytes memory) {
        this;
        return msg.data;
    }
}

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

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

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

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

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

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

contract Doug is Context, IERC20, Ownable {
    string private _name = "Doug";
    string private _symbol = "DOUG";
    uint8 private _decimals = 18;
    uint256 private _totalSupply = 207_000_000_000 * 1e18; 

    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;

    mapping(address => bool) public isExcludedFromFee;
    mapping(address => bool) public isExcludedFromMaxTxn;
    mapping(address => bool) public isExcludedFromMaxHolding;

    uint256 public minTokenToSwap = (_totalSupply * 5) / (10000); 
    uint256 public maxHoldLimit = (_totalSupply * 2) / (100); 
    uint256 public maxTxnLimit = (_totalSupply * 2) / (100); 
    uint256 public percentDivider = 100;
    uint256 public launchedAt;

    bool public distributeAndLiquifyStatus;
    bool public feesStatus;
    bool public trading;

    IDexRouter public dexRouter;
    address public dexPair;
    address public feeReceiver; 

    uint256 public marketingFeeOnBuying = 30;
    uint256 public marketingFeeOnSelling = 30;

    event SwapAndLiquify(uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiqudity);

    constructor() {
        _balances[owner()] = _totalSupply;
        feeReceiver = _msgSender(); 

        dexRouter = IDexRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        isExcludedFromFee[address(dexRouter)] = true;
        isExcludedFromMaxTxn[address(dexRouter)] = true;
        isExcludedFromMaxHolding[address(dexRouter)] = true;

        dexPair = IDexFactory(dexRouter.factory()).createPair(address(this), dexRouter.WETH());
        isExcludedFromMaxHolding[dexPair] = true;

        isExcludedFromFee[owner()] = true;
        isExcludedFromFee[address(this)] = true;
        isExcludedFromMaxTxn[owner()] = true;
        isExcludedFromMaxTxn[address(this)] = true;
        isExcludedFromMaxHolding[owner()] = true;
        isExcludedFromMaxHolding[address(this)] = true;

        emit Transfer(address(0), owner(), _totalSupply);
    }

    receive() external payable {}

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

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

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

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

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

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

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

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

    function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()] - amount);
        return true;
    }

    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue);
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] - subtractedValue);
        return true;
    }

    function includeOrExcludeFromFee(address account, bool value) external onlyOwner {
        isExcludedFromFee[account] = value;
    }

    function includeOrExcludeFromMaxTxn(address account, bool value) external onlyOwner {
        isExcludedFromMaxTxn[account] = value;
    }

    function includeOrExcludeFromMaxHolding(address account, bool value) external onlyOwner {
        isExcludedFromMaxHolding[account] = value;
    }

    function setMinTokenToSwap(uint256 _amount) external onlyOwner {
        minTokenToSwap = _amount * 1e18;
    }

    function setMaxHoldLimit(uint256 _amount) external onlyOwner {
        maxHoldLimit = _amount * 1e18;
    }

    function setMaxTxnLimit(uint256 _amount) external onlyOwner {
        maxTxnLimit = _amount * 1e18;
    }

    function setBuyFeePercent(uint256 _marketingFee) external onlyOwner {
        marketingFeeOnBuying = _marketingFee;
    }

    function setSellFeePercent(uint256 _marketingFee) external onlyOwner {
        marketingFeeOnSelling = _marketingFee;
    }

    function setDistributionStatus(bool _value) public onlyOwner {
        distributeAndLiquifyStatus = _value;
    }

    function enableOrDisableFees(bool _value) external onlyOwner {
        feesStatus = _value;
    }

    function enableTrading() external onlyOwner {
        require(!trading, ": already enabled");
        trading = true;
        feesStatus = true;
        distributeAndLiquifyStatus = true;
        launchedAt = block.timestamp;
    }

    function removeStuckEth(address _receiver) public onlyOwner {
        payable(_receiver).transfer(address(this).balance);
    }

    function totalBuyFeePerTx(uint256 amount) public view returns (uint256) {
        uint256 fee = (amount * marketingFeeOnBuying) / percentDivider;
        return fee;
    }

    function totalSellFeePerTx(uint256 amount) public view returns (uint256) {
        uint256 fee = (amount * marketingFeeOnSelling) / percentDivider;
        return fee;
    }

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

    function _transfer(address from, address to, uint256 amount) private {
        require(from != address(0), "transfer from the zero address");
        require(to != address(0), "transfer to the zero address");
        require(amount > 0, "Amount must be greater than zero");
        if (!isExcludedFromMaxTxn[from] && !isExcludedFromMaxTxn[to]) {
            require(amount <= maxTxnLimit, " max txn limit exceeds");
            if (!trading) {
                require(dexPair != from && dexPair != to, ": trading is disable");
            }
        }

        if (!isExcludedFromMaxHolding[to]) {
            require((balanceOf(to) + amount) <= maxHoldLimit, ": max hold limit exceeds");
        }

        distributeAndLiquify(from, to);

        bool takeFee = true;
        if (isExcludedFromFee[from] || isExcludedFromFee[to] || !feesStatus) {
            takeFee = false;
        }

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

    function _tokenTransfer(address sender, address recipient, uint256 amount, bool takeFee) private {
        if (dexPair == sender && takeFee) {
            uint256 allFee;
            uint256 tTransferAmount;
            allFee = totalBuyFeePerTx(amount);
            tTransferAmount = amount - allFee;
            _balances[sender] = _balances[sender] - amount;
            _balances[recipient] = _balances[recipient] + tTransferAmount;
            emit Transfer(sender, recipient, tTransferAmount);
            takeTokenFee(sender, allFee);
        } else if (dexPair == recipient && takeFee) {
            uint256 allFee = totalSellFeePerTx(amount);
            uint256 tTransferAmount = amount - allFee;
            _balances[sender] = _balances[sender] - amount;
            _balances[recipient] = _balances[recipient] + tTransferAmount;
            emit Transfer(sender, recipient, tTransferAmount);
            takeTokenFee(sender, allFee);
        } else {
            _balances[sender] = _balances[sender] - amount;
            _balances[recipient] = _balances[recipient] + amount;
            emit Transfer(sender, recipient, amount);
        }
    }

    function takeTokenFee(address sender, uint256 amount) private {
    _balances[address(this)] = _balances[address(this)] + amount;
    emit Transfer(sender, address(this), amount);
    }

    function distributeAndLiquify(address from, address to) private {
    uint256 contractTokenBalance = balanceOf(address(this));
    bool shouldSell = contractTokenBalance >= minTokenToSwap;
    if (shouldSell && from != dexPair && distributeAndLiquifyStatus && !(from == address(this) && to == dexPair)) {
        _approve(address(this), address(dexRouter), minTokenToSwap);
        Utils.swapTokensForEth(address(dexRouter), minTokenToSwap);
        uint256 ethForFees = address(this).balance;
        if (ethForFees > 0) payable(feeReceiver).transfer(ethForFees); 
    }
}
}

library Utils {
    function swapTokensForEth(address routerAddress, uint256 tokenAmount) internal {
        IDexRouter dexRouter = IDexRouter(routerAddress);
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = dexRouter.WETH();
        dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount, 0, path, address(this), block.timestamp + 300);
    }
}

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":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","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":"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":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"dexPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dexRouter","outputs":[{"internalType":"contract IDexRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"distributeAndLiquifyStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_value","type":"bool"}],"name":"enableOrDisableFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feesStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"includeOrExcludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"includeOrExcludeFromMaxHolding","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"includeOrExcludeFromMaxTxn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromMaxHolding","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromMaxTxn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchedAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFeeOnBuying","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFeeOnSelling","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxHoldLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTxnLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minTokenToSwap","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":[],"name":"percentDivider","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_receiver","type":"address"}],"name":"removeStuckEth","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"}],"name":"setBuyFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_value","type":"bool"}],"name":"setDistributionStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setMaxHoldLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setMaxTxnLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setMinTokenToSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"}],"name":"setSellFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"totalBuyFeePerTx","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"totalSellFeePerTx","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"trading","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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"},{"stateMutability":"payable","type":"receive"}]

60806040526040518060400160405280600481526020017f446f756700000000000000000000000000000000000000000000000000000000815250600190816200004a919062000c3f565b506040518060400160405280600481526020017f444f5547000000000000000000000000000000000000000000000000000000008152506002908162000091919062000c3f565b506012600360006101000a81548160ff021916908360ff1602179055506c029cda63053997b13f980000006004556127106005600454620000d3919062000d55565b620000df919062000dcf565b600a5560646002600454620000f5919062000d55565b62000101919062000dcf565b600b556064600260045462000117919062000d55565b62000123919062000dcf565b600c556064600d55601e601255601e6013553480156200014257600080fd5b50620001536200099460201b60201c565b6000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360045460056000620002246200099c60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550620002726200099460201b60201c565b601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550737a250d5630b4cf539739df2c5dacb4c659f2488d600f60036101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160076000600f60039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160086000600f60039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160096000600f60039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600f60039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620004e3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000509919062000e71565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600f60039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000593573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005b9919062000e71565b6040518363ffffffff1660e01b8152600401620005d892919062000eb4565b6020604051808303816000875af1158015620005f8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200061e919062000e71565b601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160096000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000620006ee6200099c60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160086000620007ad6200099c60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600960006200086c6200099c60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620009256200099c60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60045460405162000986919062000ef2565b60405180910390a362000f0f565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000a4757607f821691505b60208210810362000a5d5762000a5c620009ff565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000ac77fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000a88565b62000ad3868362000a88565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000b2062000b1a62000b148462000aeb565b62000af5565b62000aeb565b9050919050565b6000819050919050565b62000b3c8362000aff565b62000b5462000b4b8262000b27565b84845462000a95565b825550505050565b600090565b62000b6b62000b5c565b62000b7881848462000b31565b505050565b5b8181101562000ba05762000b9460008262000b61565b60018101905062000b7e565b5050565b601f82111562000bef5762000bb98162000a63565b62000bc48462000a78565b8101602085101562000bd4578190505b62000bec62000be38562000a78565b83018262000b7d565b50505b505050565b600082821c905092915050565b600062000c146000198460080262000bf4565b1980831691505092915050565b600062000c2f838362000c01565b9150826002028217905092915050565b62000c4a82620009c5565b67ffffffffffffffff81111562000c665762000c65620009d0565b5b62000c72825462000a2e565b62000c7f82828562000ba4565b600060209050601f83116001811462000cb7576000841562000ca2578287015190505b62000cae858262000c21565b86555062000d1e565b601f19841662000cc78662000a63565b60005b8281101562000cf15784890151825560018201915060208501945060208101905062000cca565b8683101562000d11578489015162000d0d601f89168262000c01565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000d628262000aeb565b915062000d6f8362000aeb565b925082820262000d7f8162000aeb565b9150828204841483151762000d995762000d9862000d26565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000ddc8262000aeb565b915062000de98362000aeb565b92508262000dfc5762000dfb62000da0565b5b828204905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000e398262000e0c565b9050919050565b62000e4b8162000e2c565b811462000e5757600080fd5b50565b60008151905062000e6b8162000e40565b92915050565b60006020828403121562000e8a5762000e8962000e07565b5b600062000e9a8482850162000e5a565b91505092915050565b62000eae8162000e2c565b82525050565b600060408201905062000ecb600083018562000ea3565b62000eda602083018462000ea3565b9392505050565b62000eec8162000aeb565b82525050565b600060208201905062000f09600083018462000ee1565b92915050565b613b048062000f1f6000396000f3fe60806040526004361061026b5760003560e01c80638da5cb5b11610144578063b3f00674116100b6578063ed4214291161007a578063ed42142914610951578063f097ea1a1461098e578063f242ab41146109b7578063f2fde38b146109e2578063f4b3dbc314610a0b578063fe6f1b0514610a4857610272565b8063b3f006741461086a578063bf56b37114610895578063dd62ed3e146108c0578063ea5b9e85146108fd578063ec44acf21461092657610272565b80639b6a2750116101085780639b6a27501461074c578063a2b8a94714610775578063a457c2d71461079e578063a7c29b40146107db578063a9059cbb14610804578063b0bc2a2d1461084157610272565b80638da5cb5b14610665578063950eb5d51461069057806395d89b41146106b957806399b102b5146106e45780639a36dfa11461072157610272565b8063679a3c59116101dd5780637c6a9a9c116101a15780637c6a9a9c14610567578063844af78e1461059257806384ea21bc146105bd5780638756aabd146105fa578063879dd3c5146106235780638a8c523c1461064e57610272565b8063679a3c5914610494578063681aa362146104bd57806370a08231146104e8578063715018a61461052557806379777b4e1461053c57610272565b80631884f1e61161022f5780631884f1e61461035e57806323b872dd146103895780632d129390146103c6578063313ce567146103ef578063395093511461041a5780635342acb41461045757610272565b806306fdde03146102775780630758d924146102a2578063095ea7b3146102cd5780630a2d140c1461030a57806318160ddd1461033357610272565b3661027257005b600080fd5b34801561028357600080fd5b5061028c610a73565b6040516102999190612ebc565b60405180910390f35b3480156102ae57600080fd5b506102b7610b05565b6040516102c49190612f5d565b60405180910390f35b3480156102d957600080fd5b506102f460048036038101906102ef9190612ff1565b610b2b565b604051610301919061304c565b60405180910390f35b34801561031657600080fd5b50610331600480360381019061032c9190613093565b610b49565b005b34801561033f57600080fd5b50610348610bfb565b60405161035591906130cf565b60405180910390f35b34801561036a57600080fd5b50610373610c05565b60405161038091906130cf565b60405180910390f35b34801561039557600080fd5b506103b060048036038101906103ab91906130ea565b610c0b565b6040516103bd919061304c565b60405180910390f35b3480156103d257600080fd5b506103ed60048036038101906103e8919061313d565b610cc3565b005b3480156103fb57600080fd5b50610404610db3565b6040516104119190613199565b60405180910390f35b34801561042657600080fd5b50610441600480360381019061043c9190612ff1565b610dca565b60405161044e919061304c565b60405180910390f35b34801561046357600080fd5b5061047e600480360381019061047991906131b4565b610e76565b60405161048b919061304c565b60405180910390f35b3480156104a057600080fd5b506104bb60048036038101906104b691906131b4565b610e96565b005b3480156104c957600080fd5b506104d2610f75565b6040516104df91906130cf565b60405180910390f35b3480156104f457600080fd5b5061050f600480360381019061050a91906131b4565b610f7b565b60405161051c91906130cf565b60405180910390f35b34801561053157600080fd5b5061053a610fc4565b005b34801561054857600080fd5b50610551611117565b60405161055e919061304c565b60405180910390f35b34801561057357600080fd5b5061057c61112a565b60405161058991906130cf565b60405180910390f35b34801561059e57600080fd5b506105a7611130565b6040516105b491906130cf565b60405180910390f35b3480156105c957600080fd5b506105e460048036038101906105df91906131b4565b611136565b6040516105f1919061304c565b60405180910390f35b34801561060657600080fd5b50610621600480360381019061061c91906131e1565b611156565b005b34801561062f57600080fd5b50610638611208565b604051610645919061304c565b60405180910390f35b34801561065a57600080fd5b5061066361121b565b005b34801561067157600080fd5b5061067a61135a565b604051610687919061321d565b60405180910390f35b34801561069c57600080fd5b506106b760048036038101906106b291906131e1565b611383565b005b3480156106c557600080fd5b506106ce611422565b6040516106db9190612ebc565b60405180910390f35b3480156106f057600080fd5b5061070b600480360381019061070691906131b4565b6114b4565b604051610718919061304c565b60405180910390f35b34801561072d57600080fd5b506107366114d4565b60405161074391906130cf565b60405180910390f35b34801561075857600080fd5b50610773600480360381019061076e91906131e1565b6114da565b005b34801561078157600080fd5b5061079c600480360381019061079791906131e1565b61158c565b005b3480156107aa57600080fd5b506107c560048036038101906107c09190612ff1565b61162b565b6040516107d2919061304c565b60405180910390f35b3480156107e757600080fd5b5061080260048036038101906107fd919061313d565b6116d7565b005b34801561081057600080fd5b5061082b60048036038101906108269190612ff1565b6117c7565b604051610838919061304c565b60405180910390f35b34801561084d57600080fd5b5061086860048036038101906108639190613093565b6117e5565b005b34801561087657600080fd5b5061087f611897565b60405161088c919061321d565b60405180910390f35b3480156108a157600080fd5b506108aa6118bd565b6040516108b791906130cf565b60405180910390f35b3480156108cc57600080fd5b506108e760048036038101906108e29190613238565b6118c3565b6040516108f491906130cf565b60405180910390f35b34801561090957600080fd5b50610924600480360381019061091f919061313d565b61194a565b005b34801561093257600080fd5b5061093b611a3a565b604051610948919061304c565b60405180910390f35b34801561095d57600080fd5b50610978600480360381019061097391906131e1565b611a4d565b60405161098591906130cf565b60405180910390f35b34801561099a57600080fd5b506109b560048036038101906109b091906131e1565b611a76565b005b3480156109c357600080fd5b506109cc611b28565b6040516109d9919061321d565b60405180910390f35b3480156109ee57600080fd5b50610a096004803603810190610a0491906131b4565b611b4e565b005b348015610a1757600080fd5b50610a326004803603810190610a2d91906131e1565b611d0f565b604051610a3f91906130cf565b60405180910390f35b348015610a5457600080fd5b50610a5d611d38565b604051610a6a91906130cf565b60405180910390f35b606060018054610a82906132a7565b80601f0160208091040260200160405190810160405280929190818152602001828054610aae906132a7565b8015610afb5780601f10610ad057610100808354040283529160200191610afb565b820191906000526020600020905b815481529060010190602001808311610ade57829003601f168201915b5050505050905090565b600f60039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610b3f610b38611d3e565b8484611d46565b6001905092915050565b610b51611d3e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bde576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bd590613324565b60405180910390fd5b80600f60006101000a81548160ff02191690831515021790555050565b6000600454905090565b600a5481565b6000610c18848484611f0f565b610cb884610c24611d3e565b84600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610c6e611d3e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610cb39190613373565b611d46565b600190509392505050565b610ccb611d3e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4f90613324565b60405180910390fd5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600360009054906101000a900460ff16905090565b6000610e6c610dd7611d3e565b848460066000610de5611d3e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610e6791906133a7565b611d46565b6001905092915050565b60076020528060005260406000206000915054906101000a900460ff1681565b610e9e611d3e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2290613324565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015610f71573d6000803e3d6000fd5b5050565b600c5481565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610fcc611d3e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611059576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161105090613324565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600f60009054906101000a900460ff1681565b60125481565b60135481565b60096020528060005260406000206000915054906101000a900460ff1681565b61115e611d3e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111e290613324565b60405180910390fd5b670de0b6b3a7640000816111ff91906133db565b600b8190555050565b600f60019054906101000a900460ff1681565b611223611d3e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112a790613324565b60405180910390fd5b600f60029054906101000a900460ff1615611300576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112f790613469565b60405180910390fd5b6001600f60026101000a81548160ff0219169083151502179055506001600f60016101000a81548160ff0219169083151502179055506001600f60006101000a81548160ff02191690831515021790555042600e81905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61138b611d3e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611418576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140f90613324565b60405180910390fd5b8060128190555050565b606060028054611431906132a7565b80601f016020809104026020016040519081016040528092919081815260200182805461145d906132a7565b80156114aa5780601f1061147f576101008083540402835291602001916114aa565b820191906000526020600020905b81548152906001019060200180831161148d57829003601f168201915b5050505050905090565b60086020528060005260406000206000915054906101000a900460ff1681565b600b5481565b6114e2611d3e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461156f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156690613324565b60405180910390fd5b670de0b6b3a76400008161158391906133db565b600c8190555050565b611594611d3e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611621576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161161890613324565b60405180910390fd5b8060138190555050565b60006116cd611638611d3e565b848460066000611646611d3e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546116c89190613373565b611d46565b6001905092915050565b6116df611d3e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461176c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176390613324565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60006117db6117d4611d3e565b8484611f0f565b6001905092915050565b6117ed611d3e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461187a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161187190613324565b60405180910390fd5b80600f60016101000a81548160ff02191690831515021790555050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600e5481565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611952611d3e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119d690613324565b60405180910390fd5b80600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600f60029054906101000a900460ff1681565b600080600d5460125484611a6191906133db565b611a6b91906134b8565b905080915050919050565b611a7e611d3e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b0290613324565b60405180910390fd5b670de0b6b3a764000081611b1f91906133db565b600a8190555050565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611b56611d3e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611be3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bda90613324565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611c52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c499061355b565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600080600d5460135484611d2391906133db565b611d2d91906134b8565b905080915050919050565b600d5481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611db5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dac906135c7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611e24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e1b90613633565b60405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611f0291906130cf565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611f7e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f759061369f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611fed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fe49061370b565b60405180910390fd5b60008111612030576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161202790613777565b60405180910390fd5b600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156120d45750600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561221f57600c5481111561211e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612115906137e3565b60405180910390fd5b600f60029054906101000a900460ff1661221e578273ffffffffffffffffffffffffffffffffffffffff16601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141580156121de57508173ffffffffffffffffffffffffffffffffffffffff16601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b61221d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122149061384f565b60405180910390fd5b5b5b600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166122c957600b548161227d84610f7b565b61228791906133a7565b11156122c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122bf906138bb565b60405180910390fd5b5b6122d383836123ae565b600060019050600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061237a5750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806123925750600f60019054906101000a900460ff16155b1561239c57600090505b6123a8848484846125ab565b50505050565b60006123b930610f7b565b90506000600a5482101590508080156124205750601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b80156124385750600f60009054906101000a900460ff165b80156124c957503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156124c75750601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b155b156125a5576124fd30600f60039054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600a54611d46565b61252b600f60039054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600a54612b4f565b600047905060008111156125a357601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156125a1573d6000803e3d6000fd5b505b505b50505050565b8373ffffffffffffffffffffffffffffffffffffffff16601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480156126055750805b156127b85760008061261684611a4d565b915081846126249190613373565b905083600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126719190613373565b600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126ff91906133a7565b600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161279f91906130cf565b60405180910390a36127b18683612d35565b5050612b49565b8273ffffffffffffffffffffffffffffffffffffffff16601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480156128125750805b156129c657600061282283611d0f565b9050600081846128329190613373565b905083600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461287f9190613373565b600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461290d91906133a7565b600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516129ad91906130cf565b60405180910390a36129bf8683612d35565b5050612b48565b81600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a119190613373565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a9f91906133a7565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612b3f91906130cf565b60405180910390a35b5b50505050565b60008290506000600267ffffffffffffffff811115612b7157612b706138db565b5b604051908082528060200260200182016040528015612b9f5781602001602082028036833780820191505090505b5090503081600081518110612bb757612bb661390a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508173ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612c3c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c60919061394e565b81600181518110612c7457612c7361390a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508173ffffffffffffffffffffffffffffffffffffffff1663791ac947846000843061012c42612cdd91906133a7565b6040518663ffffffff1660e01b8152600401612cfd959493929190613a74565b600060405180830381600087803b158015612d1757600080fd5b505af1158015612d2b573d6000803e3d6000fd5b5050505050505050565b80600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d8091906133a7565b600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612e2091906130cf565b60405180910390a35050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612e66578082015181840152602081019050612e4b565b60008484015250505050565b6000601f19601f8301169050919050565b6000612e8e82612e2c565b612e988185612e37565b9350612ea8818560208601612e48565b612eb181612e72565b840191505092915050565b60006020820190508181036000830152612ed68184612e83565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000612f23612f1e612f1984612ede565b612efe565b612ede565b9050919050565b6000612f3582612f08565b9050919050565b6000612f4782612f2a565b9050919050565b612f5781612f3c565b82525050565b6000602082019050612f726000830184612f4e565b92915050565b600080fd5b6000612f8882612ede565b9050919050565b612f9881612f7d565b8114612fa357600080fd5b50565b600081359050612fb581612f8f565b92915050565b6000819050919050565b612fce81612fbb565b8114612fd957600080fd5b50565b600081359050612feb81612fc5565b92915050565b6000806040838503121561300857613007612f78565b5b600061301685828601612fa6565b925050602061302785828601612fdc565b9150509250929050565b60008115159050919050565b61304681613031565b82525050565b6000602082019050613061600083018461303d565b92915050565b61307081613031565b811461307b57600080fd5b50565b60008135905061308d81613067565b92915050565b6000602082840312156130a9576130a8612f78565b5b60006130b78482850161307e565b91505092915050565b6130c981612fbb565b82525050565b60006020820190506130e460008301846130c0565b92915050565b60008060006060848603121561310357613102612f78565b5b600061311186828701612fa6565b935050602061312286828701612fa6565b925050604061313386828701612fdc565b9150509250925092565b6000806040838503121561315457613153612f78565b5b600061316285828601612fa6565b92505060206131738582860161307e565b9150509250929050565b600060ff82169050919050565b6131938161317d565b82525050565b60006020820190506131ae600083018461318a565b92915050565b6000602082840312156131ca576131c9612f78565b5b60006131d884828501612fa6565b91505092915050565b6000602082840312156131f7576131f6612f78565b5b600061320584828501612fdc565b91505092915050565b61321781612f7d565b82525050565b6000602082019050613232600083018461320e565b92915050565b6000806040838503121561324f5761324e612f78565b5b600061325d85828601612fa6565b925050602061326e85828601612fa6565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806132bf57607f821691505b6020821081036132d2576132d1613278565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061330e602083612e37565b9150613319826132d8565b602082019050919050565b6000602082019050818103600083015261333d81613301565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061337e82612fbb565b915061338983612fbb565b92508282039050818111156133a1576133a0613344565b5b92915050565b60006133b282612fbb565b91506133bd83612fbb565b92508282019050808211156133d5576133d4613344565b5b92915050565b60006133e682612fbb565b91506133f183612fbb565b92508282026133ff81612fbb565b9150828204841483151761341657613415613344565b5b5092915050565b7f3a20616c726561647920656e61626c6564000000000000000000000000000000600082015250565b6000613453601183612e37565b915061345e8261341d565b602082019050919050565b6000602082019050818103600083015261348281613446565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006134c382612fbb565b91506134ce83612fbb565b9250826134de576134dd613489565b5b828204905092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613545602683612e37565b9150613550826134e9565b604082019050919050565b6000602082019050818103600083015261357481613538565b9050919050565b7f20617070726f76652066726f6d20746865207a65726f20616464726573730000600082015250565b60006135b1601e83612e37565b91506135bc8261357b565b602082019050919050565b600060208201905081810360008301526135e0816135a4565b9050919050565b7f617070726f766520746f20746865207a65726f20616464726573730000000000600082015250565b600061361d601b83612e37565b9150613628826135e7565b602082019050919050565b6000602082019050818103600083015261364c81613610565b9050919050565b7f7472616e736665722066726f6d20746865207a65726f20616464726573730000600082015250565b6000613689601e83612e37565b915061369482613653565b602082019050919050565b600060208201905081810360008301526136b88161367c565b9050919050565b7f7472616e7366657220746f20746865207a65726f206164647265737300000000600082015250565b60006136f5601c83612e37565b9150613700826136bf565b602082019050919050565b60006020820190508181036000830152613724816136e8565b9050919050565b7f416d6f756e74206d7573742062652067726561746572207468616e207a65726f600082015250565b6000613761602083612e37565b915061376c8261372b565b602082019050919050565b6000602082019050818103600083015261379081613754565b9050919050565b7f206d61782074786e206c696d6974206578636565647300000000000000000000600082015250565b60006137cd601683612e37565b91506137d882613797565b602082019050919050565b600060208201905081810360008301526137fc816137c0565b9050919050565b7f3a2074726164696e672069732064697361626c65000000000000000000000000600082015250565b6000613839601483612e37565b915061384482613803565b602082019050919050565b600060208201905081810360008301526138688161382c565b9050919050565b7f3a206d617820686f6c64206c696d697420657863656564730000000000000000600082015250565b60006138a5601883612e37565b91506138b08261386f565b602082019050919050565b600060208201905081810360008301526138d481613898565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008151905061394881612f8f565b92915050565b60006020828403121561396457613963612f78565b5b600061397284828501613939565b91505092915050565b6000819050919050565b60006139a061399b6139968461397b565b612efe565b612fbb565b9050919050565b6139b081613985565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6139eb81612f7d565b82525050565b60006139fd83836139e2565b60208301905092915050565b6000602082019050919050565b6000613a21826139b6565b613a2b81856139c1565b9350613a36836139d2565b8060005b83811015613a67578151613a4e88826139f1565b9750613a5983613a09565b925050600181019050613a3a565b5085935050505092915050565b600060a082019050613a8960008301886130c0565b613a9660208301876139a7565b8181036040830152613aa88186613a16565b9050613ab7606083018561320e565b613ac460808301846130c0565b969550505050505056fea2646970667358221220ce7c1cac46e5611d88332ad9ebe42980c30f8458a7eee05e7291799a5963874764736f6c63430008120033

Deployed Bytecode

0x60806040526004361061026b5760003560e01c80638da5cb5b11610144578063b3f00674116100b6578063ed4214291161007a578063ed42142914610951578063f097ea1a1461098e578063f242ab41146109b7578063f2fde38b146109e2578063f4b3dbc314610a0b578063fe6f1b0514610a4857610272565b8063b3f006741461086a578063bf56b37114610895578063dd62ed3e146108c0578063ea5b9e85146108fd578063ec44acf21461092657610272565b80639b6a2750116101085780639b6a27501461074c578063a2b8a94714610775578063a457c2d71461079e578063a7c29b40146107db578063a9059cbb14610804578063b0bc2a2d1461084157610272565b80638da5cb5b14610665578063950eb5d51461069057806395d89b41146106b957806399b102b5146106e45780639a36dfa11461072157610272565b8063679a3c59116101dd5780637c6a9a9c116101a15780637c6a9a9c14610567578063844af78e1461059257806384ea21bc146105bd5780638756aabd146105fa578063879dd3c5146106235780638a8c523c1461064e57610272565b8063679a3c5914610494578063681aa362146104bd57806370a08231146104e8578063715018a61461052557806379777b4e1461053c57610272565b80631884f1e61161022f5780631884f1e61461035e57806323b872dd146103895780632d129390146103c6578063313ce567146103ef578063395093511461041a5780635342acb41461045757610272565b806306fdde03146102775780630758d924146102a2578063095ea7b3146102cd5780630a2d140c1461030a57806318160ddd1461033357610272565b3661027257005b600080fd5b34801561028357600080fd5b5061028c610a73565b6040516102999190612ebc565b60405180910390f35b3480156102ae57600080fd5b506102b7610b05565b6040516102c49190612f5d565b60405180910390f35b3480156102d957600080fd5b506102f460048036038101906102ef9190612ff1565b610b2b565b604051610301919061304c565b60405180910390f35b34801561031657600080fd5b50610331600480360381019061032c9190613093565b610b49565b005b34801561033f57600080fd5b50610348610bfb565b60405161035591906130cf565b60405180910390f35b34801561036a57600080fd5b50610373610c05565b60405161038091906130cf565b60405180910390f35b34801561039557600080fd5b506103b060048036038101906103ab91906130ea565b610c0b565b6040516103bd919061304c565b60405180910390f35b3480156103d257600080fd5b506103ed60048036038101906103e8919061313d565b610cc3565b005b3480156103fb57600080fd5b50610404610db3565b6040516104119190613199565b60405180910390f35b34801561042657600080fd5b50610441600480360381019061043c9190612ff1565b610dca565b60405161044e919061304c565b60405180910390f35b34801561046357600080fd5b5061047e600480360381019061047991906131b4565b610e76565b60405161048b919061304c565b60405180910390f35b3480156104a057600080fd5b506104bb60048036038101906104b691906131b4565b610e96565b005b3480156104c957600080fd5b506104d2610f75565b6040516104df91906130cf565b60405180910390f35b3480156104f457600080fd5b5061050f600480360381019061050a91906131b4565b610f7b565b60405161051c91906130cf565b60405180910390f35b34801561053157600080fd5b5061053a610fc4565b005b34801561054857600080fd5b50610551611117565b60405161055e919061304c565b60405180910390f35b34801561057357600080fd5b5061057c61112a565b60405161058991906130cf565b60405180910390f35b34801561059e57600080fd5b506105a7611130565b6040516105b491906130cf565b60405180910390f35b3480156105c957600080fd5b506105e460048036038101906105df91906131b4565b611136565b6040516105f1919061304c565b60405180910390f35b34801561060657600080fd5b50610621600480360381019061061c91906131e1565b611156565b005b34801561062f57600080fd5b50610638611208565b604051610645919061304c565b60405180910390f35b34801561065a57600080fd5b5061066361121b565b005b34801561067157600080fd5b5061067a61135a565b604051610687919061321d565b60405180910390f35b34801561069c57600080fd5b506106b760048036038101906106b291906131e1565b611383565b005b3480156106c557600080fd5b506106ce611422565b6040516106db9190612ebc565b60405180910390f35b3480156106f057600080fd5b5061070b600480360381019061070691906131b4565b6114b4565b604051610718919061304c565b60405180910390f35b34801561072d57600080fd5b506107366114d4565b60405161074391906130cf565b60405180910390f35b34801561075857600080fd5b50610773600480360381019061076e91906131e1565b6114da565b005b34801561078157600080fd5b5061079c600480360381019061079791906131e1565b61158c565b005b3480156107aa57600080fd5b506107c560048036038101906107c09190612ff1565b61162b565b6040516107d2919061304c565b60405180910390f35b3480156107e757600080fd5b5061080260048036038101906107fd919061313d565b6116d7565b005b34801561081057600080fd5b5061082b60048036038101906108269190612ff1565b6117c7565b604051610838919061304c565b60405180910390f35b34801561084d57600080fd5b5061086860048036038101906108639190613093565b6117e5565b005b34801561087657600080fd5b5061087f611897565b60405161088c919061321d565b60405180910390f35b3480156108a157600080fd5b506108aa6118bd565b6040516108b791906130cf565b60405180910390f35b3480156108cc57600080fd5b506108e760048036038101906108e29190613238565b6118c3565b6040516108f491906130cf565b60405180910390f35b34801561090957600080fd5b50610924600480360381019061091f919061313d565b61194a565b005b34801561093257600080fd5b5061093b611a3a565b604051610948919061304c565b60405180910390f35b34801561095d57600080fd5b50610978600480360381019061097391906131e1565b611a4d565b60405161098591906130cf565b60405180910390f35b34801561099a57600080fd5b506109b560048036038101906109b091906131e1565b611a76565b005b3480156109c357600080fd5b506109cc611b28565b6040516109d9919061321d565b60405180910390f35b3480156109ee57600080fd5b50610a096004803603810190610a0491906131b4565b611b4e565b005b348015610a1757600080fd5b50610a326004803603810190610a2d91906131e1565b611d0f565b604051610a3f91906130cf565b60405180910390f35b348015610a5457600080fd5b50610a5d611d38565b604051610a6a91906130cf565b60405180910390f35b606060018054610a82906132a7565b80601f0160208091040260200160405190810160405280929190818152602001828054610aae906132a7565b8015610afb5780601f10610ad057610100808354040283529160200191610afb565b820191906000526020600020905b815481529060010190602001808311610ade57829003601f168201915b5050505050905090565b600f60039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610b3f610b38611d3e565b8484611d46565b6001905092915050565b610b51611d3e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bde576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bd590613324565b60405180910390fd5b80600f60006101000a81548160ff02191690831515021790555050565b6000600454905090565b600a5481565b6000610c18848484611f0f565b610cb884610c24611d3e565b84600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610c6e611d3e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610cb39190613373565b611d46565b600190509392505050565b610ccb611d3e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4f90613324565b60405180910390fd5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600360009054906101000a900460ff16905090565b6000610e6c610dd7611d3e565b848460066000610de5611d3e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610e6791906133a7565b611d46565b6001905092915050565b60076020528060005260406000206000915054906101000a900460ff1681565b610e9e611d3e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2290613324565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015610f71573d6000803e3d6000fd5b5050565b600c5481565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610fcc611d3e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611059576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161105090613324565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600f60009054906101000a900460ff1681565b60125481565b60135481565b60096020528060005260406000206000915054906101000a900460ff1681565b61115e611d3e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111e290613324565b60405180910390fd5b670de0b6b3a7640000816111ff91906133db565b600b8190555050565b600f60019054906101000a900460ff1681565b611223611d3e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112a790613324565b60405180910390fd5b600f60029054906101000a900460ff1615611300576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112f790613469565b60405180910390fd5b6001600f60026101000a81548160ff0219169083151502179055506001600f60016101000a81548160ff0219169083151502179055506001600f60006101000a81548160ff02191690831515021790555042600e81905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61138b611d3e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611418576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140f90613324565b60405180910390fd5b8060128190555050565b606060028054611431906132a7565b80601f016020809104026020016040519081016040528092919081815260200182805461145d906132a7565b80156114aa5780601f1061147f576101008083540402835291602001916114aa565b820191906000526020600020905b81548152906001019060200180831161148d57829003601f168201915b5050505050905090565b60086020528060005260406000206000915054906101000a900460ff1681565b600b5481565b6114e2611d3e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461156f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156690613324565b60405180910390fd5b670de0b6b3a76400008161158391906133db565b600c8190555050565b611594611d3e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611621576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161161890613324565b60405180910390fd5b8060138190555050565b60006116cd611638611d3e565b848460066000611646611d3e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546116c89190613373565b611d46565b6001905092915050565b6116df611d3e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461176c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176390613324565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60006117db6117d4611d3e565b8484611f0f565b6001905092915050565b6117ed611d3e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461187a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161187190613324565b60405180910390fd5b80600f60016101000a81548160ff02191690831515021790555050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600e5481565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611952611d3e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119d690613324565b60405180910390fd5b80600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600f60029054906101000a900460ff1681565b600080600d5460125484611a6191906133db565b611a6b91906134b8565b905080915050919050565b611a7e611d3e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b0290613324565b60405180910390fd5b670de0b6b3a764000081611b1f91906133db565b600a8190555050565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611b56611d3e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611be3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bda90613324565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611c52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c499061355b565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600080600d5460135484611d2391906133db565b611d2d91906134b8565b905080915050919050565b600d5481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611db5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dac906135c7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611e24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e1b90613633565b60405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611f0291906130cf565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611f7e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f759061369f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611fed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fe49061370b565b60405180910390fd5b60008111612030576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161202790613777565b60405180910390fd5b600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156120d45750600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561221f57600c5481111561211e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612115906137e3565b60405180910390fd5b600f60029054906101000a900460ff1661221e578273ffffffffffffffffffffffffffffffffffffffff16601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141580156121de57508173ffffffffffffffffffffffffffffffffffffffff16601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b61221d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122149061384f565b60405180910390fd5b5b5b600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166122c957600b548161227d84610f7b565b61228791906133a7565b11156122c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122bf906138bb565b60405180910390fd5b5b6122d383836123ae565b600060019050600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061237a5750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806123925750600f60019054906101000a900460ff16155b1561239c57600090505b6123a8848484846125ab565b50505050565b60006123b930610f7b565b90506000600a5482101590508080156124205750601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b80156124385750600f60009054906101000a900460ff165b80156124c957503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156124c75750601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b155b156125a5576124fd30600f60039054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600a54611d46565b61252b600f60039054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600a54612b4f565b600047905060008111156125a357601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156125a1573d6000803e3d6000fd5b505b505b50505050565b8373ffffffffffffffffffffffffffffffffffffffff16601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480156126055750805b156127b85760008061261684611a4d565b915081846126249190613373565b905083600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126719190613373565b600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126ff91906133a7565b600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161279f91906130cf565b60405180910390a36127b18683612d35565b5050612b49565b8273ffffffffffffffffffffffffffffffffffffffff16601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480156128125750805b156129c657600061282283611d0f565b9050600081846128329190613373565b905083600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461287f9190613373565b600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461290d91906133a7565b600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516129ad91906130cf565b60405180910390a36129bf8683612d35565b5050612b48565b81600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a119190613373565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a9f91906133a7565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612b3f91906130cf565b60405180910390a35b5b50505050565b60008290506000600267ffffffffffffffff811115612b7157612b706138db565b5b604051908082528060200260200182016040528015612b9f5781602001602082028036833780820191505090505b5090503081600081518110612bb757612bb661390a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508173ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612c3c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c60919061394e565b81600181518110612c7457612c7361390a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508173ffffffffffffffffffffffffffffffffffffffff1663791ac947846000843061012c42612cdd91906133a7565b6040518663ffffffff1660e01b8152600401612cfd959493929190613a74565b600060405180830381600087803b158015612d1757600080fd5b505af1158015612d2b573d6000803e3d6000fd5b5050505050505050565b80600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d8091906133a7565b600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612e2091906130cf565b60405180910390a35050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612e66578082015181840152602081019050612e4b565b60008484015250505050565b6000601f19601f8301169050919050565b6000612e8e82612e2c565b612e988185612e37565b9350612ea8818560208601612e48565b612eb181612e72565b840191505092915050565b60006020820190508181036000830152612ed68184612e83565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000612f23612f1e612f1984612ede565b612efe565b612ede565b9050919050565b6000612f3582612f08565b9050919050565b6000612f4782612f2a565b9050919050565b612f5781612f3c565b82525050565b6000602082019050612f726000830184612f4e565b92915050565b600080fd5b6000612f8882612ede565b9050919050565b612f9881612f7d565b8114612fa357600080fd5b50565b600081359050612fb581612f8f565b92915050565b6000819050919050565b612fce81612fbb565b8114612fd957600080fd5b50565b600081359050612feb81612fc5565b92915050565b6000806040838503121561300857613007612f78565b5b600061301685828601612fa6565b925050602061302785828601612fdc565b9150509250929050565b60008115159050919050565b61304681613031565b82525050565b6000602082019050613061600083018461303d565b92915050565b61307081613031565b811461307b57600080fd5b50565b60008135905061308d81613067565b92915050565b6000602082840312156130a9576130a8612f78565b5b60006130b78482850161307e565b91505092915050565b6130c981612fbb565b82525050565b60006020820190506130e460008301846130c0565b92915050565b60008060006060848603121561310357613102612f78565b5b600061311186828701612fa6565b935050602061312286828701612fa6565b925050604061313386828701612fdc565b9150509250925092565b6000806040838503121561315457613153612f78565b5b600061316285828601612fa6565b92505060206131738582860161307e565b9150509250929050565b600060ff82169050919050565b6131938161317d565b82525050565b60006020820190506131ae600083018461318a565b92915050565b6000602082840312156131ca576131c9612f78565b5b60006131d884828501612fa6565b91505092915050565b6000602082840312156131f7576131f6612f78565b5b600061320584828501612fdc565b91505092915050565b61321781612f7d565b82525050565b6000602082019050613232600083018461320e565b92915050565b6000806040838503121561324f5761324e612f78565b5b600061325d85828601612fa6565b925050602061326e85828601612fa6565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806132bf57607f821691505b6020821081036132d2576132d1613278565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061330e602083612e37565b9150613319826132d8565b602082019050919050565b6000602082019050818103600083015261333d81613301565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061337e82612fbb565b915061338983612fbb565b92508282039050818111156133a1576133a0613344565b5b92915050565b60006133b282612fbb565b91506133bd83612fbb565b92508282019050808211156133d5576133d4613344565b5b92915050565b60006133e682612fbb565b91506133f183612fbb565b92508282026133ff81612fbb565b9150828204841483151761341657613415613344565b5b5092915050565b7f3a20616c726561647920656e61626c6564000000000000000000000000000000600082015250565b6000613453601183612e37565b915061345e8261341d565b602082019050919050565b6000602082019050818103600083015261348281613446565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006134c382612fbb565b91506134ce83612fbb565b9250826134de576134dd613489565b5b828204905092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613545602683612e37565b9150613550826134e9565b604082019050919050565b6000602082019050818103600083015261357481613538565b9050919050565b7f20617070726f76652066726f6d20746865207a65726f20616464726573730000600082015250565b60006135b1601e83612e37565b91506135bc8261357b565b602082019050919050565b600060208201905081810360008301526135e0816135a4565b9050919050565b7f617070726f766520746f20746865207a65726f20616464726573730000000000600082015250565b600061361d601b83612e37565b9150613628826135e7565b602082019050919050565b6000602082019050818103600083015261364c81613610565b9050919050565b7f7472616e736665722066726f6d20746865207a65726f20616464726573730000600082015250565b6000613689601e83612e37565b915061369482613653565b602082019050919050565b600060208201905081810360008301526136b88161367c565b9050919050565b7f7472616e7366657220746f20746865207a65726f206164647265737300000000600082015250565b60006136f5601c83612e37565b9150613700826136bf565b602082019050919050565b60006020820190508181036000830152613724816136e8565b9050919050565b7f416d6f756e74206d7573742062652067726561746572207468616e207a65726f600082015250565b6000613761602083612e37565b915061376c8261372b565b602082019050919050565b6000602082019050818103600083015261379081613754565b9050919050565b7f206d61782074786e206c696d6974206578636565647300000000000000000000600082015250565b60006137cd601683612e37565b91506137d882613797565b602082019050919050565b600060208201905081810360008301526137fc816137c0565b9050919050565b7f3a2074726164696e672069732064697361626c65000000000000000000000000600082015250565b6000613839601483612e37565b915061384482613803565b602082019050919050565b600060208201905081810360008301526138688161382c565b9050919050565b7f3a206d617820686f6c64206c696d697420657863656564730000000000000000600082015250565b60006138a5601883612e37565b91506138b08261386f565b602082019050919050565b600060208201905081810360008301526138d481613898565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008151905061394881612f8f565b92915050565b60006020828403121561396457613963612f78565b5b600061397284828501613939565b91505092915050565b6000819050919050565b60006139a061399b6139968461397b565b612efe565b612fbb565b9050919050565b6139b081613985565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6139eb81612f7d565b82525050565b60006139fd83836139e2565b60208301905092915050565b6000602082019050919050565b6000613a21826139b6565b613a2b81856139c1565b9350613a36836139d2565b8060005b83811015613a67578151613a4e88826139f1565b9750613a5983613a09565b925050600181019050613a3a565b5085935050505092915050565b600060a082019050613a8960008301886130c0565b613a9660208301876139a7565b8181036040830152613aa88186613a16565b9050613ab7606083018561320e565b613ac460808301846130c0565b969550505050505056fea2646970667358221220ce7c1cac46e5611d88332ad9ebe42980c30f8458a7eee05e7291799a5963874764736f6c63430008120033

Deployed Bytecode Sourcemap

2825:9170:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4942:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3727:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5780:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7742:115;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5219:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3354:60;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5949:266;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6969:148;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5128:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6223:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3174:49;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8217:129;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3486:55;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5327:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2409:157;;;;;;;;;;;;;:::i;:::-;;3625:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3826:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3873:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3289:56;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7246:109;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3670:22;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7972:237;;;;;;;;;;;;;:::i;:::-;;2195:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7478:123;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5033:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3230:52;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3422:56;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7363:107;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7609:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6446:225;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6821:140;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5454:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7865:99;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3790:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3591:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5629:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6679:134;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3699:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8354:174;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7125:113;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3761:22;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2574:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8536:176;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3549:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4942:83;4979:13;5012:5;5005:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4942:83;:::o;3727:27::-;;;;;;;;;;;;;:::o;5780:161::-;5855:4;5872:39;5881:12;:10;:12::i;:::-;5895:7;5904:6;5872:8;:39::i;:::-;5929:4;5922:11;;5780:161;;;;:::o;7742:115::-;2332:12;:10;:12::i;:::-;2322:22;;:6;;;;;;;;;;:22;;;2314:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;7843:6:::1;7814:26;;:35;;;;;;;;;;;;;;;;;;7742:115:::0;:::o;5219:100::-;5272:7;5299:12;;5292:19;;5219:100;:::o;3354:60::-;;;;:::o;5949:266::-;6047:4;6064:36;6074:6;6082:9;6093:6;6064:9;:36::i;:::-;6111:74;6120:6;6128:12;:10;:12::i;:::-;6178:6;6142:11;:19;6154:6;6142:19;;;;;;;;;;;;;;;:33;6162:12;:10;:12::i;:::-;6142:33;;;;;;;;;;;;;;;;:42;;;;:::i;:::-;6111:8;:74::i;:::-;6203:4;6196:11;;5949:266;;;;;:::o;6969:148::-;2332:12;:10;:12::i;:::-;2322:22;;:6;;;;;;;;;;:22;;;2314:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;7104:5:::1;7068:24;:33;7093:7;7068:33;;;;;;;;;;;;;;;;:41;;;;;;;;;;;;;;;;;;6969:148:::0;;:::o;5128:83::-;5169:5;5194:9;;;;;;;;;;;5187:16;;5128:83;:::o;6223:215::-;6311:4;6328:80;6337:12;:10;:12::i;:::-;6351:7;6397:10;6360:11;:25;6372:12;:10;:12::i;:::-;6360:25;;;;;;;;;;;;;;;:34;6386:7;6360:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;6328:8;:80::i;:::-;6426:4;6419:11;;6223:215;;;;:::o;3174:49::-;;;;;;;;;;;;;;;;;;;;;;:::o;8217:129::-;2332:12;:10;:12::i;:::-;2322:22;;:6;;;;;;;;;;:22;;;2314:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;8296:9:::1;8288:27;;:50;8316:21;8288:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;8217:129:::0;:::o;3486:55::-;;;;:::o;5327:119::-;5393:7;5420:9;:18;5430:7;5420:18;;;;;;;;;;;;;;;;5413:25;;5327:119;;;:::o;2409:157::-;2332:12;:10;:12::i;:::-;2322:22;;:6;;;;;;;;;;:22;;;2314:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2516:1:::1;2479:40;;2500:6;::::0;::::1;;;;;;;;2479:40;;;;;;;;;;;;2555:1;2530:6:::0;::::1;:28;;;;;;;;;;;;;;;;;;2409:157::o:0;3625:38::-;;;;;;;;;;;;;:::o;3826:40::-;;;;:::o;3873:41::-;;;;:::o;3289:56::-;;;;;;;;;;;;;;;;;;;;;;:::o;7246:109::-;2332:12;:10;:12::i;:::-;2322:22;;:6;;;;;;;;;;:22;;;2314:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;7343:4:::1;7333:7;:14;;;;:::i;:::-;7318:12;:29;;;;7246:109:::0;:::o;3670:22::-;;;;;;;;;;;;;:::o;7972:237::-;2332:12;:10;:12::i;:::-;2322:22;;:6;;;;;;;;;;:22;;;2314:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;8036:7:::1;;;;;;;;;;;8035:8;8027:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;8086:4;8076:7;;:14;;;;;;;;;;;;;;;;;;8114:4;8101:10;;:17;;;;;;;;;;;;;;;;;;8158:4;8129:26;;:33;;;;;;;;;;;;;;;;;;8186:15;8173:10;:28;;;;7972:237::o:0;2195:79::-;2233:7;2260:6;;;;;;;;;;;2253:13;;2195:79;:::o;7478:123::-;2332:12;:10;:12::i;:::-;2322:22;;:6;;;;;;;;;;:22;;;2314:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;7580:13:::1;7557:20;:36;;;;7478:123:::0;:::o;5033:87::-;5072:13;5105:7;5098:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5033:87;:::o;3230:52::-;;;;;;;;;;;;;;;;;;;;;;:::o;3422:56::-;;;;:::o;7363:107::-;2332:12;:10;:12::i;:::-;2322:22;;:6;;;;;;;;;;:22;;;2314:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;7458:4:::1;7448:7;:14;;;;:::i;:::-;7434:11;:28;;;;7363:107:::0;:::o;7609:125::-;2332:12;:10;:12::i;:::-;2322:22;;:6;;;;;;;;;;:22;;;2314:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;7713:13:::1;7689:21;:37;;;;7609:125:::0;:::o;6446:225::-;6539:4;6556:85;6565:12;:10;:12::i;:::-;6579:7;6625:15;6588:11;:25;6600:12;:10;:12::i;:::-;6588:25;;;;;;;;;;;;;;;:34;6614:7;6588:34;;;;;;;;;;;;;;;;:52;;;;:::i;:::-;6556:8;:85::i;:::-;6659:4;6652:11;;6446:225;;;;:::o;6821:140::-;2332:12;:10;:12::i;:::-;2322:22;;:6;;;;;;;;;;:22;;;2314:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6948:5:::1;6916:20;:29;6937:7;6916:29;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;6821:140:::0;;:::o;5454:167::-;5532:4;5549:42;5559:12;:10;:12::i;:::-;5573:9;5584:6;5549:9;:42::i;:::-;5609:4;5602:11;;5454:167;;;;:::o;7865:99::-;2332:12;:10;:12::i;:::-;2322:22;;:6;;;;;;;;;;:22;;;2314:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;7950:6:::1;7937:10;;:19;;;;;;;;;;;;;;;;;;7865:99:::0;:::o;3790:26::-;;;;;;;;;;;;;:::o;3591:25::-;;;;:::o;5629:143::-;5710:7;5737:11;:18;5749:5;5737:18;;;;;;;;;;;;;;;:27;5756:7;5737:27;;;;;;;;;;;;;;;;5730:34;;5629:143;;;;:::o;6679:134::-;2332:12;:10;:12::i;:::-;2322:22;;:6;;;;;;;;;;:22;;;2314:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6800:5:::1;6771:17;:26;6789:7;6771:26;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;6679:134:::0;;:::o;3699:19::-;;;;;;;;;;;;;:::o;8354:174::-;8417:7;8437:11;8485:14;;8461:20;;8452:6;:29;;;;:::i;:::-;8451:48;;;;:::i;:::-;8437:62;;8517:3;8510:10;;;8354:174;;;:::o;7125:113::-;2332:12;:10;:12::i;:::-;2322:22;;:6;;;;;;;;;;:22;;;2314:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;7226:4:::1;7216:7;:14;;;;:::i;:::-;7199;:31;;;;7125:113:::0;:::o;3761:22::-;;;;;;;;;;;;;:::o;2574:244::-;2332:12;:10;:12::i;:::-;2322:22;;:6;;;;;;;;;;:22;;;2314:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2683:1:::1;2663:22;;:8;:22;;::::0;2655:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;2773:8;2744:38;;2765:6;::::0;::::1;;;;;;;;2744:38;;;;;;;;;;;;2802:8;2793:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;2574:244:::0;:::o;8536:176::-;8600:7;8620:11;8669:14;;8644:21;;8635:6;:30;;;;:::i;:::-;8634:49;;;;:::i;:::-;8620:63;;8701:3;8694:10;;;8536:176;;;:::o;3549:35::-;;;;:::o;1677:115::-;1730:15;1773:10;1758:26;;1677:115;:::o;8720:322::-;8830:1;8813:19;;:5;:19;;;8805:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;8905:1;8886:21;;:7;:21;;;8878:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;8980:6;8950:11;:18;8962:5;8950:18;;;;;;;;;;;;;;;:27;8969:7;8950:27;;;;;;;;;;;;;;;:36;;;;9018:7;9002:32;;9011:5;9002:32;;;9027:6;9002:32;;;;;;:::i;:::-;;;;;;;;8720:322;;;:::o;9050:967::-;9154:1;9138:18;;:4;:18;;;9130:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;9224:1;9210:16;;:2;:16;;;9202:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;9287:1;9278:6;:10;9270:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;9341:20;:26;9362:4;9341:26;;;;;;;;;;;;;;;;;;;;;;;;;9340:27;:56;;;;;9372:20;:24;9393:2;9372:24;;;;;;;;;;;;;;;;;;;;;;;;;9371:25;9340:56;9336:273;;;9431:11;;9421:6;:21;;9413:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;9489:7;;;;;;;;;;;9484:114;;9536:4;9525:15;;:7;;;;;;;;;;;:15;;;;:32;;;;;9555:2;9544:13;;:7;;;;;;;;;;;:13;;;;9525:32;9517:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;9484:114;9336:273;9626:24;:28;9651:2;9626:28;;;;;;;;;;;;;;;;;;;;;;;;;9621:139;;9707:12;;9696:6;9680:13;9690:2;9680:9;:13::i;:::-;:22;;;;:::i;:::-;9679:40;;9671:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;9621:139;9772:30;9793:4;9799:2;9772:20;:30::i;:::-;9815:12;9830:4;9815:19;;9849:17;:23;9867:4;9849:23;;;;;;;;;;;;;;;;;;;;;;;;;:48;;;;9876:17;:21;9894:2;9876:21;;;;;;;;;;;;;;;;;;;;;;;;;9849:48;:63;;;;9902:10;;;;;;;;;;;9901:11;9849:63;9845:111;;;9939:5;9929:15;;9845:111;9968:41;9983:4;9989:2;9993:6;10001:7;9968:14;:41::i;:::-;9119:898;9050:967;;;:::o;11410:582::-;11481:28;11512:24;11530:4;11512:9;:24::i;:::-;11481:55;;11543:15;11585:14;;11561:20;:38;;11543:56;;11610:10;:29;;;;;11632:7;;;;;;;;;;;11624:15;;:4;:15;;;;11610:29;:59;;;;;11643:26;;;;;;;;;;;11610:59;:104;;;;;11691:4;11675:21;;:4;:21;;;:38;;;;;11706:7;;;;;;;;;;;11700:13;;:2;:13;;;11675:38;11673:41;11610:104;11606:383;;;11727:59;11744:4;11759:9;;;;;;;;;;;11771:14;;11727:8;:59::i;:::-;11797:58;11828:9;;;;;;;;;;;11840:14;;11797:22;:58::i;:::-;11866:18;11887:21;11866:42;;11936:1;11923:10;:14;11919:61;;;11947:11;;;;;;;;;;;11939:29;;:41;11969:10;11939:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11919:61;11716:273;11606:383;11474:518;;11410:582;;:::o;10025:1181::-;10148:6;10137:17;;:7;;;;;;;;;;;:17;;;:28;;;;;10158:7;10137:28;10133:1066;;;10182:14;10211:23;10258:24;10275:6;10258:16;:24::i;:::-;10249:33;;10324:6;10315;:15;;;;:::i;:::-;10297:33;;10385:6;10365:9;:17;10375:6;10365:17;;;;;;;;;;;;;;;;:26;;;;:::i;:::-;10345:9;:17;10355:6;10345:17;;;;;;;;;;;;;;;:46;;;;10452:15;10429:9;:20;10439:9;10429:20;;;;;;;;;;;;;;;;:38;;;;:::i;:::-;10406:9;:20;10416:9;10406:20;;;;;;;;;;;;;;;:61;;;;10504:9;10487:44;;10496:6;10487:44;;;10515:15;10487:44;;;;;;:::i;:::-;;;;;;;;10546:28;10559:6;10567;10546:12;:28::i;:::-;10167:419;;10133:1066;;;10607:9;10596:20;;:7;;;;;;;;;;;:20;;;:31;;;;;10620:7;10596:31;10592:607;;;10644:14;10661:25;10679:6;10661:17;:25::i;:::-;10644:42;;10701:23;10736:6;10727;:15;;;;:::i;:::-;10701:41;;10797:6;10777:9;:17;10787:6;10777:17;;;;;;;;;;;;;;;;:26;;;;:::i;:::-;10757:9;:17;10767:6;10757:17;;;;;;;;;;;;;;;:46;;;;10864:15;10841:9;:20;10851:9;10841:20;;;;;;;;;;;;;;;;:38;;;;:::i;:::-;10818:9;:20;10828:9;10818:20;;;;;;;;;;;;;;;:61;;;;10916:9;10899:44;;10908:6;10899:44;;;10927:15;10899:44;;;;;;:::i;:::-;;;;;;;;10958:28;10971:6;10979;10958:12;:28::i;:::-;10629:369;;10592:607;;;11059:6;11039:9;:17;11049:6;11039:17;;;;;;;;;;;;;;;;:26;;;;:::i;:::-;11019:9;:17;11029:6;11019:17;;;;;;;;;;;;;;;:46;;;;11126:6;11103:9;:20;11113:9;11103:20;;;;;;;;;;;;;;;;:29;;;;:::i;:::-;11080:9;:20;11090:9;11080:20;;;;;;;;;;;;;;;:52;;;;11169:9;11152:35;;11161:6;11152:35;;;11180:6;11152:35;;;;;;:::i;:::-;;;;;;;;10592:607;10133:1066;10025:1181;;;;:::o;12020:399::-;12110:20;12144:13;12110:48;;12169:21;12207:1;12193:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12169:40;;12238:4;12220;12225:1;12220:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;12264:9;:14;;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12254:4;12259:1;12254:7;;;;;;;;:::i;:::-;;;;;;;:26;;;;;;;;;;;12291:9;:60;;;12352:11;12365:1;12368:4;12382;12407:3;12389:15;:21;;;;:::i;:::-;12291:120;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12099:320;;12020:399;;:::o;11214:188::-;11337:6;11310:9;:24;11328:4;11310:24;;;;;;;;;;;;;;;;:33;;;;:::i;:::-;11283:9;:24;11301:4;11283:24;;;;;;;;;;;;;;;:60;;;;11380:4;11355:39;;11364:6;11355:39;;;11387:6;11355:39;;;;;;:::i;:::-;;;;;;;;11214:188;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1349:126::-;1386:7;1426:42;1419:5;1415:54;1404:65;;1349:126;;;:::o;1481:60::-;1509:3;1530:5;1523:12;;1481:60;;;:::o;1547:142::-;1597:9;1630:53;1648:34;1657:24;1675:5;1657:24;:::i;:::-;1648:34;:::i;:::-;1630:53;:::i;:::-;1617:66;;1547:142;;;:::o;1695:126::-;1745:9;1778:37;1809:5;1778:37;:::i;:::-;1765:50;;1695:126;;;:::o;1827:144::-;1895:9;1928:37;1959:5;1928:37;:::i;:::-;1915:50;;1827:144;;;:::o;1977:167::-;2082:55;2131:5;2082:55;:::i;:::-;2077:3;2070:68;1977:167;;:::o;2150:258::-;2261:4;2299:2;2288:9;2284:18;2276:26;;2312:89;2398:1;2387:9;2383:17;2374:6;2312:89;:::i;:::-;2150:258;;;;:::o;2495:117::-;2604:1;2601;2594:12;2741:96;2778:7;2807:24;2825:5;2807:24;:::i;:::-;2796:35;;2741:96;;;:::o;2843:122::-;2916:24;2934:5;2916:24;:::i;:::-;2909:5;2906:35;2896:63;;2955:1;2952;2945:12;2896:63;2843:122;:::o;2971:139::-;3017:5;3055:6;3042:20;3033:29;;3071:33;3098:5;3071:33;:::i;:::-;2971:139;;;;:::o;3116:77::-;3153:7;3182:5;3171:16;;3116:77;;;:::o;3199:122::-;3272:24;3290:5;3272:24;:::i;:::-;3265:5;3262:35;3252:63;;3311:1;3308;3301:12;3252:63;3199:122;:::o;3327:139::-;3373:5;3411:6;3398:20;3389:29;;3427:33;3454:5;3427:33;:::i;:::-;3327:139;;;;:::o;3472:474::-;3540:6;3548;3597:2;3585:9;3576:7;3572:23;3568:32;3565:119;;;3603:79;;:::i;:::-;3565:119;3723:1;3748:53;3793:7;3784:6;3773:9;3769:22;3748:53;:::i;:::-;3738:63;;3694:117;3850:2;3876:53;3921:7;3912:6;3901:9;3897:22;3876:53;:::i;:::-;3866:63;;3821:118;3472:474;;;;;:::o;3952:90::-;3986:7;4029:5;4022:13;4015:21;4004:32;;3952:90;;;:::o;4048:109::-;4129:21;4144:5;4129:21;:::i;:::-;4124:3;4117:34;4048:109;;:::o;4163:210::-;4250:4;4288:2;4277:9;4273:18;4265:26;;4301:65;4363:1;4352:9;4348:17;4339:6;4301:65;:::i;:::-;4163:210;;;;:::o;4379:116::-;4449:21;4464:5;4449:21;:::i;:::-;4442:5;4439:32;4429:60;;4485:1;4482;4475:12;4429:60;4379:116;:::o;4501:133::-;4544:5;4582:6;4569:20;4560:29;;4598:30;4622:5;4598:30;:::i;:::-;4501:133;;;;:::o;4640:323::-;4696:6;4745:2;4733:9;4724:7;4720:23;4716:32;4713:119;;;4751:79;;:::i;:::-;4713:119;4871:1;4896:50;4938:7;4929:6;4918:9;4914:22;4896:50;:::i;:::-;4886:60;;4842:114;4640:323;;;;:::o;4969:118::-;5056:24;5074:5;5056:24;:::i;:::-;5051:3;5044:37;4969:118;;:::o;5093:222::-;5186:4;5224:2;5213:9;5209:18;5201:26;;5237:71;5305:1;5294:9;5290:17;5281:6;5237:71;:::i;:::-;5093:222;;;;:::o;5321:619::-;5398:6;5406;5414;5463:2;5451:9;5442:7;5438:23;5434:32;5431:119;;;5469:79;;:::i;:::-;5431:119;5589:1;5614:53;5659:7;5650:6;5639:9;5635:22;5614:53;:::i;:::-;5604:63;;5560:117;5716:2;5742:53;5787:7;5778:6;5767:9;5763:22;5742:53;:::i;:::-;5732:63;;5687:118;5844:2;5870:53;5915:7;5906:6;5895:9;5891:22;5870:53;:::i;:::-;5860:63;;5815:118;5321:619;;;;;:::o;5946:468::-;6011:6;6019;6068:2;6056:9;6047:7;6043:23;6039:32;6036:119;;;6074:79;;:::i;:::-;6036:119;6194:1;6219:53;6264:7;6255:6;6244:9;6240:22;6219:53;:::i;:::-;6209:63;;6165:117;6321:2;6347:50;6389:7;6380:6;6369:9;6365:22;6347:50;:::i;:::-;6337:60;;6292:115;5946:468;;;;;:::o;6420:86::-;6455:7;6495:4;6488:5;6484:16;6473:27;;6420:86;;;:::o;6512:112::-;6595:22;6611:5;6595:22;:::i;:::-;6590:3;6583:35;6512:112;;:::o;6630:214::-;6719:4;6757:2;6746:9;6742:18;6734:26;;6770:67;6834:1;6823:9;6819:17;6810:6;6770:67;:::i;:::-;6630:214;;;;:::o;6850:329::-;6909:6;6958:2;6946:9;6937:7;6933:23;6929:32;6926:119;;;6964:79;;:::i;:::-;6926:119;7084:1;7109:53;7154:7;7145:6;7134:9;7130:22;7109:53;:::i;:::-;7099:63;;7055:117;6850:329;;;;:::o;7185:::-;7244:6;7293:2;7281:9;7272:7;7268:23;7264:32;7261:119;;;7299:79;;:::i;:::-;7261:119;7419:1;7444:53;7489:7;7480:6;7469:9;7465:22;7444:53;:::i;:::-;7434:63;;7390:117;7185:329;;;;:::o;7520:118::-;7607:24;7625:5;7607:24;:::i;:::-;7602:3;7595:37;7520:118;;:::o;7644:222::-;7737:4;7775:2;7764:9;7760:18;7752:26;;7788:71;7856:1;7845:9;7841:17;7832:6;7788:71;:::i;:::-;7644:222;;;;:::o;7872:474::-;7940:6;7948;7997:2;7985:9;7976:7;7972:23;7968:32;7965:119;;;8003:79;;:::i;:::-;7965:119;8123:1;8148:53;8193:7;8184:6;8173:9;8169:22;8148:53;:::i;:::-;8138:63;;8094:117;8250:2;8276:53;8321:7;8312:6;8301:9;8297:22;8276:53;:::i;:::-;8266:63;;8221:118;7872:474;;;;;:::o;8352:180::-;8400:77;8397:1;8390:88;8497:4;8494:1;8487:15;8521:4;8518:1;8511:15;8538:320;8582:6;8619:1;8613:4;8609:12;8599:22;;8666:1;8660:4;8656:12;8687:18;8677:81;;8743:4;8735:6;8731:17;8721:27;;8677:81;8805:2;8797:6;8794:14;8774:18;8771:38;8768:84;;8824:18;;:::i;:::-;8768:84;8589:269;8538:320;;;:::o;8864:182::-;9004:34;9000:1;8992:6;8988:14;8981:58;8864:182;:::o;9052:366::-;9194:3;9215:67;9279:2;9274:3;9215:67;:::i;:::-;9208:74;;9291:93;9380:3;9291:93;:::i;:::-;9409:2;9404:3;9400:12;9393:19;;9052:366;;;:::o;9424:419::-;9590:4;9628:2;9617:9;9613:18;9605:26;;9677:9;9671:4;9667:20;9663:1;9652:9;9648:17;9641:47;9705:131;9831:4;9705:131;:::i;:::-;9697:139;;9424:419;;;:::o;9849:180::-;9897:77;9894:1;9887:88;9994:4;9991:1;9984:15;10018:4;10015:1;10008:15;10035:194;10075:4;10095:20;10113:1;10095:20;:::i;:::-;10090:25;;10129:20;10147:1;10129:20;:::i;:::-;10124:25;;10173:1;10170;10166:9;10158:17;;10197:1;10191:4;10188:11;10185:37;;;10202:18;;:::i;:::-;10185:37;10035:194;;;;:::o;10235:191::-;10275:3;10294:20;10312:1;10294:20;:::i;:::-;10289:25;;10328:20;10346:1;10328:20;:::i;:::-;10323:25;;10371:1;10368;10364:9;10357:16;;10392:3;10389:1;10386:10;10383:36;;;10399:18;;:::i;:::-;10383:36;10235:191;;;;:::o;10432:410::-;10472:7;10495:20;10513:1;10495:20;:::i;:::-;10490:25;;10529:20;10547:1;10529:20;:::i;:::-;10524:25;;10584:1;10581;10577:9;10606:30;10624:11;10606:30;:::i;:::-;10595:41;;10785:1;10776:7;10772:15;10769:1;10766:22;10746:1;10739:9;10719:83;10696:139;;10815:18;;:::i;:::-;10696:139;10480:362;10432:410;;;;:::o;10848:167::-;10988:19;10984:1;10976:6;10972:14;10965:43;10848:167;:::o;11021:366::-;11163:3;11184:67;11248:2;11243:3;11184:67;:::i;:::-;11177:74;;11260:93;11349:3;11260:93;:::i;:::-;11378:2;11373:3;11369:12;11362:19;;11021:366;;;:::o;11393:419::-;11559:4;11597:2;11586:9;11582:18;11574:26;;11646:9;11640:4;11636:20;11632:1;11621:9;11617:17;11610:47;11674:131;11800:4;11674:131;:::i;:::-;11666:139;;11393:419;;;:::o;11818:180::-;11866:77;11863:1;11856:88;11963:4;11960:1;11953:15;11987:4;11984:1;11977:15;12004:185;12044:1;12061:20;12079:1;12061:20;:::i;:::-;12056:25;;12095:20;12113:1;12095:20;:::i;:::-;12090:25;;12134:1;12124:35;;12139:18;;:::i;:::-;12124:35;12181:1;12178;12174:9;12169:14;;12004:185;;;;:::o;12195:225::-;12335:34;12331:1;12323:6;12319:14;12312:58;12404:8;12399:2;12391:6;12387:15;12380:33;12195:225;:::o;12426:366::-;12568:3;12589:67;12653:2;12648:3;12589:67;:::i;:::-;12582:74;;12665:93;12754:3;12665:93;:::i;:::-;12783:2;12778:3;12774:12;12767:19;;12426:366;;;:::o;12798:419::-;12964:4;13002:2;12991:9;12987:18;12979:26;;13051:9;13045:4;13041:20;13037:1;13026:9;13022:17;13015:47;13079:131;13205:4;13079:131;:::i;:::-;13071:139;;12798:419;;;:::o;13223:180::-;13363:32;13359:1;13351:6;13347:14;13340:56;13223:180;:::o;13409:366::-;13551:3;13572:67;13636:2;13631:3;13572:67;:::i;:::-;13565:74;;13648:93;13737:3;13648:93;:::i;:::-;13766:2;13761:3;13757:12;13750:19;;13409:366;;;:::o;13781:419::-;13947:4;13985:2;13974:9;13970:18;13962:26;;14034:9;14028:4;14024:20;14020:1;14009:9;14005:17;13998:47;14062:131;14188:4;14062:131;:::i;:::-;14054:139;;13781:419;;;:::o;14206:177::-;14346:29;14342:1;14334:6;14330:14;14323:53;14206:177;:::o;14389:366::-;14531:3;14552:67;14616:2;14611:3;14552:67;:::i;:::-;14545:74;;14628:93;14717:3;14628:93;:::i;:::-;14746:2;14741:3;14737:12;14730:19;;14389:366;;;:::o;14761:419::-;14927:4;14965:2;14954:9;14950:18;14942:26;;15014:9;15008:4;15004:20;15000:1;14989:9;14985:17;14978:47;15042:131;15168:4;15042:131;:::i;:::-;15034:139;;14761:419;;;:::o;15186:180::-;15326:32;15322:1;15314:6;15310:14;15303:56;15186:180;:::o;15372:366::-;15514:3;15535:67;15599:2;15594:3;15535:67;:::i;:::-;15528:74;;15611:93;15700:3;15611:93;:::i;:::-;15729:2;15724:3;15720:12;15713:19;;15372:366;;;:::o;15744:419::-;15910:4;15948:2;15937:9;15933:18;15925:26;;15997:9;15991:4;15987:20;15983:1;15972:9;15968:17;15961:47;16025:131;16151:4;16025:131;:::i;:::-;16017:139;;15744:419;;;:::o;16169:178::-;16309:30;16305:1;16297:6;16293:14;16286:54;16169:178;:::o;16353:366::-;16495:3;16516:67;16580:2;16575:3;16516:67;:::i;:::-;16509:74;;16592:93;16681:3;16592:93;:::i;:::-;16710:2;16705:3;16701:12;16694:19;;16353:366;;;:::o;16725:419::-;16891:4;16929:2;16918:9;16914:18;16906:26;;16978:9;16972:4;16968:20;16964:1;16953:9;16949:17;16942:47;17006:131;17132:4;17006:131;:::i;:::-;16998:139;;16725:419;;;:::o;17150:182::-;17290:34;17286:1;17278:6;17274:14;17267:58;17150:182;:::o;17338:366::-;17480:3;17501:67;17565:2;17560:3;17501:67;:::i;:::-;17494:74;;17577:93;17666:3;17577:93;:::i;:::-;17695:2;17690:3;17686:12;17679:19;;17338:366;;;:::o;17710:419::-;17876:4;17914:2;17903:9;17899:18;17891:26;;17963:9;17957:4;17953:20;17949:1;17938:9;17934:17;17927:47;17991:131;18117:4;17991:131;:::i;:::-;17983:139;;17710:419;;;:::o;18135:172::-;18275:24;18271:1;18263:6;18259:14;18252:48;18135:172;:::o;18313:366::-;18455:3;18476:67;18540:2;18535:3;18476:67;:::i;:::-;18469:74;;18552:93;18641:3;18552:93;:::i;:::-;18670:2;18665:3;18661:12;18654:19;;18313:366;;;:::o;18685:419::-;18851:4;18889:2;18878:9;18874:18;18866:26;;18938:9;18932:4;18928:20;18924:1;18913:9;18909:17;18902:47;18966:131;19092:4;18966:131;:::i;:::-;18958:139;;18685:419;;;:::o;19110:170::-;19250:22;19246:1;19238:6;19234:14;19227:46;19110:170;:::o;19286:366::-;19428:3;19449:67;19513:2;19508:3;19449:67;:::i;:::-;19442:74;;19525:93;19614:3;19525:93;:::i;:::-;19643:2;19638:3;19634:12;19627:19;;19286:366;;;:::o;19658:419::-;19824:4;19862:2;19851:9;19847:18;19839:26;;19911:9;19905:4;19901:20;19897:1;19886:9;19882:17;19875:47;19939:131;20065:4;19939:131;:::i;:::-;19931:139;;19658:419;;;:::o;20083:174::-;20223:26;20219:1;20211:6;20207:14;20200:50;20083:174;:::o;20263:366::-;20405:3;20426:67;20490:2;20485:3;20426:67;:::i;:::-;20419:74;;20502:93;20591:3;20502:93;:::i;:::-;20620:2;20615:3;20611:12;20604:19;;20263:366;;;:::o;20635:419::-;20801:4;20839:2;20828:9;20824:18;20816:26;;20888:9;20882:4;20878:20;20874:1;20863:9;20859:17;20852:47;20916:131;21042:4;20916:131;:::i;:::-;20908:139;;20635:419;;;:::o;21060:180::-;21108:77;21105:1;21098:88;21205:4;21202:1;21195:15;21229:4;21226:1;21219:15;21246:180;21294:77;21291:1;21284:88;21391:4;21388:1;21381:15;21415:4;21412:1;21405:15;21432:143;21489:5;21520:6;21514:13;21505:22;;21536:33;21563:5;21536:33;:::i;:::-;21432:143;;;;:::o;21581:351::-;21651:6;21700:2;21688:9;21679:7;21675:23;21671:32;21668:119;;;21706:79;;:::i;:::-;21668:119;21826:1;21851:64;21907:7;21898:6;21887:9;21883:22;21851:64;:::i;:::-;21841:74;;21797:128;21581:351;;;;:::o;21938:85::-;21983:7;22012:5;22001:16;;21938:85;;;:::o;22029:158::-;22087:9;22120:61;22138:42;22147:32;22173:5;22147:32;:::i;:::-;22138:42;:::i;:::-;22120:61;:::i;:::-;22107:74;;22029:158;;;:::o;22193:147::-;22288:45;22327:5;22288:45;:::i;:::-;22283:3;22276:58;22193:147;;:::o;22346:114::-;22413:6;22447:5;22441:12;22431:22;;22346:114;;;:::o;22466:184::-;22565:11;22599:6;22594:3;22587:19;22639:4;22634:3;22630:14;22615:29;;22466:184;;;;:::o;22656:132::-;22723:4;22746:3;22738:11;;22776:4;22771:3;22767:14;22759:22;;22656:132;;;:::o;22794:108::-;22871:24;22889:5;22871:24;:::i;:::-;22866:3;22859:37;22794:108;;:::o;22908:179::-;22977:10;22998:46;23040:3;23032:6;22998:46;:::i;:::-;23076:4;23071:3;23067:14;23053:28;;22908:179;;;;:::o;23093:113::-;23163:4;23195;23190:3;23186:14;23178:22;;23093:113;;;:::o;23242:732::-;23361:3;23390:54;23438:5;23390:54;:::i;:::-;23460:86;23539:6;23534:3;23460:86;:::i;:::-;23453:93;;23570:56;23620:5;23570:56;:::i;:::-;23649:7;23680:1;23665:284;23690:6;23687:1;23684:13;23665:284;;;23766:6;23760:13;23793:63;23852:3;23837:13;23793:63;:::i;:::-;23786:70;;23879:60;23932:6;23879:60;:::i;:::-;23869:70;;23725:224;23712:1;23709;23705:9;23700:14;;23665:284;;;23669:14;23965:3;23958:10;;23366:608;;;23242:732;;;;:::o;23980:831::-;24243:4;24281:3;24270:9;24266:19;24258:27;;24295:71;24363:1;24352:9;24348:17;24339:6;24295:71;:::i;:::-;24376:80;24452:2;24441:9;24437:18;24428:6;24376:80;:::i;:::-;24503:9;24497:4;24493:20;24488:2;24477:9;24473:18;24466:48;24531:108;24634:4;24625:6;24531:108;:::i;:::-;24523:116;;24649:72;24717:2;24706:9;24702:18;24693:6;24649:72;:::i;:::-;24731:73;24799:3;24788:9;24784:19;24775:6;24731:73;:::i;:::-;23980:831;;;;;;;;:::o

Swarm Source

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