ETH Price: $2,465.20 (+0.87%)

Token

DUBBATE (Tremp vs Boden)
 

Overview

Max Total Supply

1,000,000,000 Tremp vs Boden

Holders

27

Total Transfers

-

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

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:
DUBBATE

Compiler Version
v0.8.26+commit.8a97fa7a

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-06-27
*/

/**

Tremp vs Boden

Web: https://dubbate.com 
Tg: https://t.me/dubbate 
X: https://x.com/Dubbate_

*/
// SPDX-License-Identifier: Unlicensed
pragma solidity ^0.8.24;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

}

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

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

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

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

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

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

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

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

    function factory() external pure returns (address);

    function WETH() external pure returns (address);

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

contract DUBBATE  is Context, IERC20, Ownable {

    using SafeMath for uint256;

    string private constant _name = unicode"DUBBATE";
    string private constant _symbol = unicode"Tremp vs Boden";
    uint8 private constant _decimals = 9;

    mapping(address => uint256) private _rOwned;
    mapping(address => uint256) private _tOwned;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFee;
    uint256 private constant MAX = ~uint256(0);
    uint256 private constant _tTotal =  1000000000 * 10**9; 
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    uint256 private _redisFeeOnBuy = 0;
    uint256 private _taxFeeOnBuy = 25;
    uint256 private _redisFeeOnSell = 0;
    uint256 private _taxFeeOnSell = 35;

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

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

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

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;

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

    uint256 public _maxTxAmount = 20000000 * 10**9;
    uint256 public _maxWalletSize = 20000000 * 10**9;
    uint256 public _swapTokensAtAmount = 20000000 * 10**9;

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

    constructor() {

        _rOwned[_msgSender()] = _rTotal;

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

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

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

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

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

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

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

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

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

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

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

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

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

    function removetaxes() private {
        if (_redisFee == 0 && _taxFee == 0) return;

        _previousredisFee = _redisFee;
        _previoustaxFee = _taxFee;

        _redisFee = 0;
        _taxFee = 0;
    }

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

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

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

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

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

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

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

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

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

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

        bool takeFee = true;

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

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

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

        }

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

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

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

    function opentrading(bool _tradingOpen) public onlyOwner {
        tradingOpen = _tradingOpen;
    }

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

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

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

    function unlock(address notbot) public onlyOwner {
        bots[notbot] = false;
    }

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

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

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

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

    receive() external payable {}

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

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

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

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

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

    function updateTax(uint256 redisFeeOnBuy, uint256 redisFeeOnSell, uint256 taxFeeOnBuy, uint256 taxFeeOnSell) public onlyOwner {
        _redisFeeOnBuy = redisFeeOnBuy;
        _redisFeeOnSell = redisFeeOnSell;
        _taxFeeOnBuy = taxFeeOnBuy;
        _taxFeeOnSell = taxFeeOnSell;
    }

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

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

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

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

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

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdate","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"MinSwapTokenThresh","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"Tatebot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"TxnAmmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWalletSize","type":"uint256"}],"name":"WalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_buyMap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"bots","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeAccountFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualswap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualunclogg","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"_tradingOpen","type":"bool"}],"name":"opentrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"_swapEnabled","type":"bool"}],"name":"toggleSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"notbot","type":"address"}],"name":"unlock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"redisFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"redisFeeOnSell","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnSell","type":"uint256"}],"name":"updateTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052670de0b6b3a76400005f1961001991906106e3565b5f196100259190610740565b6006555f60085560196009555f600a556023600b55600a54600c55600b54600d55600c54600e55600d54600f5573fa2eb330a9866869d500c616bf4f0027a48f553460125f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073fa2eb330a9866869d500c616bf4f0027a48f553460135f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601560146101000a81548160ff0219169083151502179055505f6015806101000a81548160ff0219169083151502179055506001601560166101000a81548160ff02191690831515021790555066470de4df82000060165566470de4df82000060175566470de4df820000601855348015610175575f80fd5b505f61018561067f60201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35060065460025f61023561067f60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f737a250d5630b4cf539739df2c5dacb4c659f2488d90508060145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610313573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061033791906107d1565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561039c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103c091906107d1565b6040518363ffffffff1660e01b81526004016103dd92919061080b565b6020604051808303815f875af11580156103f9573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061041d91906107d1565b60155f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160055f61046f61068660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160055f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160055f60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160055f60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555061060d61067f60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef670de0b6b3a76400006040516106719190610841565b60405180910390a35061085a565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6106ed826106ad565b91506106f8836106ad565b925082610708576107076106b6565b5b828206905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61074a826106ad565b9150610755836106ad565b925082820390508181111561076d5761076c610713565b5b92915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6107a082610777565b9050919050565b6107b081610796565b81146107ba575f80fd5b50565b5f815190506107cb816107a7565b92915050565b5f602082840312156107e6576107e5610773565b5b5f6107f3848285016107bd565b91505092915050565b61080581610796565b82525050565b5f60408201905061081e5f8301856107fc565b61082b60208301846107fc565b9392505050565b61083b816106ad565b82525050565b5f6020820190506108545f830184610832565b92915050565b613b99806108675f395ff3fe6080604052600436106101d0575f3560e01c8063796a6b11116100f657806395d89b4111610094578063c948e54411610063578063c948e54414610641578063dd62ed3e14610669578063e2ee677d146106a5578063f2fde38b146106cd576101d7565b806395d89b4114610589578063a9059cbb146105b3578063bfd79284146105ef578063c3c8cd801461062b576101d7565b806388ae08d3116100d057806388ae08d3146104e55780638da5cb5b1461050d5780638ebc7ec6146105375780638f9a55c01461055f576101d7565b8063796a6b11146104575780637d1db4a51461047f5780637f2feddc146104a9576101d7565b80632f6c493c1161016e5780636d8aa8f81161013d5780636d8aa8f8146103b557806370a08231146103dd57806370e3e8b914610419578063715018a614610441576101d7565b80632f6c493c1461030f5780632fd689e314610337578063313ce5671461036157806349bd5a5e1461038b576101d7565b806318160ddd116101aa57806318160ddd1461026b57806323b872dd146102955780632c299472146102d15780632ece88fb146102f9576101d7565b806306fdde03146101db578063095ea7b3146102055780631694505e14610241576101d7565b366101d757005b5f80fd5b3480156101e6575f80fd5b506101ef6106f5565b6040516101fc9190612b03565b60405180910390f35b348015610210575f80fd5b5061022b60048036038101906102269190612bc1565b610732565b6040516102389190612c19565b60405180910390f35b34801561024c575f80fd5b5061025561074f565b6040516102629190612c8d565b60405180910390f35b348015610276575f80fd5b5061027f610774565b60405161028c9190612cb5565b60405180910390f35b3480156102a0575f80fd5b506102bb60048036038101906102b69190612cce565b610783565b6040516102c89190612c19565b60405180910390f35b3480156102dc575f80fd5b506102f760048036038101906102f29190612d1e565b610857565b005b348015610304575f80fd5b5061030d6108f5565b005b34801561031a575f80fd5b5061033560048036038101906103309190612d49565b6109c2565b005b348015610342575f80fd5b5061034b610aad565b6040516103589190612cb5565b60405180910390f35b34801561036c575f80fd5b50610375610ab3565b6040516103829190612d8f565b60405180910390f35b348015610396575f80fd5b5061039f610abb565b6040516103ac9190612db7565b60405180910390f35b3480156103c0575f80fd5b506103db60048036038101906103d69190612dfa565b610ae0565b005b3480156103e8575f80fd5b5061040360048036038101906103fe9190612d49565b610b91565b6040516104109190612cb5565b60405180910390f35b348015610424575f80fd5b5061043f600480360381019061043a9190612e25565b610bdf565b005b34801561044c575f80fd5b50610455610c95565b005b348015610462575f80fd5b5061047d60048036038101906104789190612fc9565b610de3565b005b34801561048a575f80fd5b50610493610f02565b6040516104a09190612cb5565b60405180910390f35b3480156104b4575f80fd5b506104cf60048036038101906104ca9190612d49565b610f08565b6040516104dc9190612cb5565b60405180910390f35b3480156104f0575f80fd5b5061050b60048036038101906105069190612d1e565b610f1d565b005b348015610518575f80fd5b50610521610fbb565b60405161052e9190612db7565b60405180910390f35b348015610542575f80fd5b5061055d60048036038101906105589190613069565b610fe2565b005b34801561056a575f80fd5b50610573611111565b6040516105809190612cb5565b60405180910390f35b348015610594575f80fd5b5061059d611117565b6040516105aa9190612b03565b60405180910390f35b3480156105be575f80fd5b506105d960048036038101906105d49190612bc1565b611154565b6040516105e69190612c19565b60405180910390f35b3480156105fa575f80fd5b5061061560048036038101906106109190612d49565b611171565b6040516106229190612c19565b60405180910390f35b348015610636575f80fd5b5061063f61118e565b005b34801561064c575f80fd5b5061066760048036038101906106629190612dfa565b611263565b005b348015610674575f80fd5b5061068f600480360381019061068a91906130c6565b611314565b60405161069c9190612cb5565b60405180910390f35b3480156106b0575f80fd5b506106cb60048036038101906106c69190612d1e565b611396565b005b3480156106d8575f80fd5b506106f360048036038101906106ee9190612d49565b611434565b005b60606040518060400160405280600781526020017f4455424241544500000000000000000000000000000000000000000000000000815250905090565b5f61074561073e6115f1565b84846115f8565b6001905092915050565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f670de0b6b3a7640000905090565b5f61078f8484846117bb565b61084c8461079b6115f1565b61084785604051806060016040528060288152602001613b3c6028913960045f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6107fe6115f1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461201b9092919063ffffffff16565b6115f8565b600190509392505050565b61085f6115f1565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108e29061314e565b60405180910390fd5b8060178190555050565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166109356115f1565b73ffffffffffffffffffffffffffffffffffffffff1614806109aa575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166109926115f1565b73ffffffffffffffffffffffffffffffffffffffff16145b6109b2575f80fd5b5f4790506109bf8161207d565b50565b6109ca6115f1565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a4d9061314e565b60405180910390fd5b5f60105f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b60185481565b5f6009905090565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610ae86115f1565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b6b9061314e565b60405180910390fd5b80601560166101000a81548160ff02191690831515021790555050565b5f610bd860025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546120e5565b9050919050565b610be76115f1565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c6a9061314e565b60405180910390fd5b8360088190555082600a819055508160098190555080600b8190555050505050565b610c9d6115f1565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d209061314e565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610deb6115f1565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e77576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6e9061314e565b60405180910390fd5b5f5b8151811015610efe57600160105f848481518110610e9a57610e9961316c565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050610e79565b5050565b60165481565b6011602052805f5260405f205f915090505481565b610f256115f1565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fb1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa89061314e565b60405180910390fd5b8060168190555050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610fea6115f1565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611076576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161106d9061314e565b60405180910390fd5b5f5b8383905081101561110b578160055f86868581811061109a5761109961316c565b5b90506020020160208101906110af9190612d49565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050611078565b50505050565b60175481565b60606040518060400160405280600e81526020017f5472656d7020767320426f64656e000000000000000000000000000000000000815250905090565b5f6111676111606115f1565b84846117bb565b6001905092915050565b6010602052805f5260405f205f915054906101000a900460ff1681565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166111ce6115f1565b73ffffffffffffffffffffffffffffffffffffffff161480611243575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661122b6115f1565b73ffffffffffffffffffffffffffffffffffffffff16145b61124b575f80fd5b5f61125530610b91565b905061126081612151565b50565b61126b6115f1565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ee9061314e565b60405180910390fd5b80601560146101000a81548160ff02191690831515021790555050565b5f60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b61139e6115f1565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461142a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114219061314e565b60405180910390fd5b8060188190555050565b61143c6115f1565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114bf9061314e565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611536576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152d90613209565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611666576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165d90613297565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036116d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116cb90613325565b60405180910390fd5b8060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516117ae9190612cb5565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611829576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611820906133b3565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611897576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188e90613441565b60405180910390fd5b5f81116118d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118d0906134cf565b60405180910390fd5b6118e1610fbb565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561194f575061191f610fbb565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611d2857601560149054906101000a900460ff166119de57611970610fbb565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146119dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119d49061355d565b60405180910390fd5b5b601654811115611a23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a1a906135c5565b60405180910390fd5b60105f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611ac1575060105f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b611b00576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611af790613653565b60405180910390fd5b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611bac5760175481611b6184610b91565b611b6b919061369e565b10611bab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ba290613741565b60405180910390fd5b5b5f611bb630610b91565b90505f60185482101590506016548210611bd05760165491505b808015611be8575060158054906101000a900460ff16155b8015611c41575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611c595750601560169054906101000a900460ff165b8015611cac575060055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611cff575060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611d2557611d0d82612151565b5f4790505f811115611d2357611d224761207d565b5b505b50505b5f6001905060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680611dc8575060055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80611e79575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611e78575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611e86575f9050612009565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611f2f575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611f4757600854600c81905550600954600d819055505b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611ff0575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561200857600a54600c81905550600b54600d819055505b5b612015848484846123ba565b50505050565b5f838311158290612062576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120599190612b03565b60405180910390fd5b505f8385612070919061375f565b9050809150509392505050565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f193505050501580156120e1573d5f803e3d5ffd5b5050565b5f60065482111561212b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161212290613802565b60405180910390fd5b5f6121346123e7565b9050612149818461241090919063ffffffff16565b915050919050565b60016015806101000a81548160ff0219169083151502179055505f600267ffffffffffffffff81111561218757612186612e8d565b5b6040519080825280602002602001820160405280156121b55781602001602082028036833780820191505090505b50905030815f815181106121cc576121cb61316c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612270573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122949190613834565b816001815181106122a8576122a761316c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061230e3060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846115f8565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b815260040161237095949392919061394f565b5f604051808303815f87803b158015612387575f80fd5b505af1158015612399573d5f803e3d5ffd5b50505050505f6015806101000a81548160ff02191690831515021790555050565b806123c8576123c7612459565b5b6123d3848484612492565b806123e1576123e0612459565b5b50505050565b5f805f6123f2612652565b91509150612409818361241090919063ffffffff16565b9250505090565b5f61245183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506126ae565b905092915050565b5f600c5414801561246b57505f600d54145b61249057600c54600e81905550600d54600f819055505f600c819055505f600d819055505b565b5f805f805f806124a18761270f565b9550955095509550955095506124fd8660025f8c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461276f90919063ffffffff16565b60025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061258e8560025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546127b890919063ffffffff16565b60025f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506125d881612815565b6125e284836128cc565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161263f9190612cb5565b60405180910390a3505050505050505050565b5f805f60065490505f670de0b6b3a76400009050612683670de0b6b3a764000060065461241090919063ffffffff16565b8210156126a157600654670de0b6b3a76400009350935050506126aa565b81819350935050505b9091565b5f80831182906126f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126eb9190612b03565b60405180910390fd5b505f838561270291906139d4565b9050809150509392505050565b5f805f805f805f805f6127278a600c54600d54612906565b9250925092505f6127366123e7565b90505f805f6127478e878787612998565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b5f6127b083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061201b565b905092915050565b5f8082846127c6919061369e565b90508381101561280b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161280290613a4e565b60405180910390fd5b8091505092915050565b5f61281e6123e7565b90505f6128348284612a1c90919063ffffffff16565b90506128868160025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546127b890919063ffffffff16565b60025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505050565b6128e18260065461276f90919063ffffffff16565b6006819055506128fc816007546127b890919063ffffffff16565b6007819055505050565b5f805f806129306064612922888a612a1c90919063ffffffff16565b61241090919063ffffffff16565b90505f612959606461294b888b612a1c90919063ffffffff16565b61241090919063ffffffff16565b90505f61298182612973858c61276f90919063ffffffff16565b61276f90919063ffffffff16565b905080838395509550955050505093509350939050565b5f805f806129af8589612a1c90919063ffffffff16565b90505f6129c58689612a1c90919063ffffffff16565b90505f6129db8789612a1c90919063ffffffff16565b90505f612a03826129f5858761276f90919063ffffffff16565b61276f90919063ffffffff16565b9050838184965096509650505050509450945094915050565b5f808303612a2c575f9050612a8d565b5f8284612a399190613a6c565b9050828482612a4891906139d4565b14612a88576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a7f90613b1d565b60405180910390fd5b809150505b92915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f612ad582612a93565b612adf8185612a9d565b9350612aef818560208601612aad565b612af881612abb565b840191505092915050565b5f6020820190508181035f830152612b1b8184612acb565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612b5d82612b34565b9050919050565b612b6d81612b53565b8114612b77575f80fd5b50565b5f81359050612b8881612b64565b92915050565b5f819050919050565b612ba081612b8e565b8114612baa575f80fd5b50565b5f81359050612bbb81612b97565b92915050565b5f8060408385031215612bd757612bd6612b2c565b5b5f612be485828601612b7a565b9250506020612bf585828601612bad565b9150509250929050565b5f8115159050919050565b612c1381612bff565b82525050565b5f602082019050612c2c5f830184612c0a565b92915050565b5f819050919050565b5f612c55612c50612c4b84612b34565b612c32565b612b34565b9050919050565b5f612c6682612c3b565b9050919050565b5f612c7782612c5c565b9050919050565b612c8781612c6d565b82525050565b5f602082019050612ca05f830184612c7e565b92915050565b612caf81612b8e565b82525050565b5f602082019050612cc85f830184612ca6565b92915050565b5f805f60608486031215612ce557612ce4612b2c565b5b5f612cf286828701612b7a565b9350506020612d0386828701612b7a565b9250506040612d1486828701612bad565b9150509250925092565b5f60208284031215612d3357612d32612b2c565b5b5f612d4084828501612bad565b91505092915050565b5f60208284031215612d5e57612d5d612b2c565b5b5f612d6b84828501612b7a565b91505092915050565b5f60ff82169050919050565b612d8981612d74565b82525050565b5f602082019050612da25f830184612d80565b92915050565b612db181612b53565b82525050565b5f602082019050612dca5f830184612da8565b92915050565b612dd981612bff565b8114612de3575f80fd5b50565b5f81359050612df481612dd0565b92915050565b5f60208284031215612e0f57612e0e612b2c565b5b5f612e1c84828501612de6565b91505092915050565b5f805f8060808587031215612e3d57612e3c612b2c565b5b5f612e4a87828801612bad565b9450506020612e5b87828801612bad565b9350506040612e6c87828801612bad565b9250506060612e7d87828801612bad565b91505092959194509250565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612ec382612abb565b810181811067ffffffffffffffff82111715612ee257612ee1612e8d565b5b80604052505050565b5f612ef4612b23565b9050612f008282612eba565b919050565b5f67ffffffffffffffff821115612f1f57612f1e612e8d565b5b602082029050602081019050919050565b5f80fd5b5f612f46612f4184612f05565b612eeb565b90508083825260208201905060208402830185811115612f6957612f68612f30565b5b835b81811015612f925780612f7e8882612b7a565b845260208401935050602081019050612f6b565b5050509392505050565b5f82601f830112612fb057612faf612e89565b5b8135612fc0848260208601612f34565b91505092915050565b5f60208284031215612fde57612fdd612b2c565b5b5f82013567ffffffffffffffff811115612ffb57612ffa612b30565b5b61300784828501612f9c565b91505092915050565b5f80fd5b5f8083601f84011261302957613028612e89565b5b8235905067ffffffffffffffff81111561304657613045613010565b5b60208301915083602082028301111561306257613061612f30565b5b9250929050565b5f805f604084860312156130805761307f612b2c565b5b5f84013567ffffffffffffffff81111561309d5761309c612b30565b5b6130a986828701613014565b935093505060206130bc86828701612de6565b9150509250925092565b5f80604083850312156130dc576130db612b2c565b5b5f6130e985828601612b7a565b92505060206130fa85828601612b7a565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f613138602083612a9d565b915061314382613104565b602082019050919050565b5f6020820190508181035f8301526131658161312c565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f6131f3602683612a9d565b91506131fe82613199565b604082019050919050565b5f6020820190508181035f830152613220816131e7565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f613281602483612a9d565b915061328c82613227565b604082019050919050565b5f6020820190508181035f8301526132ae81613275565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f61330f602283612a9d565b915061331a826132b5565b604082019050919050565b5f6020820190508181035f83015261333c81613303565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f61339d602583612a9d565b91506133a882613343565b604082019050919050565b5f6020820190508181035f8301526133ca81613391565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f61342b602383612a9d565b9150613436826133d1565b604082019050919050565b5f6020820190508181035f8301526134588161341f565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f6134b9602983612a9d565b91506134c48261345f565b604082019050919050565b5f6020820190508181035f8301526134e6816134ad565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e64205f8201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b5f613547603f83612a9d565b9150613552826134ed565b604082019050919050565b5f6020820190508181035f8301526135748161353b565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d6974000000005f82015250565b5f6135af601c83612a9d565b91506135ba8261357b565b602082019050919050565b5f6020820190508181035f8301526135dc816135a3565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c6973745f8201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b5f61363d602383612a9d565b9150613648826135e3565b604082019050919050565b5f6020820190508181035f83015261366a81613631565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6136a882612b8e565b91506136b383612b8e565b92508282019050808211156136cb576136ca613671565b5b92915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073695f8201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b5f61372b602383612a9d565b9150613736826136d1565b604082019050919050565b5f6020820190508181035f8301526137588161371f565b9050919050565b5f61376982612b8e565b915061377483612b8e565b925082820390508181111561378c5761378b613671565b5b92915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c20725f8201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b5f6137ec602a83612a9d565b91506137f782613792565b604082019050919050565b5f6020820190508181035f830152613819816137e0565b9050919050565b5f8151905061382e81612b64565b92915050565b5f6020828403121561384957613848612b2c565b5b5f61385684828501613820565b91505092915050565b5f819050919050565b5f61388261387d6138788461385f565b612c32565b612b8e565b9050919050565b61389281613868565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6138ca81612b53565b82525050565b5f6138db83836138c1565b60208301905092915050565b5f602082019050919050565b5f6138fd82613898565b61390781856138a2565b9350613912836138b2565b805f5b8381101561394257815161392988826138d0565b9750613934836138e7565b925050600181019050613915565b5085935050505092915050565b5f60a0820190506139625f830188612ca6565b61396f6020830187613889565b818103604083015261398181866138f3565b90506139906060830185612da8565b61399d6080830184612ca6565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6139de82612b8e565b91506139e983612b8e565b9250826139f9576139f86139a7565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613a38601b83612a9d565b9150613a4382613a04565b602082019050919050565b5f6020820190508181035f830152613a6581613a2c565b9050919050565b5f613a7682612b8e565b9150613a8183612b8e565b9250828202613a8f81612b8e565b91508282048414831517613aa657613aa5613671565b5b5092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f613b07602183612a9d565b9150613b1282613aad565b604082019050919050565b5f6020820190508181035f830152613b3481613afb565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212201c7169df4eefae04e1c6dc31eee96c066290e366eff5b8bf9cc3f8d78aeca8ee64736f6c634300081a0033

Deployed Bytecode

0x6080604052600436106101d0575f3560e01c8063796a6b11116100f657806395d89b4111610094578063c948e54411610063578063c948e54414610641578063dd62ed3e14610669578063e2ee677d146106a5578063f2fde38b146106cd576101d7565b806395d89b4114610589578063a9059cbb146105b3578063bfd79284146105ef578063c3c8cd801461062b576101d7565b806388ae08d3116100d057806388ae08d3146104e55780638da5cb5b1461050d5780638ebc7ec6146105375780638f9a55c01461055f576101d7565b8063796a6b11146104575780637d1db4a51461047f5780637f2feddc146104a9576101d7565b80632f6c493c1161016e5780636d8aa8f81161013d5780636d8aa8f8146103b557806370a08231146103dd57806370e3e8b914610419578063715018a614610441576101d7565b80632f6c493c1461030f5780632fd689e314610337578063313ce5671461036157806349bd5a5e1461038b576101d7565b806318160ddd116101aa57806318160ddd1461026b57806323b872dd146102955780632c299472146102d15780632ece88fb146102f9576101d7565b806306fdde03146101db578063095ea7b3146102055780631694505e14610241576101d7565b366101d757005b5f80fd5b3480156101e6575f80fd5b506101ef6106f5565b6040516101fc9190612b03565b60405180910390f35b348015610210575f80fd5b5061022b60048036038101906102269190612bc1565b610732565b6040516102389190612c19565b60405180910390f35b34801561024c575f80fd5b5061025561074f565b6040516102629190612c8d565b60405180910390f35b348015610276575f80fd5b5061027f610774565b60405161028c9190612cb5565b60405180910390f35b3480156102a0575f80fd5b506102bb60048036038101906102b69190612cce565b610783565b6040516102c89190612c19565b60405180910390f35b3480156102dc575f80fd5b506102f760048036038101906102f29190612d1e565b610857565b005b348015610304575f80fd5b5061030d6108f5565b005b34801561031a575f80fd5b5061033560048036038101906103309190612d49565b6109c2565b005b348015610342575f80fd5b5061034b610aad565b6040516103589190612cb5565b60405180910390f35b34801561036c575f80fd5b50610375610ab3565b6040516103829190612d8f565b60405180910390f35b348015610396575f80fd5b5061039f610abb565b6040516103ac9190612db7565b60405180910390f35b3480156103c0575f80fd5b506103db60048036038101906103d69190612dfa565b610ae0565b005b3480156103e8575f80fd5b5061040360048036038101906103fe9190612d49565b610b91565b6040516104109190612cb5565b60405180910390f35b348015610424575f80fd5b5061043f600480360381019061043a9190612e25565b610bdf565b005b34801561044c575f80fd5b50610455610c95565b005b348015610462575f80fd5b5061047d60048036038101906104789190612fc9565b610de3565b005b34801561048a575f80fd5b50610493610f02565b6040516104a09190612cb5565b60405180910390f35b3480156104b4575f80fd5b506104cf60048036038101906104ca9190612d49565b610f08565b6040516104dc9190612cb5565b60405180910390f35b3480156104f0575f80fd5b5061050b60048036038101906105069190612d1e565b610f1d565b005b348015610518575f80fd5b50610521610fbb565b60405161052e9190612db7565b60405180910390f35b348015610542575f80fd5b5061055d60048036038101906105589190613069565b610fe2565b005b34801561056a575f80fd5b50610573611111565b6040516105809190612cb5565b60405180910390f35b348015610594575f80fd5b5061059d611117565b6040516105aa9190612b03565b60405180910390f35b3480156105be575f80fd5b506105d960048036038101906105d49190612bc1565b611154565b6040516105e69190612c19565b60405180910390f35b3480156105fa575f80fd5b5061061560048036038101906106109190612d49565b611171565b6040516106229190612c19565b60405180910390f35b348015610636575f80fd5b5061063f61118e565b005b34801561064c575f80fd5b5061066760048036038101906106629190612dfa565b611263565b005b348015610674575f80fd5b5061068f600480360381019061068a91906130c6565b611314565b60405161069c9190612cb5565b60405180910390f35b3480156106b0575f80fd5b506106cb60048036038101906106c69190612d1e565b611396565b005b3480156106d8575f80fd5b506106f360048036038101906106ee9190612d49565b611434565b005b60606040518060400160405280600781526020017f4455424241544500000000000000000000000000000000000000000000000000815250905090565b5f61074561073e6115f1565b84846115f8565b6001905092915050565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f670de0b6b3a7640000905090565b5f61078f8484846117bb565b61084c8461079b6115f1565b61084785604051806060016040528060288152602001613b3c6028913960045f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6107fe6115f1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461201b9092919063ffffffff16565b6115f8565b600190509392505050565b61085f6115f1565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108e29061314e565b60405180910390fd5b8060178190555050565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166109356115f1565b73ffffffffffffffffffffffffffffffffffffffff1614806109aa575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166109926115f1565b73ffffffffffffffffffffffffffffffffffffffff16145b6109b2575f80fd5b5f4790506109bf8161207d565b50565b6109ca6115f1565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a4d9061314e565b60405180910390fd5b5f60105f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b60185481565b5f6009905090565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610ae86115f1565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b6b9061314e565b60405180910390fd5b80601560166101000a81548160ff02191690831515021790555050565b5f610bd860025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546120e5565b9050919050565b610be76115f1565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c6a9061314e565b60405180910390fd5b8360088190555082600a819055508160098190555080600b8190555050505050565b610c9d6115f1565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d209061314e565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610deb6115f1565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e77576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6e9061314e565b60405180910390fd5b5f5b8151811015610efe57600160105f848481518110610e9a57610e9961316c565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050610e79565b5050565b60165481565b6011602052805f5260405f205f915090505481565b610f256115f1565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fb1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa89061314e565b60405180910390fd5b8060168190555050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610fea6115f1565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611076576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161106d9061314e565b60405180910390fd5b5f5b8383905081101561110b578160055f86868581811061109a5761109961316c565b5b90506020020160208101906110af9190612d49565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050611078565b50505050565b60175481565b60606040518060400160405280600e81526020017f5472656d7020767320426f64656e000000000000000000000000000000000000815250905090565b5f6111676111606115f1565b84846117bb565b6001905092915050565b6010602052805f5260405f205f915054906101000a900460ff1681565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166111ce6115f1565b73ffffffffffffffffffffffffffffffffffffffff161480611243575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661122b6115f1565b73ffffffffffffffffffffffffffffffffffffffff16145b61124b575f80fd5b5f61125530610b91565b905061126081612151565b50565b61126b6115f1565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ee9061314e565b60405180910390fd5b80601560146101000a81548160ff02191690831515021790555050565b5f60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b61139e6115f1565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461142a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114219061314e565b60405180910390fd5b8060188190555050565b61143c6115f1565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114bf9061314e565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611536576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152d90613209565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611666576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165d90613297565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036116d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116cb90613325565b60405180910390fd5b8060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516117ae9190612cb5565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611829576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611820906133b3565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611897576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188e90613441565b60405180910390fd5b5f81116118d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118d0906134cf565b60405180910390fd5b6118e1610fbb565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561194f575061191f610fbb565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611d2857601560149054906101000a900460ff166119de57611970610fbb565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146119dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119d49061355d565b60405180910390fd5b5b601654811115611a23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a1a906135c5565b60405180910390fd5b60105f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611ac1575060105f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b611b00576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611af790613653565b60405180910390fd5b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611bac5760175481611b6184610b91565b611b6b919061369e565b10611bab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ba290613741565b60405180910390fd5b5b5f611bb630610b91565b90505f60185482101590506016548210611bd05760165491505b808015611be8575060158054906101000a900460ff16155b8015611c41575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611c595750601560169054906101000a900460ff165b8015611cac575060055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611cff575060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611d2557611d0d82612151565b5f4790505f811115611d2357611d224761207d565b5b505b50505b5f6001905060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680611dc8575060055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80611e79575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611e78575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611e86575f9050612009565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611f2f575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611f4757600854600c81905550600954600d819055505b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611ff0575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561200857600a54600c81905550600b54600d819055505b5b612015848484846123ba565b50505050565b5f838311158290612062576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120599190612b03565b60405180910390fd5b505f8385612070919061375f565b9050809150509392505050565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f193505050501580156120e1573d5f803e3d5ffd5b5050565b5f60065482111561212b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161212290613802565b60405180910390fd5b5f6121346123e7565b9050612149818461241090919063ffffffff16565b915050919050565b60016015806101000a81548160ff0219169083151502179055505f600267ffffffffffffffff81111561218757612186612e8d565b5b6040519080825280602002602001820160405280156121b55781602001602082028036833780820191505090505b50905030815f815181106121cc576121cb61316c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612270573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122949190613834565b816001815181106122a8576122a761316c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061230e3060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846115f8565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b815260040161237095949392919061394f565b5f604051808303815f87803b158015612387575f80fd5b505af1158015612399573d5f803e3d5ffd5b50505050505f6015806101000a81548160ff02191690831515021790555050565b806123c8576123c7612459565b5b6123d3848484612492565b806123e1576123e0612459565b5b50505050565b5f805f6123f2612652565b91509150612409818361241090919063ffffffff16565b9250505090565b5f61245183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506126ae565b905092915050565b5f600c5414801561246b57505f600d54145b61249057600c54600e81905550600d54600f819055505f600c819055505f600d819055505b565b5f805f805f806124a18761270f565b9550955095509550955095506124fd8660025f8c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461276f90919063ffffffff16565b60025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061258e8560025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546127b890919063ffffffff16565b60025f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506125d881612815565b6125e284836128cc565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161263f9190612cb5565b60405180910390a3505050505050505050565b5f805f60065490505f670de0b6b3a76400009050612683670de0b6b3a764000060065461241090919063ffffffff16565b8210156126a157600654670de0b6b3a76400009350935050506126aa565b81819350935050505b9091565b5f80831182906126f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126eb9190612b03565b60405180910390fd5b505f838561270291906139d4565b9050809150509392505050565b5f805f805f805f805f6127278a600c54600d54612906565b9250925092505f6127366123e7565b90505f805f6127478e878787612998565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b5f6127b083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061201b565b905092915050565b5f8082846127c6919061369e565b90508381101561280b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161280290613a4e565b60405180910390fd5b8091505092915050565b5f61281e6123e7565b90505f6128348284612a1c90919063ffffffff16565b90506128868160025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546127b890919063ffffffff16565b60025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505050565b6128e18260065461276f90919063ffffffff16565b6006819055506128fc816007546127b890919063ffffffff16565b6007819055505050565b5f805f806129306064612922888a612a1c90919063ffffffff16565b61241090919063ffffffff16565b90505f612959606461294b888b612a1c90919063ffffffff16565b61241090919063ffffffff16565b90505f61298182612973858c61276f90919063ffffffff16565b61276f90919063ffffffff16565b905080838395509550955050505093509350939050565b5f805f806129af8589612a1c90919063ffffffff16565b90505f6129c58689612a1c90919063ffffffff16565b90505f6129db8789612a1c90919063ffffffff16565b90505f612a03826129f5858761276f90919063ffffffff16565b61276f90919063ffffffff16565b9050838184965096509650505050509450945094915050565b5f808303612a2c575f9050612a8d565b5f8284612a399190613a6c565b9050828482612a4891906139d4565b14612a88576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a7f90613b1d565b60405180910390fd5b809150505b92915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f612ad582612a93565b612adf8185612a9d565b9350612aef818560208601612aad565b612af881612abb565b840191505092915050565b5f6020820190508181035f830152612b1b8184612acb565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612b5d82612b34565b9050919050565b612b6d81612b53565b8114612b77575f80fd5b50565b5f81359050612b8881612b64565b92915050565b5f819050919050565b612ba081612b8e565b8114612baa575f80fd5b50565b5f81359050612bbb81612b97565b92915050565b5f8060408385031215612bd757612bd6612b2c565b5b5f612be485828601612b7a565b9250506020612bf585828601612bad565b9150509250929050565b5f8115159050919050565b612c1381612bff565b82525050565b5f602082019050612c2c5f830184612c0a565b92915050565b5f819050919050565b5f612c55612c50612c4b84612b34565b612c32565b612b34565b9050919050565b5f612c6682612c3b565b9050919050565b5f612c7782612c5c565b9050919050565b612c8781612c6d565b82525050565b5f602082019050612ca05f830184612c7e565b92915050565b612caf81612b8e565b82525050565b5f602082019050612cc85f830184612ca6565b92915050565b5f805f60608486031215612ce557612ce4612b2c565b5b5f612cf286828701612b7a565b9350506020612d0386828701612b7a565b9250506040612d1486828701612bad565b9150509250925092565b5f60208284031215612d3357612d32612b2c565b5b5f612d4084828501612bad565b91505092915050565b5f60208284031215612d5e57612d5d612b2c565b5b5f612d6b84828501612b7a565b91505092915050565b5f60ff82169050919050565b612d8981612d74565b82525050565b5f602082019050612da25f830184612d80565b92915050565b612db181612b53565b82525050565b5f602082019050612dca5f830184612da8565b92915050565b612dd981612bff565b8114612de3575f80fd5b50565b5f81359050612df481612dd0565b92915050565b5f60208284031215612e0f57612e0e612b2c565b5b5f612e1c84828501612de6565b91505092915050565b5f805f8060808587031215612e3d57612e3c612b2c565b5b5f612e4a87828801612bad565b9450506020612e5b87828801612bad565b9350506040612e6c87828801612bad565b9250506060612e7d87828801612bad565b91505092959194509250565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612ec382612abb565b810181811067ffffffffffffffff82111715612ee257612ee1612e8d565b5b80604052505050565b5f612ef4612b23565b9050612f008282612eba565b919050565b5f67ffffffffffffffff821115612f1f57612f1e612e8d565b5b602082029050602081019050919050565b5f80fd5b5f612f46612f4184612f05565b612eeb565b90508083825260208201905060208402830185811115612f6957612f68612f30565b5b835b81811015612f925780612f7e8882612b7a565b845260208401935050602081019050612f6b565b5050509392505050565b5f82601f830112612fb057612faf612e89565b5b8135612fc0848260208601612f34565b91505092915050565b5f60208284031215612fde57612fdd612b2c565b5b5f82013567ffffffffffffffff811115612ffb57612ffa612b30565b5b61300784828501612f9c565b91505092915050565b5f80fd5b5f8083601f84011261302957613028612e89565b5b8235905067ffffffffffffffff81111561304657613045613010565b5b60208301915083602082028301111561306257613061612f30565b5b9250929050565b5f805f604084860312156130805761307f612b2c565b5b5f84013567ffffffffffffffff81111561309d5761309c612b30565b5b6130a986828701613014565b935093505060206130bc86828701612de6565b9150509250925092565b5f80604083850312156130dc576130db612b2c565b5b5f6130e985828601612b7a565b92505060206130fa85828601612b7a565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f613138602083612a9d565b915061314382613104565b602082019050919050565b5f6020820190508181035f8301526131658161312c565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f6131f3602683612a9d565b91506131fe82613199565b604082019050919050565b5f6020820190508181035f830152613220816131e7565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f613281602483612a9d565b915061328c82613227565b604082019050919050565b5f6020820190508181035f8301526132ae81613275565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f61330f602283612a9d565b915061331a826132b5565b604082019050919050565b5f6020820190508181035f83015261333c81613303565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f61339d602583612a9d565b91506133a882613343565b604082019050919050565b5f6020820190508181035f8301526133ca81613391565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f61342b602383612a9d565b9150613436826133d1565b604082019050919050565b5f6020820190508181035f8301526134588161341f565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f6134b9602983612a9d565b91506134c48261345f565b604082019050919050565b5f6020820190508181035f8301526134e6816134ad565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e64205f8201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b5f613547603f83612a9d565b9150613552826134ed565b604082019050919050565b5f6020820190508181035f8301526135748161353b565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d6974000000005f82015250565b5f6135af601c83612a9d565b91506135ba8261357b565b602082019050919050565b5f6020820190508181035f8301526135dc816135a3565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c6973745f8201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b5f61363d602383612a9d565b9150613648826135e3565b604082019050919050565b5f6020820190508181035f83015261366a81613631565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6136a882612b8e565b91506136b383612b8e565b92508282019050808211156136cb576136ca613671565b5b92915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073695f8201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b5f61372b602383612a9d565b9150613736826136d1565b604082019050919050565b5f6020820190508181035f8301526137588161371f565b9050919050565b5f61376982612b8e565b915061377483612b8e565b925082820390508181111561378c5761378b613671565b5b92915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c20725f8201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b5f6137ec602a83612a9d565b91506137f782613792565b604082019050919050565b5f6020820190508181035f830152613819816137e0565b9050919050565b5f8151905061382e81612b64565b92915050565b5f6020828403121561384957613848612b2c565b5b5f61385684828501613820565b91505092915050565b5f819050919050565b5f61388261387d6138788461385f565b612c32565b612b8e565b9050919050565b61389281613868565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6138ca81612b53565b82525050565b5f6138db83836138c1565b60208301905092915050565b5f602082019050919050565b5f6138fd82613898565b61390781856138a2565b9350613912836138b2565b805f5b8381101561394257815161392988826138d0565b9750613934836138e7565b925050600181019050613915565b5085935050505092915050565b5f60a0820190506139625f830188612ca6565b61396f6020830187613889565b818103604083015261398181866138f3565b90506139906060830185612da8565b61399d6080830184612ca6565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6139de82612b8e565b91506139e983612b8e565b9250826139f9576139f86139a7565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613a38601b83612a9d565b9150613a4382613a04565b602082019050919050565b5f6020820190508181035f830152613a6581613a2c565b9050919050565b5f613a7682612b8e565b9150613a8183612b8e565b9250828202613a8f81612b8e565b91508282048414831517613aa657613aa5613671565b5b5092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f613b07602183612a9d565b9150613b1282613aad565b604082019050919050565b5f6020820190508181035f830152613b3481613afb565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212201c7169df4eefae04e1c6dc31eee96c066290e366eff5b8bf9cc3f8d78aeca8ee64736f6c634300081a0033

Deployed Bytecode Sourcemap

4181:13495:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6708:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7633:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5549:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6985:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7834:446;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17330:109;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12637:238;;;;;;;;;;;;;:::i;:::-;;13058:88;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5854:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6894:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5597:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17079:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7088:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16549:294;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1668:148;;;;;;;;;;;;;:::i;:::-;;12883:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5746:46;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5291:43;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17219:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1454:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17447:224;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5799:48;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6799:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7234:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5253:36;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12393:236;;;;;;;;;;;;;:::i;:::-;;12283:102;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7441:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16895:132;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1824:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6708:83;6745:13;6778:5;;;;;;;;;;;;;;;;;6771:12;;6708:83;:::o;7633:193::-;7735:4;7757:39;7766:12;:10;:12::i;:::-;7780:7;7789:6;7757:8;:39::i;:::-;7814:4;7807:11;;7633:193;;;;:::o;5549:41::-;;;;;;;;;;;;;:::o;6985:95::-;7038:7;4752:18;7058:14;;6985:95;:::o;7834:446::-;7966:4;7983:36;7993:6;8001:9;8012:6;7983:9;:36::i;:::-;8030:220;8053:6;8074:12;:10;:12::i;:::-;8101:138;8157:6;8101:138;;;;;;;;;;;;;;;;;:11;:19;8113:6;8101:19;;;;;;;;;;;;;;;:33;8121:12;:10;:12::i;:::-;8101:33;;;;;;;;;;;;;;;;:37;;:138;;;;;:::i;:::-;8030:8;:220::i;:::-;8268:4;8261:11;;7834:446;;;;;:::o;17330:109::-;1591:12;:10;:12::i;:::-;1581:22;;:6;;;;;;;;;;:22;;;1573:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17418:13:::1;17401:14;:30;;;;17330:109:::0;:::o;12637:238::-;12706:19;;;;;;;;;;;12690:35;;:12;:10;:12::i;:::-;:35;;;:72;;;;12745:17;;;;;;;;;;;12729:33;;:12;:10;:12::i;:::-;:33;;;12690:72;12682:81;;;;;;12774:26;12803:21;12774:50;;12835:32;12848:18;12835:12;:32::i;:::-;12671:204;12637:238::o;13058:88::-;1591:12;:10;:12::i;:::-;1581:22;;:6;;;;;;;;;;:22;;;1573:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13133:5:::1;13118:4;:12;13123:6;13118:12;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;13058:88:::0;:::o;5854:53::-;;;;:::o;6894:83::-;6935:5;4425:1;6953:16;;6894:83;:::o;5597:28::-;;;;;;;;;;;;;:::o;17079:101::-;1591:12;:10;:12::i;:::-;1581:22;;:6;;;;;;;;;;:22;;;1573:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17160:12:::1;17146:11;;:26;;;;;;;;;;;;;;;;;;17079:101:::0;:::o;7088:138::-;7154:7;7181:37;7201:7;:16;7209:7;7201:16;;;;;;;;;;;;;;;;7181:19;:37::i;:::-;7174:44;;7088:138;;;:::o;16549:294::-;1591:12;:10;:12::i;:::-;1581:22;;:6;;;;;;;;;;:22;;;1573:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16703:13:::1;16686:14;:30;;;;16745:14;16727:15;:32;;;;16785:11;16770:12;:26;;;;16823:12;16807:13;:28;;;;16549:294:::0;;;;:::o;1668:148::-;1591:12;:10;:12::i;:::-;1581:22;;:6;;;;;;;;;;:22;;;1573:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1775:1:::1;1738:40;;1759:6;::::0;::::1;;;;;;;;1738:40;;;;;;;;;;;;1806:1;1789:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;1668:148::o:0;12883:167::-;1591:12;:10;:12::i;:::-;1581:22;;:6;;;;;;;;;;:22;;;1573:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12957:9:::1;12952:91;12976:5;:12;12972:1;:16;12952:91;;;13027:4;13010;:14;13015:5;13021:1;13015:8;;;;;;;;:::i;:::-;;;;;;;;13010:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;12990:3;;;;;;;12952:91;;;;12883:167:::0;:::o;5746:46::-;;;;:::o;5291:43::-;;;;;;;;;;;;;;;;;:::o;17219:103::-;1591:12;:10;:12::i;:::-;1581:22;;:6;;;;;;;;;;:22;;;1573:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17303:11:::1;17288:12;:26;;;;17219:103:::0;:::o;1454:79::-;1492:7;1519:6;;;;;;;;;;;1512:13;;1454:79;:::o;17447:224::-;1591:12;:10;:12::i;:::-;1581:22;;:6;;;;;;;;;;:22;;;1573:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17554:9:::1;17550:114;17573:8;;:15;;17569:1;:19;17550:114;;;17644:8;17610:18;:31;17629:8;;17638:1;17629:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;17610:31;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;17590:3;;;;;;;17550:114;;;;17447:224:::0;;;:::o;5799:48::-;;;;:::o;6799:87::-;6838:13;6871:7;;;;;;;;;;;;;;;;;6864:14;;6799:87;:::o;7234:199::-;7339:4;7361:42;7371:12;:10;:12::i;:::-;7385:9;7396:6;7361:9;:42::i;:::-;7421:4;7414:11;;7234:199;;;;:::o;5253:36::-;;;;;;;;;;;;;;;;;;;;;;:::o;12393:236::-;12459:19;;;;;;;;;;;12443:35;;:12;:10;:12::i;:::-;:35;;;:72;;;;12498:17;;;;;;;;;;;12482:33;;:12;:10;:12::i;:::-;:33;;;12443:72;12435:81;;;;;;12527:23;12553:24;12571:4;12553:9;:24::i;:::-;12527:50;;12588:33;12605:15;12588:16;:33::i;:::-;12424:205;12393:236::o;12283:102::-;1591:12;:10;:12::i;:::-;1581:22;;:6;;;;;;;;;;:22;;;1573:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12365:12:::1;12351:11;;:26;;;;;;;;;;;;;;;;;;12283:102:::0;:::o;7441:184::-;7558:7;7590:11;:18;7602:5;7590:18;;;;;;;;;;;;;;;:27;7609:7;7590:27;;;;;;;;;;;;;;;;7583:34;;7441:184;;;;:::o;16895:132::-;1591:12;:10;:12::i;:::-;1581:22;;:6;;;;;;;;;;:22;;;1573:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17001:18:::1;16979:19;:40;;;;16895:132:::0;:::o;1824:244::-;1591:12;:10;:12::i;:::-;1581:22;;:6;;;;;;;;;;:22;;;1573:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1933:1:::1;1913:22;;:8;:22;;::::0;1905:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;2023:8;1994:38;;2015:6;::::0;::::1;;;;;;;;1994:38;;;;;;;;;;;;2052:8;2043:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;1824:244:::0;:::o;213:98::-;266:7;293:10;286:17;;213:98;:::o;8970:369::-;9114:1;9097:19;;:5;:19;;;9089:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9195:1;9176:21;;:7;:21;;;9168:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9277:6;9247:11;:18;9259:5;9247:18;;;;;;;;;;;;;;;:27;9266:7;9247:27;;;;;;;;;;;;;;;:36;;;;9315:7;9299:32;;9308:5;9299:32;;;9324:6;9299:32;;;;;;:::i;:::-;;;;;;;;8970:369;;;:::o;9347:2330::-;9485:1;9469:18;;:4;:18;;;9461:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9562:1;9548:16;;:2;:16;;;9540:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9632:1;9623:6;:10;9615:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9704:7;:5;:7::i;:::-;9696:15;;:4;:15;;;;:32;;;;;9721:7;:5;:7::i;:::-;9715:13;;:2;:13;;;;9696:32;9692:1259;;;9785:11;;;;;;;;;;;9780:144;;9833:7;:5;:7::i;:::-;9825:15;;:4;:15;;;9817:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;9780:144;9958:12;;9948:6;:22;;9940:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;10027:4;:10;10032:4;10027:10;;;;;;;;;;;;;;;;;;;;;;;;;10026:11;:24;;;;;10042:4;:8;10047:2;10042:8;;;;;;;;;;;;;;;;;;;;;;;;;10041:9;10026:24;10018:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;10116:13;;;;;;;;;;;10110:19;;:2;:19;;;10107:146;;10183:14;;10174:6;10158:13;10168:2;10158:9;:13::i;:::-;:22;;;;:::i;:::-;:39;10150:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;10107:146;10269:28;10300:24;10318:4;10300:9;:24::i;:::-;10269:55;;10339:12;10378:19;;10354:20;:43;;10339:58;;10441:12;;10417:20;:36;10414:124;;10510:12;;10487:35;;10414:124;10558:7;:18;;;;;10570:6;;;;;;;;;;10569:7;10558:18;:43;;;;;10588:13;;;;;;;;;;;10580:21;;:4;:21;;;;10558:43;:58;;;;;10605:11;;;;;;;;;;;10558:58;:87;;;;;10621:18;:24;10640:4;10621:24;;;;;;;;;;;;;;;;;;;;;;;;;10620:25;10558:87;:114;;;;;10650:18;:22;10669:2;10650:22;;;;;;;;;;;;;;;;;;;;;;;;;10649:23;10558:114;10554:386;;;10693:38;10710:20;10693:16;:38::i;:::-;10750:26;10779:21;10750:50;;10844:1;10823:18;:22;10819:106;;;10870:35;10883:21;10870:12;:35::i;:::-;10819:106;10674:266;10554:386;9730:1221;;9692:1259;10963:12;10978:4;10963:19;;11027:18;:24;11046:4;11027:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;11055:18;:22;11074:2;11055:22;;;;;;;;;;;;;;;;;;;;;;;;;11027:50;11026:102;;;;11091:13;;;;;;;;;;;11083:21;;:4;:21;;;;:44;;;;;11114:13;;;;;;;;;;;11108:19;;:2;:19;;;;11083:44;11026:102;11022:594;;;11155:5;11145:15;;11022:594;;;11238:13;;;;;;;;;;;11230:21;;:4;:21;;;:55;;;;;11269:15;;;;;;;;;;;11255:30;;:2;:30;;;;11230:55;11227:162;;;11318:14;;11306:9;:26;;;;11361:12;;11351:7;:22;;;;11227:162;11448:13;;;;;;;;;;;11442:19;;:2;:19;;;:55;;;;;11481:15;;;;;;;;;;;11465:32;;:4;:32;;;;11442:55;11438:165;;;11530:15;;11518:9;:27;;;;11574:13;;11564:7;:23;;;;11438:165;11022:594;11628:41;11643:4;11649:2;11653:6;11661:7;11628:14;:41::i;:::-;9450:2227;9347:2330;;;:::o;2432:224::-;2552:7;2585:1;2580;:6;;2588:12;2572:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2612:9;2628:1;2624;:5;;;;:::i;:::-;2612:17;;2647:1;2640:8;;;2432:224;;;;;:::o;12176:99::-;12233:17;;;;;;;;;;;:26;;:34;12260:6;12233:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12176:99;:::o;8288:323::-;8383:7;8441;;8430;:18;;8408:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;8529:19;8551:10;:8;:10::i;:::-;8529:32;;8579:24;8591:11;8579:7;:11;;:24;;;;:::i;:::-;8572:31;;;8288:323;;;:::o;11685:483::-;6009:4;6000:6;;:13;;;;;;;;;;;;;;;;;;11763:21:::1;11801:1;11787:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11763:40;;11832:4;11814;11819:1;11814:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;11858:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11848:4;11853:1;11848:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;11891:62;11908:4;11923:15;;;;;;;;;;;11941:11;11891:8;:62::i;:::-;11964:15;;;;;;;;;;;:66;;;12045:11;12071:1;12087:4;12114;12134:15;11964:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11752:416;6045:5:::0;6036:6;;:14;;;;;;;;;;;;;;;;;;11685:483;:::o;13154:279::-;13310:7;13305:27;;13319:13;:11;:13::i;:::-;13305:27;13343:44;13361:6;13369:9;13380:6;13343:17;:44::i;:::-;13403:7;13398:27;;13412:13;:11;:13::i;:::-;13398:27;13154:279;;;;:::o;16112:164::-;16154:7;16175:15;16192;16211:19;:17;:19::i;:::-;16174:56;;;;16248:20;16260:7;16248;:11;;:20;;;;:::i;:::-;16241:27;;;;16112:164;:::o;2918:132::-;2976:7;3003:39;3007:1;3010;3003:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2996:46;;2918:132;;;;:::o;8619:218::-;8678:1;8665:9;;:14;:30;;;;;8694:1;8683:7;;:12;8665:30;8697:7;8661:43;8736:9;;8716:17;:29;;;;8774:7;;8756:15;:25;;;;8806:1;8794:9;:13;;;;8828:1;8818:7;:11;;;;8619:218;:::o;13441:610::-;13588:15;13618:23;13656:12;13683:23;13721:12;13748:13;13775:19;13786:7;13775:10;:19::i;:::-;13573:221;;;;;;;;;;;;13823:28;13843:7;13823;:15;13831:6;13823:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;13805:7;:15;13813:6;13805:15;;;;;;;;;;;;;;;:46;;;;13883:39;13906:15;13883:7;:18;13891:9;13883:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;13862:7;:18;13870:9;13862:18;;;;;;;;;;;;;;;:60;;;;13933:16;13943:5;13933:9;:16::i;:::-;13960:23;13972:4;13978;13960:11;:23::i;:::-;14016:9;13999:44;;14008:6;13999:44;;;14027:15;13999:44;;;;;;:::i;:::-;;;;;;;;13562:489;;;;;;13441:610;;;:::o;16284:257::-;16335:7;16344;16364:15;16382:7;;16364:25;;16400:15;4752:18;16400:25;;16450:20;4752:18;16450:7;;:11;;:20;;;;:::i;:::-;16440:7;:30;16436:61;;;16480:7;;4752:18;16472:25;;;;;;;;16436:61;16516:7;16525;16508:25;;;;;;16284:257;;;:::o;3058:223::-;3178:7;3210:1;3206;:5;3213:12;3198:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3237:9;3253:1;3249;:5;;;;:::i;:::-;3237:17;;3272:1;3265:8;;;3058:223;;;;;:::o;14470:615::-;14570:7;14592;14614;14636;14658;14680;14716:23;14741:12;14755:13;14785:40;14797:7;14806:9;;14817:7;;14785:11;:40::i;:::-;14715:110;;;;;;14836:19;14858:10;:8;:10::i;:::-;14836:32;;14880:15;14897:23;14922:12;14951:46;14963:7;14972:4;14978:5;14985:11;14951;:46::i;:::-;14879:118;;;;;;15016:7;15025:15;15042:4;15048:15;15065:4;15071:5;15008:69;;;;;;;;;;;;;;;;;;;14470:615;;;;;;;:::o;2288:136::-;2346:7;2373:43;2377:1;2380;2373:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2366:50;;2288:136;;;;:::o;2101:179::-;2159:7;2179:9;2195:1;2191;:5;;;;:::i;:::-;2179:17;;2220:1;2215;:6;;2207:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;2271:1;2264:8;;;2101:179;;;;:::o;14059:211::-;14112:19;14134:10;:8;:10::i;:::-;14112:32;;14155:13;14171:22;14181:11;14171:5;:9;;:22;;;;:::i;:::-;14155:38;;14229:33;14256:5;14229:7;:22;14245:4;14229:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;14204:7;:22;14220:4;14204:22;;;;;;;;;;;;;;;:58;;;;14101:169;;14059:211;:::o;14278:147::-;14356:17;14368:4;14356:7;;:11;;:17;;;;:::i;:::-;14346:7;:27;;;;14397:20;14412:4;14397:10;;:14;;:20;;;;:::i;:::-;14384:10;:33;;;;14278:147;;:::o;15093:469::-;15262:7;15284;15306;15341:12;15356:30;15382:3;15356:21;15368:8;15356:7;:11;;:21;;;;:::i;:::-;:25;;:30;;;;:::i;:::-;15341:45;;15397:13;15413:28;15437:3;15413:19;15425:6;15413:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;15397:44;;15452:23;15478:28;15500:5;15478:17;15490:4;15478:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;15452:54;;15525:15;15542:4;15548:5;15517:37;;;;;;;;;15093:469;;;;;;;:::o;15570:534::-;15764:7;15786;15808;15843:15;15861:24;15873:11;15861:7;:11;;:24;;;;:::i;:::-;15843:42;;15896:12;15911:21;15920:11;15911:4;:8;;:21;;;;:::i;:::-;15896:36;;15943:13;15959:22;15969:11;15959:5;:9;;:22;;;;:::i;:::-;15943:38;;15992:23;16018:28;16040:5;16018:17;16030:4;16018:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;15992:54;;16065:7;16074:15;16091:4;16057:39;;;;;;;;;;15570:534;;;;;;;;:::o;2664:246::-;2722:7;2751:1;2746;:6;2742:47;;2776:1;2769:8;;;;2742:47;2799:9;2815:1;2811;:5;;;;:::i;:::-;2799:17;;2844:1;2839;2835;:5;;;;:::i;:::-;:10;2827:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2901:1;2894:8;;;2664:246;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:139::-;376:6;371:3;366;360:23;417:1;408:6;403:3;399:16;392:27;287:139;;;:::o;432:102::-;473:6;524:2;520:7;515:2;508:5;504:14;500:28;490:38;;432:102;;;:::o;540:377::-;628:3;656:39;689:5;656:39;:::i;:::-;711:71;775:6;770:3;711:71;:::i;:::-;704:78;;791:65;849:6;844:3;837:4;830:5;826:16;791:65;:::i;:::-;881:29;903:6;881:29;:::i;:::-;876:3;872:39;865:46;;632:285;540:377;;;;:::o;923:313::-;1036:4;1074:2;1063:9;1059:18;1051:26;;1123:9;1117:4;1113:20;1109:1;1098:9;1094:17;1087:47;1151:78;1224:4;1215:6;1151:78;:::i;:::-;1143:86;;923:313;;;;:::o;1242:75::-;1275:6;1308:2;1302:9;1292:19;;1242:75;:::o;1323:117::-;1432:1;1429;1422:12;1446:117;1555:1;1552;1545:12;1569:126;1606:7;1646:42;1639:5;1635:54;1624:65;;1569:126;;;:::o;1701:96::-;1738:7;1767:24;1785:5;1767:24;:::i;:::-;1756:35;;1701:96;;;:::o;1803:122::-;1876:24;1894:5;1876:24;:::i;:::-;1869:5;1866:35;1856:63;;1915:1;1912;1905:12;1856:63;1803:122;:::o;1931:139::-;1977:5;2015:6;2002:20;1993:29;;2031:33;2058:5;2031:33;:::i;:::-;1931:139;;;;:::o;2076:77::-;2113:7;2142:5;2131:16;;2076:77;;;:::o;2159:122::-;2232:24;2250:5;2232:24;:::i;:::-;2225:5;2222:35;2212:63;;2271:1;2268;2261:12;2212:63;2159:122;:::o;2287:139::-;2333:5;2371:6;2358:20;2349:29;;2387:33;2414:5;2387:33;:::i;:::-;2287:139;;;;:::o;2432:474::-;2500:6;2508;2557:2;2545:9;2536:7;2532:23;2528:32;2525:119;;;2563:79;;:::i;:::-;2525:119;2683:1;2708:53;2753:7;2744:6;2733:9;2729:22;2708:53;:::i;:::-;2698:63;;2654:117;2810:2;2836:53;2881:7;2872:6;2861:9;2857:22;2836:53;:::i;:::-;2826:63;;2781:118;2432:474;;;;;:::o;2912:90::-;2946:7;2989:5;2982:13;2975:21;2964:32;;2912:90;;;:::o;3008:109::-;3089:21;3104:5;3089:21;:::i;:::-;3084:3;3077:34;3008:109;;:::o;3123:210::-;3210:4;3248:2;3237:9;3233:18;3225:26;;3261:65;3323:1;3312:9;3308:17;3299:6;3261:65;:::i;:::-;3123:210;;;;:::o;3339:60::-;3367:3;3388:5;3381:12;;3339:60;;;:::o;3405:142::-;3455:9;3488:53;3506:34;3515:24;3533:5;3515:24;:::i;:::-;3506:34;:::i;:::-;3488:53;:::i;:::-;3475:66;;3405:142;;;:::o;3553:126::-;3603:9;3636:37;3667:5;3636:37;:::i;:::-;3623:50;;3553:126;;;:::o;3685:152::-;3761:9;3794:37;3825:5;3794:37;:::i;:::-;3781:50;;3685:152;;;:::o;3843:183::-;3956:63;4013:5;3956:63;:::i;:::-;3951:3;3944:76;3843:183;;:::o;4032:274::-;4151:4;4189:2;4178:9;4174:18;4166:26;;4202:97;4296:1;4285:9;4281:17;4272:6;4202:97;:::i;:::-;4032:274;;;;:::o;4312:118::-;4399:24;4417:5;4399:24;:::i;:::-;4394:3;4387:37;4312:118;;:::o;4436:222::-;4529:4;4567:2;4556:9;4552:18;4544:26;;4580:71;4648:1;4637:9;4633:17;4624:6;4580:71;:::i;:::-;4436:222;;;;:::o;4664:619::-;4741:6;4749;4757;4806:2;4794:9;4785:7;4781:23;4777:32;4774:119;;;4812:79;;:::i;:::-;4774:119;4932:1;4957:53;5002:7;4993:6;4982:9;4978:22;4957:53;:::i;:::-;4947:63;;4903:117;5059:2;5085:53;5130:7;5121:6;5110:9;5106:22;5085:53;:::i;:::-;5075:63;;5030:118;5187:2;5213:53;5258:7;5249:6;5238:9;5234:22;5213:53;:::i;:::-;5203:63;;5158:118;4664:619;;;;;:::o;5289:329::-;5348:6;5397:2;5385:9;5376:7;5372:23;5368:32;5365:119;;;5403:79;;:::i;:::-;5365:119;5523:1;5548:53;5593:7;5584:6;5573:9;5569:22;5548:53;:::i;:::-;5538:63;;5494:117;5289:329;;;;:::o;5624:::-;5683:6;5732:2;5720:9;5711:7;5707:23;5703:32;5700:119;;;5738:79;;:::i;:::-;5700:119;5858:1;5883:53;5928:7;5919:6;5908:9;5904:22;5883:53;:::i;:::-;5873:63;;5829:117;5624:329;;;;:::o;5959:86::-;5994:7;6034:4;6027:5;6023:16;6012:27;;5959:86;;;:::o;6051:112::-;6134:22;6150:5;6134:22;:::i;:::-;6129:3;6122:35;6051:112;;:::o;6169:214::-;6258:4;6296:2;6285:9;6281:18;6273:26;;6309:67;6373:1;6362:9;6358:17;6349:6;6309:67;:::i;:::-;6169:214;;;;:::o;6389:118::-;6476:24;6494:5;6476:24;:::i;:::-;6471:3;6464:37;6389:118;;:::o;6513:222::-;6606:4;6644:2;6633:9;6629:18;6621:26;;6657:71;6725:1;6714:9;6710:17;6701:6;6657:71;:::i;:::-;6513:222;;;;:::o;6741:116::-;6811:21;6826:5;6811:21;:::i;:::-;6804:5;6801:32;6791:60;;6847:1;6844;6837:12;6791:60;6741:116;:::o;6863:133::-;6906:5;6944:6;6931:20;6922:29;;6960:30;6984:5;6960:30;:::i;:::-;6863:133;;;;:::o;7002:323::-;7058:6;7107:2;7095:9;7086:7;7082:23;7078:32;7075:119;;;7113:79;;:::i;:::-;7075:119;7233:1;7258:50;7300:7;7291:6;7280:9;7276:22;7258:50;:::i;:::-;7248:60;;7204:114;7002:323;;;;:::o;7331:765::-;7417:6;7425;7433;7441;7490:3;7478:9;7469:7;7465:23;7461:33;7458:120;;;7497:79;;:::i;:::-;7458:120;7617:1;7642:53;7687:7;7678:6;7667:9;7663:22;7642:53;:::i;:::-;7632:63;;7588:117;7744:2;7770:53;7815:7;7806:6;7795:9;7791:22;7770:53;:::i;:::-;7760:63;;7715:118;7872:2;7898:53;7943:7;7934:6;7923:9;7919:22;7898:53;:::i;:::-;7888:63;;7843:118;8000:2;8026:53;8071:7;8062:6;8051:9;8047:22;8026:53;:::i;:::-;8016:63;;7971:118;7331:765;;;;;;;:::o;8102:117::-;8211:1;8208;8201:12;8225:180;8273:77;8270:1;8263:88;8370:4;8367:1;8360:15;8394:4;8391:1;8384:15;8411:281;8494:27;8516:4;8494:27;:::i;:::-;8486:6;8482:40;8624:6;8612:10;8609:22;8588:18;8576:10;8573:34;8570:62;8567:88;;;8635:18;;:::i;:::-;8567:88;8675:10;8671:2;8664:22;8454:238;8411:281;;:::o;8698:129::-;8732:6;8759:20;;:::i;:::-;8749:30;;8788:33;8816:4;8808:6;8788:33;:::i;:::-;8698:129;;;:::o;8833:311::-;8910:4;9000:18;8992:6;8989:30;8986:56;;;9022:18;;:::i;:::-;8986:56;9072:4;9064:6;9060:17;9052:25;;9132:4;9126;9122:15;9114:23;;8833:311;;;:::o;9150:117::-;9259:1;9256;9249:12;9290:710;9386:5;9411:81;9427:64;9484:6;9427:64;:::i;:::-;9411:81;:::i;:::-;9402:90;;9512:5;9541:6;9534:5;9527:21;9575:4;9568:5;9564:16;9557:23;;9628:4;9620:6;9616:17;9608:6;9604:30;9657:3;9649:6;9646:15;9643:122;;;9676:79;;:::i;:::-;9643:122;9791:6;9774:220;9808:6;9803:3;9800:15;9774:220;;;9883:3;9912:37;9945:3;9933:10;9912:37;:::i;:::-;9907:3;9900:50;9979:4;9974:3;9970:14;9963:21;;9850:144;9834:4;9829:3;9825:14;9818:21;;9774:220;;;9778:21;9392:608;;9290:710;;;;;:::o;10023:370::-;10094:5;10143:3;10136:4;10128:6;10124:17;10120:27;10110:122;;10151:79;;:::i;:::-;10110:122;10268:6;10255:20;10293:94;10383:3;10375:6;10368:4;10360:6;10356:17;10293:94;:::i;:::-;10284:103;;10100:293;10023:370;;;;:::o;10399:539::-;10483:6;10532:2;10520:9;10511:7;10507:23;10503:32;10500:119;;;10538:79;;:::i;:::-;10500:119;10686:1;10675:9;10671:17;10658:31;10716:18;10708:6;10705:30;10702:117;;;10738:79;;:::i;:::-;10702:117;10843:78;10913:7;10904:6;10893:9;10889:22;10843:78;:::i;:::-;10833:88;;10629:302;10399:539;;;;:::o;10944:117::-;11053:1;11050;11043:12;11084:568;11157:8;11167:6;11217:3;11210:4;11202:6;11198:17;11194:27;11184:122;;11225:79;;:::i;:::-;11184:122;11338:6;11325:20;11315:30;;11368:18;11360:6;11357:30;11354:117;;;11390:79;;:::i;:::-;11354:117;11504:4;11496:6;11492:17;11480:29;;11558:3;11550:4;11542:6;11538:17;11528:8;11524:32;11521:41;11518:128;;;11565:79;;:::i;:::-;11518:128;11084:568;;;;;:::o;11658:698::-;11750:6;11758;11766;11815:2;11803:9;11794:7;11790:23;11786:32;11783:119;;;11821:79;;:::i;:::-;11783:119;11969:1;11958:9;11954:17;11941:31;11999:18;11991:6;11988:30;11985:117;;;12021:79;;:::i;:::-;11985:117;12134:80;12206:7;12197:6;12186:9;12182:22;12134:80;:::i;:::-;12116:98;;;;11912:312;12263:2;12289:50;12331:7;12322:6;12311:9;12307:22;12289:50;:::i;:::-;12279:60;;12234:115;11658:698;;;;;:::o;12362:474::-;12430:6;12438;12487:2;12475:9;12466:7;12462:23;12458:32;12455:119;;;12493:79;;:::i;:::-;12455:119;12613:1;12638:53;12683:7;12674:6;12663:9;12659:22;12638:53;:::i;:::-;12628:63;;12584:117;12740:2;12766:53;12811:7;12802:6;12791:9;12787:22;12766:53;:::i;:::-;12756:63;;12711:118;12362:474;;;;;:::o;12842:182::-;12982:34;12978:1;12970:6;12966:14;12959:58;12842:182;:::o;13030:366::-;13172:3;13193:67;13257:2;13252:3;13193:67;:::i;:::-;13186:74;;13269:93;13358:3;13269:93;:::i;:::-;13387:2;13382:3;13378:12;13371:19;;13030:366;;;:::o;13402:419::-;13568:4;13606:2;13595:9;13591:18;13583:26;;13655:9;13649:4;13645:20;13641:1;13630:9;13626:17;13619:47;13683:131;13809:4;13683:131;:::i;:::-;13675:139;;13402:419;;;:::o;13827:180::-;13875:77;13872:1;13865:88;13972:4;13969:1;13962:15;13996:4;13993:1;13986:15;14013:225;14153:34;14149:1;14141:6;14137:14;14130:58;14222:8;14217:2;14209:6;14205:15;14198:33;14013:225;:::o;14244:366::-;14386:3;14407:67;14471:2;14466:3;14407:67;:::i;:::-;14400:74;;14483:93;14572:3;14483:93;:::i;:::-;14601:2;14596:3;14592:12;14585:19;;14244:366;;;:::o;14616:419::-;14782:4;14820:2;14809:9;14805:18;14797:26;;14869:9;14863:4;14859:20;14855:1;14844:9;14840:17;14833:47;14897:131;15023:4;14897:131;:::i;:::-;14889:139;;14616:419;;;:::o;15041:223::-;15181:34;15177:1;15169:6;15165:14;15158:58;15250:6;15245:2;15237:6;15233:15;15226:31;15041:223;:::o;15270:366::-;15412:3;15433:67;15497:2;15492:3;15433:67;:::i;:::-;15426:74;;15509:93;15598:3;15509:93;:::i;:::-;15627:2;15622:3;15618:12;15611:19;;15270:366;;;:::o;15642:419::-;15808:4;15846:2;15835:9;15831:18;15823:26;;15895:9;15889:4;15885:20;15881:1;15870:9;15866:17;15859:47;15923:131;16049:4;15923:131;:::i;:::-;15915:139;;15642:419;;;:::o;16067:221::-;16207:34;16203:1;16195:6;16191:14;16184:58;16276:4;16271:2;16263:6;16259:15;16252:29;16067:221;:::o;16294:366::-;16436:3;16457:67;16521:2;16516:3;16457:67;:::i;:::-;16450:74;;16533:93;16622:3;16533:93;:::i;:::-;16651:2;16646:3;16642:12;16635:19;;16294:366;;;:::o;16666:419::-;16832:4;16870:2;16859:9;16855:18;16847:26;;16919:9;16913:4;16909:20;16905:1;16894:9;16890:17;16883:47;16947:131;17073:4;16947:131;:::i;:::-;16939:139;;16666:419;;;:::o;17091:224::-;17231:34;17227:1;17219:6;17215:14;17208:58;17300:7;17295:2;17287:6;17283:15;17276:32;17091:224;:::o;17321:366::-;17463:3;17484:67;17548:2;17543:3;17484:67;:::i;:::-;17477:74;;17560:93;17649:3;17560:93;:::i;:::-;17678:2;17673:3;17669:12;17662:19;;17321:366;;;:::o;17693:419::-;17859:4;17897:2;17886:9;17882:18;17874:26;;17946:9;17940:4;17936:20;17932:1;17921:9;17917:17;17910:47;17974:131;18100:4;17974:131;:::i;:::-;17966:139;;17693:419;;;:::o;18118:222::-;18258:34;18254:1;18246:6;18242:14;18235:58;18327:5;18322:2;18314:6;18310:15;18303:30;18118:222;:::o;18346:366::-;18488:3;18509:67;18573:2;18568:3;18509:67;:::i;:::-;18502:74;;18585:93;18674:3;18585:93;:::i;:::-;18703:2;18698:3;18694:12;18687:19;;18346:366;;;:::o;18718:419::-;18884:4;18922:2;18911:9;18907:18;18899:26;;18971:9;18965:4;18961:20;18957:1;18946:9;18942:17;18935:47;18999:131;19125:4;18999:131;:::i;:::-;18991:139;;18718:419;;;:::o;19143:228::-;19283:34;19279:1;19271:6;19267:14;19260:58;19352:11;19347:2;19339:6;19335:15;19328:36;19143:228;:::o;19377:366::-;19519:3;19540:67;19604:2;19599:3;19540:67;:::i;:::-;19533:74;;19616:93;19705:3;19616:93;:::i;:::-;19734:2;19729:3;19725:12;19718:19;;19377:366;;;:::o;19749:419::-;19915:4;19953:2;19942:9;19938:18;19930:26;;20002:9;19996:4;19992:20;19988:1;19977:9;19973:17;19966:47;20030:131;20156:4;20030:131;:::i;:::-;20022:139;;19749:419;;;:::o;20174:250::-;20314:34;20310:1;20302:6;20298:14;20291:58;20383:33;20378:2;20370:6;20366:15;20359:58;20174:250;:::o;20430:366::-;20572:3;20593:67;20657:2;20652:3;20593:67;:::i;:::-;20586:74;;20669:93;20758:3;20669:93;:::i;:::-;20787:2;20782:3;20778:12;20771:19;;20430:366;;;:::o;20802:419::-;20968:4;21006:2;20995:9;20991:18;20983:26;;21055:9;21049:4;21045:20;21041:1;21030:9;21026:17;21019:47;21083:131;21209:4;21083:131;:::i;:::-;21075:139;;20802:419;;;:::o;21227:178::-;21367:30;21363:1;21355:6;21351:14;21344:54;21227:178;:::o;21411:366::-;21553:3;21574:67;21638:2;21633:3;21574:67;:::i;:::-;21567:74;;21650:93;21739:3;21650:93;:::i;:::-;21768:2;21763:3;21759:12;21752:19;;21411:366;;;:::o;21783:419::-;21949:4;21987:2;21976:9;21972:18;21964:26;;22036:9;22030:4;22026:20;22022:1;22011:9;22007:17;22000:47;22064:131;22190:4;22064:131;:::i;:::-;22056:139;;21783:419;;;:::o;22208:222::-;22348:34;22344:1;22336:6;22332:14;22325:58;22417:5;22412:2;22404:6;22400:15;22393:30;22208:222;:::o;22436:366::-;22578:3;22599:67;22663:2;22658:3;22599:67;:::i;:::-;22592:74;;22675:93;22764:3;22675:93;:::i;:::-;22793:2;22788:3;22784:12;22777:19;;22436:366;;;:::o;22808:419::-;22974:4;23012:2;23001:9;22997:18;22989:26;;23061:9;23055:4;23051:20;23047:1;23036:9;23032:17;23025:47;23089:131;23215:4;23089:131;:::i;:::-;23081:139;;22808:419;;;:::o;23233:180::-;23281:77;23278:1;23271:88;23378:4;23375:1;23368:15;23402:4;23399:1;23392:15;23419:191;23459:3;23478:20;23496:1;23478:20;:::i;:::-;23473:25;;23512:20;23530:1;23512:20;:::i;:::-;23507:25;;23555:1;23552;23548:9;23541:16;;23576:3;23573:1;23570:10;23567:36;;;23583:18;;:::i;:::-;23567:36;23419:191;;;;:::o;23616:222::-;23756:34;23752:1;23744:6;23740:14;23733:58;23825:5;23820:2;23812:6;23808:15;23801:30;23616:222;:::o;23844:366::-;23986:3;24007:67;24071:2;24066:3;24007:67;:::i;:::-;24000:74;;24083:93;24172:3;24083:93;:::i;:::-;24201:2;24196:3;24192:12;24185:19;;23844:366;;;:::o;24216:419::-;24382:4;24420:2;24409:9;24405:18;24397:26;;24469:9;24463:4;24459:20;24455:1;24444:9;24440:17;24433:47;24497:131;24623:4;24497:131;:::i;:::-;24489:139;;24216:419;;;:::o;24641:194::-;24681:4;24701:20;24719:1;24701:20;:::i;:::-;24696:25;;24735:20;24753:1;24735:20;:::i;:::-;24730:25;;24779:1;24776;24772:9;24764:17;;24803:1;24797:4;24794:11;24791:37;;;24808:18;;:::i;:::-;24791:37;24641:194;;;;:::o;24841:229::-;24981:34;24977:1;24969:6;24965:14;24958:58;25050:12;25045:2;25037:6;25033:15;25026:37;24841:229;:::o;25076:366::-;25218:3;25239:67;25303:2;25298:3;25239:67;:::i;:::-;25232:74;;25315:93;25404:3;25315:93;:::i;:::-;25433:2;25428:3;25424:12;25417:19;;25076:366;;;:::o;25448:419::-;25614:4;25652:2;25641:9;25637:18;25629:26;;25701:9;25695:4;25691:20;25687:1;25676:9;25672:17;25665:47;25729:131;25855:4;25729:131;:::i;:::-;25721:139;;25448:419;;;:::o;25873:143::-;25930:5;25961:6;25955:13;25946:22;;25977:33;26004:5;25977:33;:::i;:::-;25873:143;;;;:::o;26022:351::-;26092:6;26141:2;26129:9;26120:7;26116:23;26112:32;26109:119;;;26147:79;;:::i;:::-;26109:119;26267:1;26292:64;26348:7;26339:6;26328:9;26324:22;26292:64;:::i;:::-;26282:74;;26238:128;26022:351;;;;:::o;26379:85::-;26424:7;26453:5;26442:16;;26379:85;;;:::o;26470:158::-;26528:9;26561:61;26579:42;26588:32;26614:5;26588:32;:::i;:::-;26579:42;:::i;:::-;26561:61;:::i;:::-;26548:74;;26470:158;;;:::o;26634:147::-;26729:45;26768:5;26729:45;:::i;:::-;26724:3;26717:58;26634:147;;:::o;26787:114::-;26854:6;26888:5;26882:12;26872:22;;26787:114;;;:::o;26907:184::-;27006:11;27040:6;27035:3;27028:19;27080:4;27075:3;27071:14;27056:29;;26907:184;;;;:::o;27097:132::-;27164:4;27187:3;27179:11;;27217:4;27212:3;27208:14;27200:22;;27097:132;;;:::o;27235:108::-;27312:24;27330:5;27312:24;:::i;:::-;27307:3;27300:37;27235:108;;:::o;27349:179::-;27418:10;27439:46;27481:3;27473:6;27439:46;:::i;:::-;27517:4;27512:3;27508:14;27494:28;;27349:179;;;;:::o;27534:113::-;27604:4;27636;27631:3;27627:14;27619:22;;27534:113;;;:::o;27683:732::-;27802:3;27831:54;27879:5;27831:54;:::i;:::-;27901:86;27980:6;27975:3;27901:86;:::i;:::-;27894:93;;28011:56;28061:5;28011:56;:::i;:::-;28090:7;28121:1;28106:284;28131:6;28128:1;28125:13;28106:284;;;28207:6;28201:13;28234:63;28293:3;28278:13;28234:63;:::i;:::-;28227:70;;28320:60;28373:6;28320:60;:::i;:::-;28310:70;;28166:224;28153:1;28150;28146:9;28141:14;;28106:284;;;28110:14;28406:3;28399:10;;27807:608;;;27683:732;;;;:::o;28421:831::-;28684:4;28722:3;28711:9;28707:19;28699:27;;28736:71;28804:1;28793:9;28789:17;28780:6;28736:71;:::i;:::-;28817:80;28893:2;28882:9;28878:18;28869:6;28817:80;:::i;:::-;28944:9;28938:4;28934:20;28929:2;28918:9;28914:18;28907:48;28972:108;29075:4;29066:6;28972:108;:::i;:::-;28964:116;;29090:72;29158:2;29147:9;29143:18;29134:6;29090:72;:::i;:::-;29172:73;29240:3;29229:9;29225:19;29216:6;29172:73;:::i;:::-;28421:831;;;;;;;;:::o;29258:180::-;29306:77;29303:1;29296:88;29403:4;29400:1;29393:15;29427:4;29424:1;29417:15;29444:185;29484:1;29501:20;29519:1;29501:20;:::i;:::-;29496:25;;29535:20;29553:1;29535:20;:::i;:::-;29530:25;;29574:1;29564:35;;29579:18;;:::i;:::-;29564:35;29621:1;29618;29614:9;29609:14;;29444:185;;;;:::o;29635:177::-;29775:29;29771:1;29763:6;29759:14;29752:53;29635:177;:::o;29818:366::-;29960:3;29981:67;30045:2;30040:3;29981:67;:::i;:::-;29974:74;;30057:93;30146:3;30057:93;:::i;:::-;30175:2;30170:3;30166:12;30159:19;;29818:366;;;:::o;30190:419::-;30356:4;30394:2;30383:9;30379:18;30371:26;;30443:9;30437:4;30433:20;30429:1;30418:9;30414:17;30407:47;30471:131;30597:4;30471:131;:::i;:::-;30463:139;;30190:419;;;:::o;30615:410::-;30655:7;30678:20;30696:1;30678:20;:::i;:::-;30673:25;;30712:20;30730:1;30712:20;:::i;:::-;30707:25;;30767:1;30764;30760:9;30789:30;30807:11;30789:30;:::i;:::-;30778:41;;30968:1;30959:7;30955:15;30952:1;30949:22;30929:1;30922:9;30902:83;30879:139;;30998:18;;:::i;:::-;30879:139;30663:362;30615:410;;;;:::o;31031:220::-;31171:34;31167:1;31159:6;31155:14;31148:58;31240:3;31235:2;31227:6;31223:15;31216:28;31031:220;:::o;31257:366::-;31399:3;31420:67;31484:2;31479:3;31420:67;:::i;:::-;31413:74;;31496:93;31585:3;31496:93;:::i;:::-;31614:2;31609:3;31605:12;31598:19;;31257:366;;;:::o;31629:419::-;31795:4;31833:2;31822:9;31818:18;31810:26;;31882:9;31876:4;31872:20;31868:1;31857:9;31853:17;31846:47;31910:131;32036:4;31910:131;:::i;:::-;31902:139;;31629:419;;;:::o

Swarm Source

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