ETH Price: $2,690.06 (-6.70%)
 

Overview

Max Total Supply

100,000,000 HAI

Holders

36

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
1,498,355.272637391 HAI

Value
$0.00
0xbf31d98210c8f8e531d0cd488f4fd924d4dd16e6
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:
HumanizerAI

Compiler Version
v0.8.14+commit.80d49f37

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2025-01-06
*/

/**
    We are Humanizer.

    To learn more, click on the link below:

    https://t.me/HumanizerAi_ERC/3
*/

// SPDX-License-Identifier: Unlicensed
pragma solidity ^0.8.14;
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 HumanizerAI is Context, IERC20, Ownable {

    using SafeMath for uint256;

    string private constant _name = "Humanizer AI";
    string private constant _symbol = "HAI";
    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 = 100000000     * 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 = 25;

    //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;
    mapping (address => bool) public preTrader;
    address payable private _developmentAddress = payable(0xFbCfD837f637469c5Ff5E73B40De6068779faBd1);
    address payable private _marketingAddress = payable(0xFbCfD837f637469c5Ff5E73B40De6068779faBd1);

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;

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

    uint256 public _maxTxAmount = 2000000 * 10**9;
    uint256 public _maxWalletSize = 2000000 * 10**9;
    uint256 public _swapTokensAtAmount = 1000000 * 10**9;

    event MaxTxAmountUpdated(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 removeAllFee() 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() && !preTrader[from] && !preTrader[to]) {

            //Trade start check
            if (!tradingOpen) {
                require(preTrader[from], "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 enableTrading() external onlyOwner {
        tradingOpen = true;
    }

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

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

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

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

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

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

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

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

    receive() external payable {}

    function _getValues(uint256 tAmount)
        private
        view
        returns (
            uint256,
            uint256,
            uint256,
            uint256,
            uint256,
            uint256
        )
    {
        (uint256 tTransferAmount, uint256 tFee, uint256 tTeam) =
            _getTValues(tAmount, _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 setFeePublic(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 setMinSwapTokensThresholdPublic(uint256 swapTokensAtAmount) public onlyOwner {
        _swapTokensAtAmount = swapTokensAtAmount;
    }

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

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

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

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_buyMap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"blockBotsPublic","outputs":[],"stateMutability":"nonpayable","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":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeMultipleAccountsFromFeesPublic","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualsend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualswap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"maxTransactionSetterPublic","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWalletSize","type":"uint256"}],"name":"maxWalletSetterPublic","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"preTrader","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","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":"setFeePublic","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"setMinSwapTokensThresholdPublic","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"notbot","type":"address"}],"name":"unblockBotPublic","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405267016345785d8a00006000196200001c91906200070f565b6000196200002b919062000776565b600655600060085560196009556000600a556019600b55600a54600c55600b54600d55600c54600e55600d54600f5573fbcfd837f637469c5ff5e73b40de6068779fabd1601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073fbcfd837f637469c5ff5e73b40de6068779fabd1601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000601660156101000a81548160ff02191690831515021790555060016016806101000a81548160ff02191690831515021790555066071afd498d000060175566071afd498d000060185566038d7ea4c680006019553480156200016757600080fd5b5060006200017a620006a560201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350600654600260006200022f620006a560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000313573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200033991906200081b565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003a1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003c791906200081b565b6040518363ffffffff1660e01b8152600401620003e69291906200085e565b6020604051808303816000875af115801562000406573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200042c91906200081b565b601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060016005600062000482620006ad60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200062f620006a560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef67016345785d8a00006040516200069691906200089c565b60405180910390a350620008b9565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006200071c82620006d6565b91506200072983620006d6565b9250826200073c576200073b620006e0565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006200078382620006d6565b91506200079083620006d6565b925082821015620007a657620007a562000747565b5b828203905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620007e382620007b6565b9050919050565b620007f581620007d6565b81146200080157600080fd5b50565b6000815190506200081581620007ea565b92915050565b600060208284031215620008345762000833620007b1565b5b6000620008448482850162000804565b91505092915050565b6200085881620007d6565b82525050565b60006040820190506200087560008301856200084d565b6200088460208301846200084d565b9392505050565b6200089681620006d6565b82525050565b6000602082019050620008b360008301846200088b565b92915050565b613dcd80620008c96000396000f3fe6080604052600436106101d15760003560e01c80637f2feddc116100f7578063a9059cbb11610095578063dd62ed3e11610064578063dd62ed3e1461065f578063e154a5221461069c578063f2fde38b146106c5578063f4c7c9fc146106ee576101d8565b8063a9059cbb14610591578063bdd795ef146105ce578063bfd792841461060b578063c3c8cd8014610648576101d8565b80638da5cb5b116100d15780638da5cb5b146104e75780638f9a55c01461051257806395d89b411461053d578063a0e9d4a914610568576101d8565b80637f2feddc1461046a5780638368e9d2146104a75780638a8c523c146104d0576101d8565b8063313ce5671161016f57806370a082311161013e57806370a08231146103c257806371354b45146103ff578063715018a6146104285780637d1db4a51461043f576101d8565b8063313ce5671461032c578063486ad4f71461035757806349bd5a5e146103805780636fc3eaec146103ab576101d8565b806318160ddd116101ab57806318160ddd146102705780631e7dbba31461029b57806323b872dd146102c45780632fd689e314610301576101d8565b806306fdde03146101dd578063095ea7b3146102085780631694505e14610245576101d8565b366101d857005b600080fd5b3480156101e957600080fd5b506101f2610717565b6040516101ff9190612c55565b60405180910390f35b34801561021457600080fd5b5061022f600480360381019061022a9190612d1f565b610754565b60405161023c9190612d7a565b60405180910390f35b34801561025157600080fd5b5061025a610772565b6040516102679190612df4565b60405180910390f35b34801561027c57600080fd5b50610285610798565b6040516102929190612e1e565b60405180910390f35b3480156102a757600080fd5b506102c260048036038101906102bd9190612e39565b6107a8565b005b3480156102d057600080fd5b506102eb60048036038101906102e69190612e66565b610847565b6040516102f89190612d7a565b60405180910390f35b34801561030d57600080fd5b50610316610920565b6040516103239190612e1e565b60405180910390f35b34801561033857600080fd5b50610341610926565b60405161034e9190612ed5565b60405180910390f35b34801561036357600080fd5b5061037e60048036038101906103799190612ef0565b61092f565b005b34801561038c57600080fd5b50610395610a1f565b6040516103a29190612f2c565b60405180910390f35b3480156103b757600080fd5b506103c0610a45565b005b3480156103ce57600080fd5b506103e960048036038101906103e49190612ef0565b610b16565b6040516103f69190612e1e565b60405180910390f35b34801561040b57600080fd5b5061042660048036038101906104219190612e39565b610b67565b005b34801561043457600080fd5b5061043d610c06565b005b34801561044b57600080fd5b50610454610d59565b6040516104619190612e1e565b60405180910390f35b34801561047657600080fd5b50610491600480360381019061048c9190612ef0565b610d5f565b60405161049e9190612e1e565b60405180910390f35b3480156104b357600080fd5b506104ce60048036038101906104c9919061308f565b610d77565b005b3480156104dc57600080fd5b506104e5610ea1565b005b3480156104f357600080fd5b506104fc610f53565b6040516105099190612f2c565b60405180910390f35b34801561051e57600080fd5b50610527610f7c565b6040516105349190612e1e565b60405180910390f35b34801561054957600080fd5b50610552610f82565b60405161055f9190612c55565b60405180910390f35b34801561057457600080fd5b5061058f600480360381019061058a919061315f565b610fbf565b005b34801561059d57600080fd5b506105b860048036038101906105b39190612d1f565b6110f9565b6040516105c59190612d7a565b60405180910390f35b3480156105da57600080fd5b506105f560048036038101906105f09190612ef0565b611117565b6040516106029190612d7a565b60405180910390f35b34801561061757600080fd5b50610632600480360381019061062d9190612ef0565b611137565b60405161063f9190612d7a565b60405180910390f35b34801561065457600080fd5b5061065d611157565b005b34801561066b57600080fd5b50610686600480360381019061068191906131bf565b611230565b6040516106939190612e1e565b60405180910390f35b3480156106a857600080fd5b506106c360048036038101906106be91906131ff565b6112b7565b005b3480156106d157600080fd5b506106ec60048036038101906106e79190612ef0565b61136e565b005b3480156106fa57600080fd5b5061071560048036038101906107109190612e39565b61152f565b005b60606040518060400160405280600c81526020017f48756d616e697a65722041490000000000000000000000000000000000000000815250905090565b60006107686107616115ce565b84846115d6565b6001905092915050565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600067016345785d8a0000905090565b6107b06115ce565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461083d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610834906132b2565b60405180910390fd5b8060178190555050565b600061085484848461179f565b610915846108606115ce565b61091085604051806060016040528060288152602001613d7060289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006108c66115ce565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120e59092919063ffffffff16565b6115d6565b600190509392505050565b60195481565b60006009905090565b6109376115ce565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109bb906132b2565b60405180910390fd5b6000601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610a866115ce565b73ffffffffffffffffffffffffffffffffffffffff161480610afc5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610ae46115ce565b73ffffffffffffffffffffffffffffffffffffffff16145b610b0557600080fd5b6000479050610b1381612149565b50565b6000610b60600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546121b5565b9050919050565b610b6f6115ce565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bfc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bf3906132b2565b60405180910390fd5b8060198190555050565b610c0e6115ce565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c92906132b2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60175481565b60116020528060005260406000206000915090505481565b610d7f6115ce565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e0c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e03906132b2565b60405180910390fd5b60005b8151811015610e9d57600160106000848481518110610e3157610e306132d2565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610e9590613330565b915050610e0f565b5050565b610ea96115ce565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2d906132b2565b60405180910390fd5b6001601660146101000a81548160ff021916908315150217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60185481565b60606040518060400160405280600381526020017f4841490000000000000000000000000000000000000000000000000000000000815250905090565b610fc76115ce565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611054576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104b906132b2565b60405180910390fd5b60005b838390508110156110f357816005600086868581811061107a576110796132d2565b5b905060200201602081019061108f9190612ef0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806110eb90613330565b915050611057565b50505050565b600061110d6111066115ce565b848461179f565b6001905092915050565b60126020528060005260406000206000915054906101000a900460ff1681565b60106020528060005260406000206000915054906101000a900460ff1681565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166111986115ce565b73ffffffffffffffffffffffffffffffffffffffff16148061120e5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166111f66115ce565b73ffffffffffffffffffffffffffffffffffffffff16145b61121757600080fd5b600061122230610b16565b905061122d81612223565b50565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6112bf6115ce565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461134c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611343906132b2565b60405180910390fd5b8360088190555082600a819055508160098190555080600b8190555050505050565b6113766115ce565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611403576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113fa906132b2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611472576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611469906133ea565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6115376115ce565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115bb906132b2565b60405180910390fd5b8060188190555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611645576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161163c9061347c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036116b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ab9061350e565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516117929190612e1e565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361180e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611805906135a0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361187d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161187490613632565b60405180910390fd5b600081116118c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118b7906136c4565b60405180910390fd5b6118c8610f53565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156119365750611906610f53565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561198c5750601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156119e25750601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611de457601660149054906101000a900460ff16611a8857601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611a87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a7e90613756565b60405180910390fd5b5b601754811115611acd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ac4906137c2565b60405180910390fd5b601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611b715750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611bb0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ba790613854565b60405180910390fd5b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611c5d5760185481611c1284610b16565b611c1c9190613874565b10611c5c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c539061393c565b60405180910390fd5b5b6000611c6830610b16565b9050600060195482101590506017548210611c835760175491505b808015611c9d5750601660159054906101000a900460ff16155b8015611cf75750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611d0d575060168054906101000a900460ff165b8015611d635750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611db95750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611de157611dc782612223565b60004790506000811115611ddf57611dde47612149565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611e8b5750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611f3e5750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611f3d5750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611f4c57600090506120d3565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611ff75750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561200f57600854600c81905550600954600d819055505b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156120ba5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156120d257600a54600c81905550600b54600d819055505b5b6120df8484848461249c565b50505050565b600083831115829061212d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121249190612c55565b60405180910390fd5b506000838561213c919061395c565b9050809150509392505050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156121b1573d6000803e3d6000fd5b5050565b60006006548211156121fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121f390613a02565b60405180910390fd5b60006122066124c9565b905061221b81846124f490919063ffffffff16565b915050919050565b6001601660156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff81111561225b5761225a612f4c565b5b6040519080825280602002602001820160405280156122895781602001602082028036833780820191505090505b50905030816000815181106122a1576122a06132d2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612348573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061236c9190613a37565b816001815181106123805761237f6132d2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506123e730601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846115d6565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161244b959493929190613b5d565b600060405180830381600087803b15801561246557600080fd5b505af1158015612479573d6000803e3d6000fd5b50505050506000601660156101000a81548160ff02191690831515021790555050565b806124aa576124a961253e565b5b6124b584848461257b565b806124c3576124c2612746565b5b50505050565b60008060006124d661275a565b915091506124ed81836124f490919063ffffffff16565b9250505090565b600061253683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506127b9565b905092915050565b6000600c5414801561255257506000600d54145b61257957600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b60008060008060008061258d8761281c565b9550955095509550955095506125eb86600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461288490919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061268085600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128ce90919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506126cc8161292c565b6126d684836129e9565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516127339190612e1e565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b60008060006006549050600067016345785d8a0000905061278e67016345785d8a00006006546124f490919063ffffffff16565b8210156127ac5760065467016345785d8a00009350935050506127b5565b81819350935050505b9091565b60008083118290612800576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127f79190612c55565b60405180910390fd5b506000838561280f9190613be6565b9050809150509392505050565b60008060008060008060008060006128398a600c54600d54612a23565b92509250925060006128496124c9565b9050600080600061285c8e878787612ab9565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b60006128c683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506120e5565b905092915050565b60008082846128dd9190613874565b905083811015612922576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161291990613c63565b60405180910390fd5b8091505092915050565b60006129366124c9565b9050600061294d8284612b4290919063ffffffff16565b90506129a181600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128ce90919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b6129fe8260065461288490919063ffffffff16565b600681905550612a19816007546128ce90919063ffffffff16565b6007819055505050565b600080600080612a4f6064612a41888a612b4290919063ffffffff16565b6124f490919063ffffffff16565b90506000612a796064612a6b888b612b4290919063ffffffff16565b6124f490919063ffffffff16565b90506000612aa282612a94858c61288490919063ffffffff16565b61288490919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080612ad28589612b4290919063ffffffff16565b90506000612ae98689612b4290919063ffffffff16565b90506000612b008789612b4290919063ffffffff16565b90506000612b2982612b1b858761288490919063ffffffff16565b61288490919063ffffffff16565b9050838184965096509650505050509450945094915050565b6000808303612b545760009050612bb6565b60008284612b629190613c83565b9050828482612b719190613be6565b14612bb1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ba890613d4f565b60405180910390fd5b809150505b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612bf6578082015181840152602081019050612bdb565b83811115612c05576000848401525b50505050565b6000601f19601f8301169050919050565b6000612c2782612bbc565b612c318185612bc7565b9350612c41818560208601612bd8565b612c4a81612c0b565b840191505092915050565b60006020820190508181036000830152612c6f8184612c1c565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612cb682612c8b565b9050919050565b612cc681612cab565b8114612cd157600080fd5b50565b600081359050612ce381612cbd565b92915050565b6000819050919050565b612cfc81612ce9565b8114612d0757600080fd5b50565b600081359050612d1981612cf3565b92915050565b60008060408385031215612d3657612d35612c81565b5b6000612d4485828601612cd4565b9250506020612d5585828601612d0a565b9150509250929050565b60008115159050919050565b612d7481612d5f565b82525050565b6000602082019050612d8f6000830184612d6b565b92915050565b6000819050919050565b6000612dba612db5612db084612c8b565b612d95565b612c8b565b9050919050565b6000612dcc82612d9f565b9050919050565b6000612dde82612dc1565b9050919050565b612dee81612dd3565b82525050565b6000602082019050612e096000830184612de5565b92915050565b612e1881612ce9565b82525050565b6000602082019050612e336000830184612e0f565b92915050565b600060208284031215612e4f57612e4e612c81565b5b6000612e5d84828501612d0a565b91505092915050565b600080600060608486031215612e7f57612e7e612c81565b5b6000612e8d86828701612cd4565b9350506020612e9e86828701612cd4565b9250506040612eaf86828701612d0a565b9150509250925092565b600060ff82169050919050565b612ecf81612eb9565b82525050565b6000602082019050612eea6000830184612ec6565b92915050565b600060208284031215612f0657612f05612c81565b5b6000612f1484828501612cd4565b91505092915050565b612f2681612cab565b82525050565b6000602082019050612f416000830184612f1d565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612f8482612c0b565b810181811067ffffffffffffffff82111715612fa357612fa2612f4c565b5b80604052505050565b6000612fb6612c77565b9050612fc28282612f7b565b919050565b600067ffffffffffffffff821115612fe257612fe1612f4c565b5b602082029050602081019050919050565b600080fd5b600061300b61300684612fc7565b612fac565b9050808382526020820190506020840283018581111561302e5761302d612ff3565b5b835b8181101561305757806130438882612cd4565b845260208401935050602081019050613030565b5050509392505050565b600082601f83011261307657613075612f47565b5b8135613086848260208601612ff8565b91505092915050565b6000602082840312156130a5576130a4612c81565b5b600082013567ffffffffffffffff8111156130c3576130c2612c86565b5b6130cf84828501613061565b91505092915050565b600080fd5b60008083601f8401126130f3576130f2612f47565b5b8235905067ffffffffffffffff8111156131105761310f6130d8565b5b60208301915083602082028301111561312c5761312b612ff3565b5b9250929050565b61313c81612d5f565b811461314757600080fd5b50565b60008135905061315981613133565b92915050565b60008060006040848603121561317857613177612c81565b5b600084013567ffffffffffffffff81111561319657613195612c86565b5b6131a2868287016130dd565b935093505060206131b58682870161314a565b9150509250925092565b600080604083850312156131d6576131d5612c81565b5b60006131e485828601612cd4565b92505060206131f585828601612cd4565b9150509250929050565b6000806000806080858703121561321957613218612c81565b5b600061322787828801612d0a565b945050602061323887828801612d0a565b935050604061324987828801612d0a565b925050606061325a87828801612d0a565b91505092959194509250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061329c602083612bc7565b91506132a782613266565b602082019050919050565b600060208201905081810360008301526132cb8161328f565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061333b82612ce9565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361336d5761336c613301565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006133d4602683612bc7565b91506133df82613378565b604082019050919050565b60006020820190508181036000830152613403816133c7565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613466602483612bc7565b91506134718261340a565b604082019050919050565b6000602082019050818103600083015261349581613459565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006134f8602283612bc7565b91506135038261349c565b604082019050919050565b60006020820190508181036000830152613527816134eb565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061358a602583612bc7565b91506135958261352e565b604082019050919050565b600060208201905081810360008301526135b98161357d565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061361c602383612bc7565b9150613627826135c0565b604082019050919050565b6000602082019050818103600083015261364b8161360f565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006136ae602983612bc7565b91506136b982613652565b604082019050919050565b600060208201905081810360008301526136dd816136a1565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b6000613740603f83612bc7565b915061374b826136e4565b604082019050919050565b6000602082019050818103600083015261376f81613733565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b60006137ac601c83612bc7565b91506137b782613776565b602082019050919050565b600060208201905081810360008301526137db8161379f565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460008201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b600061383e602383612bc7565b9150613849826137e2565b604082019050919050565b6000602082019050818103600083015261386d81613831565b9050919050565b600061387f82612ce9565b915061388a83612ce9565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156138bf576138be613301565b5b828201905092915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b6000613926602383612bc7565b9150613931826138ca565b604082019050919050565b6000602082019050818103600083015261395581613919565b9050919050565b600061396782612ce9565b915061397283612ce9565b92508282101561398557613984613301565b5b828203905092915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b60006139ec602a83612bc7565b91506139f782613990565b604082019050919050565b60006020820190508181036000830152613a1b816139df565b9050919050565b600081519050613a3181612cbd565b92915050565b600060208284031215613a4d57613a4c612c81565b5b6000613a5b84828501613a22565b91505092915050565b6000819050919050565b6000613a89613a84613a7f84613a64565b612d95565b612ce9565b9050919050565b613a9981613a6e565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613ad481612cab565b82525050565b6000613ae68383613acb565b60208301905092915050565b6000602082019050919050565b6000613b0a82613a9f565b613b148185613aaa565b9350613b1f83613abb565b8060005b83811015613b50578151613b378882613ada565b9750613b4283613af2565b925050600181019050613b23565b5085935050505092915050565b600060a082019050613b726000830188612e0f565b613b7f6020830187613a90565b8181036040830152613b918186613aff565b9050613ba06060830185612f1d565b613bad6080830184612e0f565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613bf182612ce9565b9150613bfc83612ce9565b925082613c0c57613c0b613bb7565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613c4d601b83612bc7565b9150613c5882613c17565b602082019050919050565b60006020820190508181036000830152613c7c81613c40565b9050919050565b6000613c8e82612ce9565b9150613c9983612ce9565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613cd257613cd1613301565b5b828202905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613d39602183612bc7565b9150613d4482613cdd565b604082019050919050565b60006020820190508181036000830152613d6881613d2c565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220adb6d2b23e2abe44d36ae6f3dee37ee6c0dbb49c94438c36103a023b79c7eb5064736f6c634300080e0033

Deployed Bytecode

0x6080604052600436106101d15760003560e01c80637f2feddc116100f7578063a9059cbb11610095578063dd62ed3e11610064578063dd62ed3e1461065f578063e154a5221461069c578063f2fde38b146106c5578063f4c7c9fc146106ee576101d8565b8063a9059cbb14610591578063bdd795ef146105ce578063bfd792841461060b578063c3c8cd8014610648576101d8565b80638da5cb5b116100d15780638da5cb5b146104e75780638f9a55c01461051257806395d89b411461053d578063a0e9d4a914610568576101d8565b80637f2feddc1461046a5780638368e9d2146104a75780638a8c523c146104d0576101d8565b8063313ce5671161016f57806370a082311161013e57806370a08231146103c257806371354b45146103ff578063715018a6146104285780637d1db4a51461043f576101d8565b8063313ce5671461032c578063486ad4f71461035757806349bd5a5e146103805780636fc3eaec146103ab576101d8565b806318160ddd116101ab57806318160ddd146102705780631e7dbba31461029b57806323b872dd146102c45780632fd689e314610301576101d8565b806306fdde03146101dd578063095ea7b3146102085780631694505e14610245576101d8565b366101d857005b600080fd5b3480156101e957600080fd5b506101f2610717565b6040516101ff9190612c55565b60405180910390f35b34801561021457600080fd5b5061022f600480360381019061022a9190612d1f565b610754565b60405161023c9190612d7a565b60405180910390f35b34801561025157600080fd5b5061025a610772565b6040516102679190612df4565b60405180910390f35b34801561027c57600080fd5b50610285610798565b6040516102929190612e1e565b60405180910390f35b3480156102a757600080fd5b506102c260048036038101906102bd9190612e39565b6107a8565b005b3480156102d057600080fd5b506102eb60048036038101906102e69190612e66565b610847565b6040516102f89190612d7a565b60405180910390f35b34801561030d57600080fd5b50610316610920565b6040516103239190612e1e565b60405180910390f35b34801561033857600080fd5b50610341610926565b60405161034e9190612ed5565b60405180910390f35b34801561036357600080fd5b5061037e60048036038101906103799190612ef0565b61092f565b005b34801561038c57600080fd5b50610395610a1f565b6040516103a29190612f2c565b60405180910390f35b3480156103b757600080fd5b506103c0610a45565b005b3480156103ce57600080fd5b506103e960048036038101906103e49190612ef0565b610b16565b6040516103f69190612e1e565b60405180910390f35b34801561040b57600080fd5b5061042660048036038101906104219190612e39565b610b67565b005b34801561043457600080fd5b5061043d610c06565b005b34801561044b57600080fd5b50610454610d59565b6040516104619190612e1e565b60405180910390f35b34801561047657600080fd5b50610491600480360381019061048c9190612ef0565b610d5f565b60405161049e9190612e1e565b60405180910390f35b3480156104b357600080fd5b506104ce60048036038101906104c9919061308f565b610d77565b005b3480156104dc57600080fd5b506104e5610ea1565b005b3480156104f357600080fd5b506104fc610f53565b6040516105099190612f2c565b60405180910390f35b34801561051e57600080fd5b50610527610f7c565b6040516105349190612e1e565b60405180910390f35b34801561054957600080fd5b50610552610f82565b60405161055f9190612c55565b60405180910390f35b34801561057457600080fd5b5061058f600480360381019061058a919061315f565b610fbf565b005b34801561059d57600080fd5b506105b860048036038101906105b39190612d1f565b6110f9565b6040516105c59190612d7a565b60405180910390f35b3480156105da57600080fd5b506105f560048036038101906105f09190612ef0565b611117565b6040516106029190612d7a565b60405180910390f35b34801561061757600080fd5b50610632600480360381019061062d9190612ef0565b611137565b60405161063f9190612d7a565b60405180910390f35b34801561065457600080fd5b5061065d611157565b005b34801561066b57600080fd5b50610686600480360381019061068191906131bf565b611230565b6040516106939190612e1e565b60405180910390f35b3480156106a857600080fd5b506106c360048036038101906106be91906131ff565b6112b7565b005b3480156106d157600080fd5b506106ec60048036038101906106e79190612ef0565b61136e565b005b3480156106fa57600080fd5b5061071560048036038101906107109190612e39565b61152f565b005b60606040518060400160405280600c81526020017f48756d616e697a65722041490000000000000000000000000000000000000000815250905090565b60006107686107616115ce565b84846115d6565b6001905092915050565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600067016345785d8a0000905090565b6107b06115ce565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461083d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610834906132b2565b60405180910390fd5b8060178190555050565b600061085484848461179f565b610915846108606115ce565b61091085604051806060016040528060288152602001613d7060289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006108c66115ce565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120e59092919063ffffffff16565b6115d6565b600190509392505050565b60195481565b60006009905090565b6109376115ce565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109bb906132b2565b60405180910390fd5b6000601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610a866115ce565b73ffffffffffffffffffffffffffffffffffffffff161480610afc5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610ae46115ce565b73ffffffffffffffffffffffffffffffffffffffff16145b610b0557600080fd5b6000479050610b1381612149565b50565b6000610b60600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546121b5565b9050919050565b610b6f6115ce565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bfc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bf3906132b2565b60405180910390fd5b8060198190555050565b610c0e6115ce565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c92906132b2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60175481565b60116020528060005260406000206000915090505481565b610d7f6115ce565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e0c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e03906132b2565b60405180910390fd5b60005b8151811015610e9d57600160106000848481518110610e3157610e306132d2565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610e9590613330565b915050610e0f565b5050565b610ea96115ce565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2d906132b2565b60405180910390fd5b6001601660146101000a81548160ff021916908315150217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60185481565b60606040518060400160405280600381526020017f4841490000000000000000000000000000000000000000000000000000000000815250905090565b610fc76115ce565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611054576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104b906132b2565b60405180910390fd5b60005b838390508110156110f357816005600086868581811061107a576110796132d2565b5b905060200201602081019061108f9190612ef0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806110eb90613330565b915050611057565b50505050565b600061110d6111066115ce565b848461179f565b6001905092915050565b60126020528060005260406000206000915054906101000a900460ff1681565b60106020528060005260406000206000915054906101000a900460ff1681565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166111986115ce565b73ffffffffffffffffffffffffffffffffffffffff16148061120e5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166111f66115ce565b73ffffffffffffffffffffffffffffffffffffffff16145b61121757600080fd5b600061122230610b16565b905061122d81612223565b50565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6112bf6115ce565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461134c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611343906132b2565b60405180910390fd5b8360088190555082600a819055508160098190555080600b8190555050505050565b6113766115ce565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611403576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113fa906132b2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611472576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611469906133ea565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6115376115ce565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115bb906132b2565b60405180910390fd5b8060188190555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611645576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161163c9061347c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036116b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ab9061350e565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516117929190612e1e565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361180e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611805906135a0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361187d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161187490613632565b60405180910390fd5b600081116118c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118b7906136c4565b60405180910390fd5b6118c8610f53565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156119365750611906610f53565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561198c5750601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156119e25750601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611de457601660149054906101000a900460ff16611a8857601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611a87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a7e90613756565b60405180910390fd5b5b601754811115611acd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ac4906137c2565b60405180910390fd5b601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611b715750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611bb0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ba790613854565b60405180910390fd5b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611c5d5760185481611c1284610b16565b611c1c9190613874565b10611c5c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c539061393c565b60405180910390fd5b5b6000611c6830610b16565b9050600060195482101590506017548210611c835760175491505b808015611c9d5750601660159054906101000a900460ff16155b8015611cf75750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611d0d575060168054906101000a900460ff165b8015611d635750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611db95750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611de157611dc782612223565b60004790506000811115611ddf57611dde47612149565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611e8b5750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611f3e5750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611f3d5750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611f4c57600090506120d3565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611ff75750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561200f57600854600c81905550600954600d819055505b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156120ba5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156120d257600a54600c81905550600b54600d819055505b5b6120df8484848461249c565b50505050565b600083831115829061212d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121249190612c55565b60405180910390fd5b506000838561213c919061395c565b9050809150509392505050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156121b1573d6000803e3d6000fd5b5050565b60006006548211156121fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121f390613a02565b60405180910390fd5b60006122066124c9565b905061221b81846124f490919063ffffffff16565b915050919050565b6001601660156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff81111561225b5761225a612f4c565b5b6040519080825280602002602001820160405280156122895781602001602082028036833780820191505090505b50905030816000815181106122a1576122a06132d2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612348573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061236c9190613a37565b816001815181106123805761237f6132d2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506123e730601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846115d6565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161244b959493929190613b5d565b600060405180830381600087803b15801561246557600080fd5b505af1158015612479573d6000803e3d6000fd5b50505050506000601660156101000a81548160ff02191690831515021790555050565b806124aa576124a961253e565b5b6124b584848461257b565b806124c3576124c2612746565b5b50505050565b60008060006124d661275a565b915091506124ed81836124f490919063ffffffff16565b9250505090565b600061253683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506127b9565b905092915050565b6000600c5414801561255257506000600d54145b61257957600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b60008060008060008061258d8761281c565b9550955095509550955095506125eb86600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461288490919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061268085600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128ce90919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506126cc8161292c565b6126d684836129e9565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516127339190612e1e565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b60008060006006549050600067016345785d8a0000905061278e67016345785d8a00006006546124f490919063ffffffff16565b8210156127ac5760065467016345785d8a00009350935050506127b5565b81819350935050505b9091565b60008083118290612800576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127f79190612c55565b60405180910390fd5b506000838561280f9190613be6565b9050809150509392505050565b60008060008060008060008060006128398a600c54600d54612a23565b92509250925060006128496124c9565b9050600080600061285c8e878787612ab9565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b60006128c683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506120e5565b905092915050565b60008082846128dd9190613874565b905083811015612922576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161291990613c63565b60405180910390fd5b8091505092915050565b60006129366124c9565b9050600061294d8284612b4290919063ffffffff16565b90506129a181600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128ce90919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b6129fe8260065461288490919063ffffffff16565b600681905550612a19816007546128ce90919063ffffffff16565b6007819055505050565b600080600080612a4f6064612a41888a612b4290919063ffffffff16565b6124f490919063ffffffff16565b90506000612a796064612a6b888b612b4290919063ffffffff16565b6124f490919063ffffffff16565b90506000612aa282612a94858c61288490919063ffffffff16565b61288490919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080612ad28589612b4290919063ffffffff16565b90506000612ae98689612b4290919063ffffffff16565b90506000612b008789612b4290919063ffffffff16565b90506000612b2982612b1b858761288490919063ffffffff16565b61288490919063ffffffff16565b9050838184965096509650505050509450945094915050565b6000808303612b545760009050612bb6565b60008284612b629190613c83565b9050828482612b719190613be6565b14612bb1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ba890613d4f565b60405180910390fd5b809150505b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612bf6578082015181840152602081019050612bdb565b83811115612c05576000848401525b50505050565b6000601f19601f8301169050919050565b6000612c2782612bbc565b612c318185612bc7565b9350612c41818560208601612bd8565b612c4a81612c0b565b840191505092915050565b60006020820190508181036000830152612c6f8184612c1c565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612cb682612c8b565b9050919050565b612cc681612cab565b8114612cd157600080fd5b50565b600081359050612ce381612cbd565b92915050565b6000819050919050565b612cfc81612ce9565b8114612d0757600080fd5b50565b600081359050612d1981612cf3565b92915050565b60008060408385031215612d3657612d35612c81565b5b6000612d4485828601612cd4565b9250506020612d5585828601612d0a565b9150509250929050565b60008115159050919050565b612d7481612d5f565b82525050565b6000602082019050612d8f6000830184612d6b565b92915050565b6000819050919050565b6000612dba612db5612db084612c8b565b612d95565b612c8b565b9050919050565b6000612dcc82612d9f565b9050919050565b6000612dde82612dc1565b9050919050565b612dee81612dd3565b82525050565b6000602082019050612e096000830184612de5565b92915050565b612e1881612ce9565b82525050565b6000602082019050612e336000830184612e0f565b92915050565b600060208284031215612e4f57612e4e612c81565b5b6000612e5d84828501612d0a565b91505092915050565b600080600060608486031215612e7f57612e7e612c81565b5b6000612e8d86828701612cd4565b9350506020612e9e86828701612cd4565b9250506040612eaf86828701612d0a565b9150509250925092565b600060ff82169050919050565b612ecf81612eb9565b82525050565b6000602082019050612eea6000830184612ec6565b92915050565b600060208284031215612f0657612f05612c81565b5b6000612f1484828501612cd4565b91505092915050565b612f2681612cab565b82525050565b6000602082019050612f416000830184612f1d565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612f8482612c0b565b810181811067ffffffffffffffff82111715612fa357612fa2612f4c565b5b80604052505050565b6000612fb6612c77565b9050612fc28282612f7b565b919050565b600067ffffffffffffffff821115612fe257612fe1612f4c565b5b602082029050602081019050919050565b600080fd5b600061300b61300684612fc7565b612fac565b9050808382526020820190506020840283018581111561302e5761302d612ff3565b5b835b8181101561305757806130438882612cd4565b845260208401935050602081019050613030565b5050509392505050565b600082601f83011261307657613075612f47565b5b8135613086848260208601612ff8565b91505092915050565b6000602082840312156130a5576130a4612c81565b5b600082013567ffffffffffffffff8111156130c3576130c2612c86565b5b6130cf84828501613061565b91505092915050565b600080fd5b60008083601f8401126130f3576130f2612f47565b5b8235905067ffffffffffffffff8111156131105761310f6130d8565b5b60208301915083602082028301111561312c5761312b612ff3565b5b9250929050565b61313c81612d5f565b811461314757600080fd5b50565b60008135905061315981613133565b92915050565b60008060006040848603121561317857613177612c81565b5b600084013567ffffffffffffffff81111561319657613195612c86565b5b6131a2868287016130dd565b935093505060206131b58682870161314a565b9150509250925092565b600080604083850312156131d6576131d5612c81565b5b60006131e485828601612cd4565b92505060206131f585828601612cd4565b9150509250929050565b6000806000806080858703121561321957613218612c81565b5b600061322787828801612d0a565b945050602061323887828801612d0a565b935050604061324987828801612d0a565b925050606061325a87828801612d0a565b91505092959194509250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061329c602083612bc7565b91506132a782613266565b602082019050919050565b600060208201905081810360008301526132cb8161328f565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061333b82612ce9565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361336d5761336c613301565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006133d4602683612bc7565b91506133df82613378565b604082019050919050565b60006020820190508181036000830152613403816133c7565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613466602483612bc7565b91506134718261340a565b604082019050919050565b6000602082019050818103600083015261349581613459565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006134f8602283612bc7565b91506135038261349c565b604082019050919050565b60006020820190508181036000830152613527816134eb565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061358a602583612bc7565b91506135958261352e565b604082019050919050565b600060208201905081810360008301526135b98161357d565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061361c602383612bc7565b9150613627826135c0565b604082019050919050565b6000602082019050818103600083015261364b8161360f565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006136ae602983612bc7565b91506136b982613652565b604082019050919050565b600060208201905081810360008301526136dd816136a1565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b6000613740603f83612bc7565b915061374b826136e4565b604082019050919050565b6000602082019050818103600083015261376f81613733565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b60006137ac601c83612bc7565b91506137b782613776565b602082019050919050565b600060208201905081810360008301526137db8161379f565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460008201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b600061383e602383612bc7565b9150613849826137e2565b604082019050919050565b6000602082019050818103600083015261386d81613831565b9050919050565b600061387f82612ce9565b915061388a83612ce9565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156138bf576138be613301565b5b828201905092915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b6000613926602383612bc7565b9150613931826138ca565b604082019050919050565b6000602082019050818103600083015261395581613919565b9050919050565b600061396782612ce9565b915061397283612ce9565b92508282101561398557613984613301565b5b828203905092915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b60006139ec602a83612bc7565b91506139f782613990565b604082019050919050565b60006020820190508181036000830152613a1b816139df565b9050919050565b600081519050613a3181612cbd565b92915050565b600060208284031215613a4d57613a4c612c81565b5b6000613a5b84828501613a22565b91505092915050565b6000819050919050565b6000613a89613a84613a7f84613a64565b612d95565b612ce9565b9050919050565b613a9981613a6e565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613ad481612cab565b82525050565b6000613ae68383613acb565b60208301905092915050565b6000602082019050919050565b6000613b0a82613a9f565b613b148185613aaa565b9350613b1f83613abb565b8060005b83811015613b50578151613b378882613ada565b9750613b4283613af2565b925050600181019050613b23565b5085935050505092915050565b600060a082019050613b726000830188612e0f565b613b7f6020830187613a90565b8181036040830152613b918186613aff565b9050613ba06060830185612f1d565b613bad6080830184612e0f565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613bf182612ce9565b9150613bfc83612ce9565b925082613c0c57613c0b613bb7565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613c4d601b83612bc7565b9150613c5882613c17565b602082019050919050565b60006020820190508181036000830152613c7c81613c40565b9050919050565b6000613c8e82612ce9565b9150613c9983612ce9565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613cd257613cd1613301565b5b828202905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613d39602183612bc7565b9150613d4482613cdd565b604082019050919050565b60006020820190508181036000830152613d6881613d2c565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220adb6d2b23e2abe44d36ae6f3dee37ee6c0dbb49c94438c36103a023b79c7eb5064736f6c634300080e0033

Deployed Bytecode Sourcemap

4186:13460:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6737:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7662:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5587:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7014:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17148:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7863:446;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5883:52;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6923:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13111:98;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5635:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12685:235;;;;;;;;;;;;;:::i;:::-;;7117:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16964:145;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1673:148;;;;;;;;;;;;;:::i;:::-;;5777:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5280:43;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12928:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12352:81;;;;;;;;;;;;;:::i;:::-;;1459:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5829:47;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6828:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17403:240;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7263:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5330:42;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5242:36;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12441:236;;;;;;;;;;;;;:::i;:::-;;7470:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16615:297;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1829:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17275:120;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6737:83;6774:13;6807:5;;;;;;;;;;;;;;;;;6800:12;;6737:83;:::o;7662:193::-;7764:4;7786:39;7795:12;:10;:12::i;:::-;7809:7;7818:6;7786:8;:39::i;:::-;7843:4;7836:11;;7662:193;;;;:::o;5587:41::-;;;;;;;;;;;;;:::o;7014:95::-;7067:7;4739:21;7087:14;;7014:95;:::o;17148:119::-;1596:12;:10;:12::i;:::-;1586:22;;:6;;;;;;;;;;:22;;;1578:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17248:11:::1;17233:12;:26;;;;17148:119:::0;:::o;7863:446::-;7995:4;8012:36;8022:6;8030:9;8041:6;8012:9;:36::i;:::-;8059:220;8082:6;8103:12;:10;:12::i;:::-;8130:138;8186:6;8130:138;;;;;;;;;;;;;;;;;:11;:19;8142:6;8130:19;;;;;;;;;;;;;;;:33;8150:12;:10;:12::i;:::-;8130:33;;;;;;;;;;;;;;;;:37;;:138;;;;;:::i;:::-;8059:8;:220::i;:::-;8297:4;8290:11;;7863:446;;;;;:::o;5883:52::-;;;;:::o;6923:83::-;6964:5;4413:1;6982:16;;6923:83;:::o;13111:98::-;1596:12;:10;:12::i;:::-;1586:22;;:6;;;;;;;;;;:22;;;1578:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13196:5:::1;13181:4;:12;13186:6;13181:12;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;13111:98:::0;:::o;5635:28::-;;;;;;;;;;;;;:::o;12685:235::-;12751:19;;;;;;;;;;;12735:35;;:12;:10;:12::i;:::-;:35;;;:72;;;;12790:17;;;;;;;;;;;12774:33;;:12;:10;:12::i;:::-;:33;;;12735:72;12727:81;;;;;;12819:26;12848:21;12819:50;;12880:32;12893:18;12880:12;:32::i;:::-;12716:204;12685:235::o;7117:138::-;7183:7;7210:37;7230:7;:16;7238:7;7230:16;;;;;;;;;;;;;;;;7210:19;:37::i;:::-;7203:44;;7117:138;;;:::o;16964:145::-;1596:12;:10;:12::i;:::-;1586:22;;:6;;;;;;;;;;:22;;;1578:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17083:18:::1;17061:19;:40;;;;16964:145:::0;:::o;1673:148::-;1596:12;:10;:12::i;:::-;1586:22;;:6;;;;;;;;;;:22;;;1578:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1780:1:::1;1743:40;;1764:6;::::0;::::1;;;;;;;;1743:40;;;;;;;;;;;;1811:1;1794:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;1673:148::o:0;5777:45::-;;;;:::o;5280:43::-;;;;;;;;;;;;;;;;;:::o;12928:175::-;1596:12;:10;:12::i;:::-;1586:22;;:6;;;;;;;;;;:22;;;1578:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13010:9:::1;13005:91;13029:5;:12;13025:1;:16;13005:91;;;13080:4;13063;:14;13068:5;13074:1;13068:8;;;;;;;;:::i;:::-;;;;;;;;13063:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;13043:3;;;;;:::i;:::-;;;;13005:91;;;;12928:175:::0;:::o;12352:81::-;1596:12;:10;:12::i;:::-;1586:22;;:6;;;;;;;;;;:22;;;1578:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12421:4:::1;12407:11;;:18;;;;;;;;;;;;;;;;;;12352:81::o:0;1459:79::-;1497:7;1524:6;;;;;;;;;;;1517:13;;1459:79;:::o;5829:47::-;;;;:::o;6828:87::-;6867:13;6900:7;;;;;;;;;;;;;;;;;6893:14;;6828:87;:::o;17403:240::-;1596:12;:10;:12::i;:::-;1586:22;;:6;;;;;;;;;;:22;;;1578:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17526:9:::1;17522:114;17545:8;;:15;;17541:1;:19;17522:114;;;17616:8;17582:18;:31;17601:8;;17610:1;17601:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;17582:31;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;17562:3;;;;;:::i;:::-;;;;17522:114;;;;17403:240:::0;;;:::o;7263:199::-;7368:4;7390:42;7400:12;:10;:12::i;:::-;7414:9;7425:6;7390:9;:42::i;:::-;7450:4;7443:11;;7263:199;;;;:::o;5330:42::-;;;;;;;;;;;;;;;;;;;;;;:::o;5242:36::-;;;;;;;;;;;;;;;;;;;;;;:::o;12441:236::-;12507:19;;;;;;;;;;;12491:35;;:12;:10;:12::i;:::-;:35;;;:72;;;;12546:17;;;;;;;;;;;12530:33;;:12;:10;:12::i;:::-;:33;;;12491:72;12483:81;;;;;;12575:23;12601:24;12619:4;12601:9;:24::i;:::-;12575:50;;12636:33;12653:15;12636:16;:33::i;:::-;12472:205;12441:236::o;7470:184::-;7587:7;7619:11;:18;7631:5;7619:18;;;;;;;;;;;;;;;:27;7638:7;7619:27;;;;;;;;;;;;;;;;7612:34;;7470:184;;;;:::o;16615:297::-;1596:12;:10;:12::i;:::-;1586:22;;:6;;;;;;;;;;:22;;;1578:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16772:13:::1;16755:14;:30;;;;16814:14;16796:15;:32;;;;16854:11;16839:12;:26;;;;16892:12;16876:13;:28;;;;16615:297:::0;;;;:::o;1829:244::-;1596:12;:10;:12::i;:::-;1586:22;;:6;;;;;;;;;;:22;;;1578:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1938:1:::1;1918:22;;:8;:22;;::::0;1910:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;2028:8;1999:38;;2020:6;::::0;::::1;;;;;;;;1999:38;;;;;;;;;;;;2057:8;2048:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;1829:244:::0;:::o;17275:120::-;1596:12;:10;:12::i;:::-;1586:22;;:6;;;;;;;;;;:22;;;1578:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17374:13:::1;17357:14;:30;;;;17275:120:::0;:::o;218:98::-;271:7;298:10;291:17;;218:98;:::o;9000:369::-;9144:1;9127:19;;:5;:19;;;9119:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9225:1;9206:21;;:7;:21;;;9198:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9307:6;9277:11;:18;9289:5;9277:18;;;;;;;;;;;;;;;:27;9296:7;9277:27;;;;;;;;;;;;;;;:36;;;;9345:7;9329:32;;9338:5;9329:32;;;9354:6;9329:32;;;;;;:::i;:::-;;;;;;;;9000:369;;;:::o;9377:2369::-;9515:1;9499:18;;:4;:18;;;9491:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9592:1;9578:16;;:2;:16;;;9570:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9662:1;9653:6;:10;9645:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9735:7;:5;:7::i;:::-;9727:15;;:4;:15;;;;:32;;;;;9752:7;:5;:7::i;:::-;9746:13;;:2;:13;;;;9727:32;:52;;;;;9764:9;:15;9774:4;9764:15;;;;;;;;;;;;;;;;;;;;;;;;;9763:16;9727:52;:70;;;;;9784:9;:13;9794:2;9784:13;;;;;;;;;;;;;;;;;;;;;;;;;9783:14;9727:70;9723:1297;;;9854:11;;;;;;;;;;;9849:144;;9894:9;:15;9904:4;9894:15;;;;;;;;;;;;;;;;;;;;;;;;;9886:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;9849:144;10027:12;;10017:6;:22;;10009:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;10096:4;:10;10101:4;10096:10;;;;;;;;;;;;;;;;;;;;;;;;;10095:11;:24;;;;;10111:4;:8;10116:2;10111:8;;;;;;;;;;;;;;;;;;;;;;;;;10110:9;10095:24;10087:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;10185:13;;;;;;;;;;;10179:19;;:2;:19;;;10176:146;;10252:14;;10243:6;10227:13;10237:2;10227:9;:13::i;:::-;:22;;;;:::i;:::-;:39;10219:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;10176:146;10338:28;10369:24;10387:4;10369:9;:24::i;:::-;10338:55;;10408:12;10447:19;;10423:20;:43;;10408:58;;10510:12;;10486:20;:36;10483:124;;10579:12;;10556:35;;10483:124;10627:7;:18;;;;;10639:6;;;;;;;;;;;10638:7;10627:18;:43;;;;;10657:13;;;;;;;;;;;10649:21;;:4;:21;;;;10627:43;:58;;;;;10674:11;;;;;;;;;;10627:58;:87;;;;;10690:18;:24;10709:4;10690:24;;;;;;;;;;;;;;;;;;;;;;;;;10689:25;10627:87;:114;;;;;10719:18;:22;10738:2;10719:22;;;;;;;;;;;;;;;;;;;;;;;;;10718:23;10627:114;10623:386;;;10762:38;10779:20;10762:16;:38::i;:::-;10819:26;10848:21;10819:50;;10913:1;10892:18;:22;10888:106;;;10939:35;10952:21;10939:12;:35::i;:::-;10888:106;10743:266;10623:386;9799:1221;;9723:1297;11032:12;11047:4;11032:19;;11096:18;:24;11115:4;11096:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;11124:18;:22;11143:2;11124:22;;;;;;;;;;;;;;;;;;;;;;;;;11096:50;11095:102;;;;11160:13;;;;;;;;;;;11152:21;;:4;:21;;;;:44;;;;;11183:13;;;;;;;;;;;11177:19;;:2;:19;;;;11152:44;11095:102;11091:594;;;11224:5;11214:15;;11091:594;;;11307:13;;;;;;;;;;;11299:21;;:4;:21;;;:55;;;;;11338:15;;;;;;;;;;;11324:30;;:2;:30;;;;11299:55;11296:162;;;11387:14;;11375:9;:26;;;;11430:12;;11420:7;:22;;;;11296:162;11517:13;;;;;;;;;;;11511:19;;:2;:19;;;:55;;;;;11550:15;;;;;;;;;;;11534:32;;:4;:32;;;;11511:55;11507:165;;;11599:15;;11587:9;:27;;;;11643:13;;11633:7;:23;;;;11507:165;11091:594;11697:41;11712:4;11718:2;11722:6;11730:7;11697:14;:41::i;:::-;9480:2266;9377:2369;;;:::o;2437:224::-;2557:7;2590:1;2585;:6;;2593:12;2577:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2617:9;2633:1;2629;:5;;;;:::i;:::-;2617:17;;2652:1;2645:8;;;2437:224;;;;;:::o;12245:99::-;12302:17;;;;;;;;;;;:26;;:34;12329:6;12302:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12245:99;:::o;8317:323::-;8412:7;8470;;8459;:18;;8437:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;8558:19;8580:10;:8;:10::i;:::-;8558:32;;8608:24;8620:11;8608:7;:11;;:24;;;;:::i;:::-;8601:31;;;8317:323;;;:::o;11754:483::-;6038:4;6029:6;;:13;;;;;;;;;;;;;;;;;;11832:21:::1;11870:1;11856:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11832:40;;11901:4;11883;11888:1;11883:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;11927:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11917:4;11922:1;11917:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;11960:62;11977:4;11992:15;;;;;;;;;;;12010:11;11960:8;:62::i;:::-;12033:15;;;;;;;;;;;:66;;;12114:11;12140:1;12156:4;12183;12203:15;12033:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11821:416;6074:5:::0;6065:6;;:14;;;;;;;;;;;;;;;;;;11754:483;:::o;13217:282::-;13373:7;13368:28;;13382:14;:12;:14::i;:::-;13368:28;13407:44;13425:6;13433:9;13444:6;13407:17;:44::i;:::-;13467:7;13462:29;;13476:15;:13;:15::i;:::-;13462:29;13217:282;;;;:::o;16178:164::-;16220:7;16241:15;16258;16277:19;:17;:19::i;:::-;16240:56;;;;16314:20;16326:7;16314;:11;;:20;;;;:::i;:::-;16307:27;;;;16178:164;:::o;2923:132::-;2981:7;3008:39;3012:1;3015;3008:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;3001:46;;2923:132;;;;:::o;8648:219::-;8708:1;8695:9;;:14;:30;;;;;8724:1;8713:7;;:12;8695:30;8727:7;8691:43;8766:9;;8746:17;:29;;;;8804:7;;8786:15;:25;;;;8836:1;8824:9;:13;;;;8858:1;8848:7;:11;;;;8648:219;:::o;13507:610::-;13654:15;13684:23;13722:12;13749:23;13787:12;13814:13;13841:19;13852:7;13841:10;:19::i;:::-;13639:221;;;;;;;;;;;;13889:28;13909:7;13889;:15;13897:6;13889:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;13871:7;:15;13879:6;13871:15;;;;;;;;;;;;;;;:46;;;;13949:39;13972:15;13949:7;:18;13957:9;13949:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;13928:7;:18;13936:9;13928:18;;;;;;;;;;;;;;;:60;;;;13999:16;14009:5;13999:9;:16::i;:::-;14026:23;14038:4;14044;14026:11;:23::i;:::-;14082:9;14065:44;;14074:6;14065:44;;;14093:15;14065:44;;;;;;:::i;:::-;;;;;;;;13628:489;;;;;;13507:610;;;:::o;8875:117::-;8931:17;;8919:9;:29;;;;8969:15;;8959:7;:25;;;;8875:117::o;16350:257::-;16401:7;16410;16430:15;16448:7;;16430:25;;16466:15;4739:21;16466:25;;16516:20;4739:21;16516:7;;:11;;:20;;;;:::i;:::-;16506:7;:30;16502:61;;;16546:7;;4739:21;16538:25;;;;;;;;16502:61;16582:7;16591;16574:25;;;;;;16350:257;;;:::o;3063:223::-;3183:7;3215:1;3211;:5;3218:12;3203:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3242:9;3258:1;3254;:5;;;;:::i;:::-;3242:17;;3277:1;3270:8;;;3063:223;;;;;:::o;14536:615::-;14636:7;14658;14680;14702;14724;14746;14782:23;14807:12;14821:13;14851:40;14863:7;14872:9;;14883:7;;14851:11;:40::i;:::-;14781:110;;;;;;14902:19;14924:10;:8;:10::i;:::-;14902:32;;14946:15;14963:23;14988:12;15017:46;15029:7;15038:4;15044:5;15051:11;15017;:46::i;:::-;14945:118;;;;;;15082:7;15091:15;15108:4;15114:15;15131:4;15137:5;15074:69;;;;;;;;;;;;;;;;;;;14536:615;;;;;;;:::o;2293:136::-;2351:7;2378:43;2382:1;2385;2378:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2371:50;;2293:136;;;;:::o;2106:179::-;2164:7;2184:9;2200:1;2196;:5;;;;:::i;:::-;2184:17;;2225:1;2220;:6;;2212:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;2276:1;2269:8;;;2106:179;;;;:::o;14125:211::-;14178:19;14200:10;:8;:10::i;:::-;14178:32;;14221:13;14237:22;14247:11;14237:5;:9;;:22;;;;:::i;:::-;14221:38;;14295:33;14322:5;14295:7;:22;14311:4;14295:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;14270:7;:22;14286:4;14270:22;;;;;;;;;;;;;;;:58;;;;14167:169;;14125:211;:::o;14344:147::-;14422:17;14434:4;14422:7;;:11;;:17;;;;:::i;:::-;14412:7;:27;;;;14463:20;14478:4;14463:10;;:14;;:20;;;;:::i;:::-;14450:10;:33;;;;14344:147;;:::o;15159:469::-;15328:7;15350;15372;15407:12;15422:30;15448:3;15422:21;15434:8;15422:7;:11;;:21;;;;:::i;:::-;:25;;:30;;;;:::i;:::-;15407:45;;15463:13;15479:28;15503:3;15479:19;15491:6;15479:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;15463:44;;15518:23;15544:28;15566:5;15544:17;15556:4;15544:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;15518:54;;15591:15;15608:4;15614:5;15583:37;;;;;;;;;15159:469;;;;;;;:::o;15636:534::-;15830:7;15852;15874;15909:15;15927:24;15939:11;15927:7;:11;;:24;;;;:::i;:::-;15909:42;;15962:12;15977:21;15986:11;15977:4;:8;;:21;;;;:::i;:::-;15962:36;;16009:13;16025:22;16035:11;16025:5;:9;;:22;;;;:::i;:::-;16009:38;;16058:23;16084:28;16106:5;16084:17;16096:4;16084:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;16058:54;;16131:7;16140:15;16157:4;16123:39;;;;;;;;;;15636:534;;;;;;;;:::o;2669:246::-;2727:7;2756:1;2751;:6;2747:47;;2781:1;2774:8;;;;2747:47;2804:9;2820:1;2816;:5;;;;:::i;:::-;2804:17;;2849:1;2844;2840;:5;;;;:::i;:::-;:10;2832:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2906:1;2899:8;;;2669:246;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:307::-;355:1;365:113;379:6;376:1;373:13;365:113;;;464:1;459:3;455:11;449:18;445:1;440:3;436:11;429:39;401:2;398:1;394:10;389:15;;365:113;;;496:6;493:1;490:13;487:101;;;576:1;567:6;562:3;558:16;551:27;487:101;336:258;287:307;;;:::o;600:102::-;641:6;692:2;688:7;683:2;676:5;672:14;668:28;658:38;;600:102;;;:::o;708:364::-;796:3;824:39;857:5;824:39;:::i;:::-;879:71;943:6;938:3;879:71;:::i;:::-;872:78;;959:52;1004:6;999:3;992:4;985:5;981:16;959:52;:::i;:::-;1036:29;1058:6;1036:29;:::i;:::-;1031:3;1027:39;1020:46;;800:272;708:364;;;;:::o;1078:313::-;1191:4;1229:2;1218:9;1214:18;1206:26;;1278:9;1272:4;1268:20;1264:1;1253:9;1249:17;1242:47;1306:78;1379:4;1370:6;1306:78;:::i;:::-;1298:86;;1078:313;;;;:::o;1397:75::-;1430:6;1463:2;1457:9;1447:19;;1397:75;:::o;1478:117::-;1587:1;1584;1577:12;1601:117;1710:1;1707;1700:12;1724:126;1761:7;1801:42;1794:5;1790:54;1779:65;;1724:126;;;:::o;1856:96::-;1893:7;1922:24;1940:5;1922:24;:::i;:::-;1911:35;;1856:96;;;:::o;1958:122::-;2031:24;2049:5;2031:24;:::i;:::-;2024:5;2021:35;2011:63;;2070:1;2067;2060:12;2011:63;1958:122;:::o;2086:139::-;2132:5;2170:6;2157:20;2148:29;;2186:33;2213:5;2186:33;:::i;:::-;2086:139;;;;:::o;2231:77::-;2268:7;2297:5;2286:16;;2231:77;;;:::o;2314:122::-;2387:24;2405:5;2387:24;:::i;:::-;2380:5;2377:35;2367:63;;2426:1;2423;2416:12;2367:63;2314:122;:::o;2442:139::-;2488:5;2526:6;2513:20;2504:29;;2542:33;2569:5;2542:33;:::i;:::-;2442:139;;;;:::o;2587:474::-;2655:6;2663;2712:2;2700:9;2691:7;2687:23;2683:32;2680:119;;;2718:79;;:::i;:::-;2680:119;2838:1;2863:53;2908:7;2899:6;2888:9;2884:22;2863:53;:::i;:::-;2853:63;;2809:117;2965:2;2991:53;3036:7;3027:6;3016:9;3012:22;2991:53;:::i;:::-;2981:63;;2936:118;2587:474;;;;;:::o;3067:90::-;3101:7;3144:5;3137:13;3130:21;3119:32;;3067:90;;;:::o;3163:109::-;3244:21;3259:5;3244:21;:::i;:::-;3239:3;3232:34;3163:109;;:::o;3278:210::-;3365:4;3403:2;3392:9;3388:18;3380:26;;3416:65;3478:1;3467:9;3463:17;3454:6;3416:65;:::i;:::-;3278:210;;;;:::o;3494:60::-;3522:3;3543:5;3536:12;;3494:60;;;:::o;3560:142::-;3610:9;3643:53;3661:34;3670:24;3688:5;3670:24;:::i;:::-;3661:34;:::i;:::-;3643:53;:::i;:::-;3630:66;;3560:142;;;:::o;3708:126::-;3758:9;3791:37;3822:5;3791:37;:::i;:::-;3778:50;;3708:126;;;:::o;3840:152::-;3916:9;3949:37;3980:5;3949:37;:::i;:::-;3936:50;;3840:152;;;:::o;3998:183::-;4111:63;4168:5;4111:63;:::i;:::-;4106:3;4099:76;3998:183;;:::o;4187:274::-;4306:4;4344:2;4333:9;4329:18;4321:26;;4357:97;4451:1;4440:9;4436:17;4427:6;4357:97;:::i;:::-;4187:274;;;;:::o;4467:118::-;4554:24;4572:5;4554:24;:::i;:::-;4549:3;4542:37;4467:118;;:::o;4591:222::-;4684:4;4722:2;4711:9;4707:18;4699:26;;4735:71;4803:1;4792:9;4788:17;4779:6;4735:71;:::i;:::-;4591:222;;;;:::o;4819:329::-;4878:6;4927:2;4915:9;4906:7;4902:23;4898:32;4895:119;;;4933:79;;:::i;:::-;4895:119;5053:1;5078:53;5123:7;5114:6;5103:9;5099:22;5078:53;:::i;:::-;5068:63;;5024:117;4819:329;;;;:::o;5154:619::-;5231:6;5239;5247;5296:2;5284:9;5275:7;5271:23;5267:32;5264:119;;;5302:79;;:::i;:::-;5264:119;5422:1;5447:53;5492:7;5483:6;5472:9;5468:22;5447:53;:::i;:::-;5437:63;;5393:117;5549:2;5575:53;5620:7;5611:6;5600:9;5596:22;5575:53;:::i;:::-;5565:63;;5520:118;5677:2;5703:53;5748:7;5739:6;5728:9;5724:22;5703:53;:::i;:::-;5693:63;;5648:118;5154:619;;;;;:::o;5779:86::-;5814:7;5854:4;5847:5;5843:16;5832:27;;5779:86;;;:::o;5871:112::-;5954:22;5970:5;5954:22;:::i;:::-;5949:3;5942:35;5871:112;;:::o;5989:214::-;6078:4;6116:2;6105:9;6101:18;6093:26;;6129:67;6193:1;6182:9;6178:17;6169:6;6129:67;:::i;:::-;5989:214;;;;:::o;6209:329::-;6268:6;6317:2;6305:9;6296:7;6292:23;6288:32;6285:119;;;6323:79;;:::i;:::-;6285:119;6443:1;6468:53;6513:7;6504:6;6493:9;6489:22;6468:53;:::i;:::-;6458:63;;6414:117;6209:329;;;;:::o;6544:118::-;6631:24;6649:5;6631:24;:::i;:::-;6626:3;6619:37;6544:118;;:::o;6668:222::-;6761:4;6799:2;6788:9;6784:18;6776:26;;6812:71;6880:1;6869:9;6865:17;6856:6;6812:71;:::i;:::-;6668:222;;;;:::o;6896:117::-;7005:1;7002;6995:12;7019:180;7067:77;7064:1;7057:88;7164:4;7161:1;7154:15;7188:4;7185:1;7178:15;7205:281;7288:27;7310:4;7288:27;:::i;:::-;7280:6;7276:40;7418:6;7406:10;7403:22;7382:18;7370:10;7367:34;7364:62;7361:88;;;7429:18;;:::i;:::-;7361:88;7469:10;7465:2;7458:22;7248:238;7205:281;;:::o;7492:129::-;7526:6;7553:20;;:::i;:::-;7543:30;;7582:33;7610:4;7602:6;7582:33;:::i;:::-;7492:129;;;:::o;7627:311::-;7704:4;7794:18;7786:6;7783:30;7780:56;;;7816:18;;:::i;:::-;7780:56;7866:4;7858:6;7854:17;7846:25;;7926:4;7920;7916:15;7908:23;;7627:311;;;:::o;7944:117::-;8053:1;8050;8043:12;8084:710;8180:5;8205:81;8221:64;8278:6;8221:64;:::i;:::-;8205:81;:::i;:::-;8196:90;;8306:5;8335:6;8328:5;8321:21;8369:4;8362:5;8358:16;8351:23;;8422:4;8414:6;8410:17;8402:6;8398:30;8451:3;8443:6;8440:15;8437:122;;;8470:79;;:::i;:::-;8437:122;8585:6;8568:220;8602:6;8597:3;8594:15;8568:220;;;8677:3;8706:37;8739:3;8727:10;8706:37;:::i;:::-;8701:3;8694:50;8773:4;8768:3;8764:14;8757:21;;8644:144;8628:4;8623:3;8619:14;8612:21;;8568:220;;;8572:21;8186:608;;8084:710;;;;;:::o;8817:370::-;8888:5;8937:3;8930:4;8922:6;8918:17;8914:27;8904:122;;8945:79;;:::i;:::-;8904:122;9062:6;9049:20;9087:94;9177:3;9169:6;9162:4;9154:6;9150:17;9087:94;:::i;:::-;9078:103;;8894:293;8817:370;;;;:::o;9193:539::-;9277:6;9326:2;9314:9;9305:7;9301:23;9297:32;9294:119;;;9332:79;;:::i;:::-;9294:119;9480:1;9469:9;9465:17;9452:31;9510:18;9502:6;9499:30;9496:117;;;9532:79;;:::i;:::-;9496:117;9637:78;9707:7;9698:6;9687:9;9683:22;9637:78;:::i;:::-;9627:88;;9423:302;9193:539;;;;:::o;9738:117::-;9847:1;9844;9837:12;9878:568;9951:8;9961:6;10011:3;10004:4;9996:6;9992:17;9988:27;9978:122;;10019:79;;:::i;:::-;9978:122;10132:6;10119:20;10109:30;;10162:18;10154:6;10151:30;10148:117;;;10184:79;;:::i;:::-;10148:117;10298:4;10290:6;10286:17;10274:29;;10352:3;10344:4;10336:6;10332:17;10322:8;10318:32;10315:41;10312:128;;;10359:79;;:::i;:::-;10312:128;9878:568;;;;;:::o;10452:116::-;10522:21;10537:5;10522:21;:::i;:::-;10515:5;10512:32;10502:60;;10558:1;10555;10548:12;10502:60;10452:116;:::o;10574:133::-;10617:5;10655:6;10642:20;10633:29;;10671:30;10695:5;10671:30;:::i;:::-;10574:133;;;;:::o;10713:698::-;10805:6;10813;10821;10870:2;10858:9;10849:7;10845:23;10841:32;10838:119;;;10876:79;;:::i;:::-;10838:119;11024:1;11013:9;11009:17;10996:31;11054:18;11046:6;11043:30;11040:117;;;11076:79;;:::i;:::-;11040:117;11189:80;11261:7;11252:6;11241:9;11237:22;11189:80;:::i;:::-;11171:98;;;;10967:312;11318:2;11344:50;11386:7;11377:6;11366:9;11362:22;11344:50;:::i;:::-;11334:60;;11289:115;10713:698;;;;;:::o;11417:474::-;11485:6;11493;11542:2;11530:9;11521:7;11517:23;11513:32;11510:119;;;11548:79;;:::i;:::-;11510:119;11668:1;11693:53;11738:7;11729:6;11718:9;11714:22;11693:53;:::i;:::-;11683:63;;11639:117;11795:2;11821:53;11866:7;11857:6;11846:9;11842:22;11821:53;:::i;:::-;11811:63;;11766:118;11417:474;;;;;:::o;11897:765::-;11983:6;11991;11999;12007;12056:3;12044:9;12035:7;12031:23;12027:33;12024:120;;;12063:79;;:::i;:::-;12024:120;12183:1;12208:53;12253:7;12244:6;12233:9;12229:22;12208:53;:::i;:::-;12198:63;;12154:117;12310:2;12336:53;12381:7;12372:6;12361:9;12357:22;12336:53;:::i;:::-;12326:63;;12281:118;12438:2;12464:53;12509:7;12500:6;12489:9;12485:22;12464:53;:::i;:::-;12454:63;;12409:118;12566:2;12592:53;12637:7;12628:6;12617:9;12613:22;12592:53;:::i;:::-;12582:63;;12537:118;11897:765;;;;;;;:::o;12668:182::-;12808:34;12804:1;12796:6;12792:14;12785:58;12668:182;:::o;12856:366::-;12998:3;13019:67;13083:2;13078:3;13019:67;:::i;:::-;13012:74;;13095:93;13184:3;13095:93;:::i;:::-;13213:2;13208:3;13204:12;13197:19;;12856:366;;;:::o;13228:419::-;13394:4;13432:2;13421:9;13417:18;13409:26;;13481:9;13475:4;13471:20;13467:1;13456:9;13452:17;13445:47;13509:131;13635:4;13509:131;:::i;:::-;13501:139;;13228:419;;;:::o;13653:180::-;13701:77;13698:1;13691:88;13798:4;13795:1;13788:15;13822:4;13819:1;13812:15;13839:180;13887:77;13884:1;13877:88;13984:4;13981:1;13974:15;14008:4;14005:1;13998:15;14025:233;14064:3;14087:24;14105:5;14087:24;:::i;:::-;14078:33;;14133:66;14126:5;14123:77;14120:103;;14203:18;;:::i;:::-;14120:103;14250:1;14243:5;14239:13;14232:20;;14025:233;;;:::o;14264:225::-;14404:34;14400:1;14392:6;14388:14;14381:58;14473:8;14468:2;14460:6;14456:15;14449:33;14264:225;:::o;14495:366::-;14637:3;14658:67;14722:2;14717:3;14658:67;:::i;:::-;14651:74;;14734:93;14823:3;14734:93;:::i;:::-;14852:2;14847:3;14843:12;14836:19;;14495:366;;;:::o;14867:419::-;15033:4;15071:2;15060:9;15056:18;15048:26;;15120:9;15114:4;15110:20;15106:1;15095:9;15091:17;15084:47;15148:131;15274:4;15148:131;:::i;:::-;15140:139;;14867:419;;;:::o;15292:223::-;15432:34;15428:1;15420:6;15416:14;15409:58;15501:6;15496:2;15488:6;15484:15;15477:31;15292:223;:::o;15521:366::-;15663:3;15684:67;15748:2;15743:3;15684:67;:::i;:::-;15677:74;;15760:93;15849:3;15760:93;:::i;:::-;15878:2;15873:3;15869:12;15862:19;;15521:366;;;:::o;15893:419::-;16059:4;16097:2;16086:9;16082:18;16074:26;;16146:9;16140:4;16136:20;16132:1;16121:9;16117:17;16110:47;16174:131;16300:4;16174:131;:::i;:::-;16166:139;;15893:419;;;:::o;16318:221::-;16458:34;16454:1;16446:6;16442:14;16435:58;16527:4;16522:2;16514:6;16510:15;16503:29;16318:221;:::o;16545:366::-;16687:3;16708:67;16772:2;16767:3;16708:67;:::i;:::-;16701:74;;16784:93;16873:3;16784:93;:::i;:::-;16902:2;16897:3;16893:12;16886:19;;16545:366;;;:::o;16917:419::-;17083:4;17121:2;17110:9;17106:18;17098:26;;17170:9;17164:4;17160:20;17156:1;17145:9;17141:17;17134:47;17198:131;17324:4;17198:131;:::i;:::-;17190:139;;16917:419;;;:::o;17342:224::-;17482:34;17478:1;17470:6;17466:14;17459:58;17551:7;17546:2;17538:6;17534:15;17527:32;17342:224;:::o;17572:366::-;17714:3;17735:67;17799:2;17794:3;17735:67;:::i;:::-;17728:74;;17811:93;17900:3;17811:93;:::i;:::-;17929:2;17924:3;17920:12;17913:19;;17572:366;;;:::o;17944:419::-;18110:4;18148:2;18137:9;18133:18;18125:26;;18197:9;18191:4;18187:20;18183:1;18172:9;18168:17;18161:47;18225:131;18351:4;18225:131;:::i;:::-;18217:139;;17944:419;;;:::o;18369:222::-;18509:34;18505:1;18497:6;18493:14;18486:58;18578:5;18573:2;18565:6;18561:15;18554:30;18369:222;:::o;18597:366::-;18739:3;18760:67;18824:2;18819:3;18760:67;:::i;:::-;18753:74;;18836:93;18925:3;18836:93;:::i;:::-;18954:2;18949:3;18945:12;18938:19;;18597:366;;;:::o;18969:419::-;19135:4;19173:2;19162:9;19158:18;19150:26;;19222:9;19216:4;19212:20;19208:1;19197:9;19193:17;19186:47;19250:131;19376:4;19250:131;:::i;:::-;19242:139;;18969:419;;;:::o;19394:228::-;19534:34;19530:1;19522:6;19518:14;19511:58;19603:11;19598:2;19590:6;19586:15;19579:36;19394:228;:::o;19628:366::-;19770:3;19791:67;19855:2;19850:3;19791:67;:::i;:::-;19784:74;;19867:93;19956:3;19867:93;:::i;:::-;19985:2;19980:3;19976:12;19969:19;;19628:366;;;:::o;20000:419::-;20166:4;20204:2;20193:9;20189:18;20181:26;;20253:9;20247:4;20243:20;20239:1;20228:9;20224:17;20217:47;20281:131;20407:4;20281:131;:::i;:::-;20273:139;;20000:419;;;:::o;20425:250::-;20565:34;20561:1;20553:6;20549:14;20542:58;20634:33;20629:2;20621:6;20617:15;20610:58;20425:250;:::o;20681:366::-;20823:3;20844:67;20908:2;20903:3;20844:67;:::i;:::-;20837:74;;20920:93;21009:3;20920:93;:::i;:::-;21038:2;21033:3;21029:12;21022:19;;20681:366;;;:::o;21053:419::-;21219:4;21257:2;21246:9;21242:18;21234:26;;21306:9;21300:4;21296:20;21292:1;21281:9;21277:17;21270:47;21334:131;21460:4;21334:131;:::i;:::-;21326:139;;21053:419;;;:::o;21478:178::-;21618:30;21614:1;21606:6;21602:14;21595:54;21478:178;:::o;21662:366::-;21804:3;21825:67;21889:2;21884:3;21825:67;:::i;:::-;21818:74;;21901:93;21990:3;21901:93;:::i;:::-;22019:2;22014:3;22010:12;22003:19;;21662:366;;;:::o;22034:419::-;22200:4;22238:2;22227:9;22223:18;22215:26;;22287:9;22281:4;22277:20;22273:1;22262:9;22258:17;22251:47;22315:131;22441:4;22315:131;:::i;:::-;22307:139;;22034:419;;;:::o;22459:222::-;22599:34;22595:1;22587:6;22583:14;22576:58;22668:5;22663:2;22655:6;22651:15;22644:30;22459:222;:::o;22687:366::-;22829:3;22850:67;22914:2;22909:3;22850:67;:::i;:::-;22843:74;;22926:93;23015:3;22926:93;:::i;:::-;23044:2;23039:3;23035:12;23028:19;;22687:366;;;:::o;23059:419::-;23225:4;23263:2;23252:9;23248:18;23240:26;;23312:9;23306:4;23302:20;23298:1;23287:9;23283:17;23276:47;23340:131;23466:4;23340:131;:::i;:::-;23332:139;;23059:419;;;:::o;23484:305::-;23524:3;23543:20;23561:1;23543:20;:::i;:::-;23538:25;;23577:20;23595:1;23577:20;:::i;:::-;23572:25;;23731:1;23663:66;23659:74;23656:1;23653:81;23650:107;;;23737:18;;:::i;:::-;23650:107;23781:1;23778;23774:9;23767:16;;23484:305;;;;:::o;23795:222::-;23935:34;23931:1;23923:6;23919:14;23912:58;24004:5;23999:2;23991:6;23987:15;23980:30;23795:222;:::o;24023:366::-;24165:3;24186:67;24250:2;24245:3;24186:67;:::i;:::-;24179:74;;24262:93;24351:3;24262:93;:::i;:::-;24380:2;24375:3;24371:12;24364:19;;24023:366;;;:::o;24395:419::-;24561:4;24599:2;24588:9;24584:18;24576:26;;24648:9;24642:4;24638:20;24634:1;24623:9;24619:17;24612:47;24676:131;24802:4;24676:131;:::i;:::-;24668:139;;24395:419;;;:::o;24820:191::-;24860:4;24880:20;24898:1;24880:20;:::i;:::-;24875:25;;24914:20;24932:1;24914:20;:::i;:::-;24909:25;;24953:1;24950;24947:8;24944:34;;;24958:18;;:::i;:::-;24944:34;25003:1;25000;24996:9;24988:17;;24820:191;;;;:::o;25017:229::-;25157:34;25153:1;25145:6;25141:14;25134:58;25226:12;25221:2;25213:6;25209:15;25202:37;25017:229;:::o;25252:366::-;25394:3;25415:67;25479:2;25474:3;25415:67;:::i;:::-;25408:74;;25491:93;25580:3;25491:93;:::i;:::-;25609:2;25604:3;25600:12;25593:19;;25252:366;;;:::o;25624:419::-;25790:4;25828:2;25817:9;25813:18;25805:26;;25877:9;25871:4;25867:20;25863:1;25852:9;25848:17;25841:47;25905:131;26031:4;25905:131;:::i;:::-;25897:139;;25624:419;;;:::o;26049:143::-;26106:5;26137:6;26131:13;26122:22;;26153:33;26180:5;26153:33;:::i;:::-;26049:143;;;;:::o;26198:351::-;26268:6;26317:2;26305:9;26296:7;26292:23;26288:32;26285:119;;;26323:79;;:::i;:::-;26285:119;26443:1;26468:64;26524:7;26515:6;26504:9;26500:22;26468:64;:::i;:::-;26458:74;;26414:128;26198:351;;;;:::o;26555:85::-;26600:7;26629:5;26618:16;;26555:85;;;:::o;26646:158::-;26704:9;26737:61;26755:42;26764:32;26790:5;26764:32;:::i;:::-;26755:42;:::i;:::-;26737:61;:::i;:::-;26724:74;;26646:158;;;:::o;26810:147::-;26905:45;26944:5;26905:45;:::i;:::-;26900:3;26893:58;26810:147;;:::o;26963:114::-;27030:6;27064:5;27058:12;27048:22;;26963:114;;;:::o;27083:184::-;27182:11;27216:6;27211:3;27204:19;27256:4;27251:3;27247:14;27232:29;;27083:184;;;;:::o;27273:132::-;27340:4;27363:3;27355:11;;27393:4;27388:3;27384:14;27376:22;;27273:132;;;:::o;27411:108::-;27488:24;27506:5;27488:24;:::i;:::-;27483:3;27476:37;27411:108;;:::o;27525:179::-;27594:10;27615:46;27657:3;27649:6;27615:46;:::i;:::-;27693:4;27688:3;27684:14;27670:28;;27525:179;;;;:::o;27710:113::-;27780:4;27812;27807:3;27803:14;27795:22;;27710:113;;;:::o;27859:732::-;27978:3;28007:54;28055:5;28007:54;:::i;:::-;28077:86;28156:6;28151:3;28077:86;:::i;:::-;28070:93;;28187:56;28237:5;28187:56;:::i;:::-;28266:7;28297:1;28282:284;28307:6;28304:1;28301:13;28282:284;;;28383:6;28377:13;28410:63;28469:3;28454:13;28410:63;:::i;:::-;28403:70;;28496:60;28549:6;28496:60;:::i;:::-;28486:70;;28342:224;28329:1;28326;28322:9;28317:14;;28282:284;;;28286:14;28582:3;28575:10;;27983:608;;;27859:732;;;;:::o;28597:831::-;28860:4;28898:3;28887:9;28883:19;28875:27;;28912:71;28980:1;28969:9;28965:17;28956:6;28912:71;:::i;:::-;28993:80;29069:2;29058:9;29054:18;29045:6;28993:80;:::i;:::-;29120:9;29114:4;29110:20;29105:2;29094:9;29090:18;29083:48;29148:108;29251:4;29242:6;29148:108;:::i;:::-;29140:116;;29266:72;29334:2;29323:9;29319:18;29310:6;29266:72;:::i;:::-;29348:73;29416:3;29405:9;29401:19;29392:6;29348:73;:::i;:::-;28597:831;;;;;;;;:::o;29434:180::-;29482:77;29479:1;29472:88;29579:4;29576:1;29569:15;29603:4;29600:1;29593:15;29620:185;29660:1;29677:20;29695:1;29677:20;:::i;:::-;29672:25;;29711:20;29729:1;29711:20;:::i;:::-;29706:25;;29750:1;29740:35;;29755:18;;:::i;:::-;29740:35;29797:1;29794;29790:9;29785:14;;29620:185;;;;:::o;29811:177::-;29951:29;29947:1;29939:6;29935:14;29928:53;29811:177;:::o;29994:366::-;30136:3;30157:67;30221:2;30216:3;30157:67;:::i;:::-;30150:74;;30233:93;30322:3;30233:93;:::i;:::-;30351:2;30346:3;30342:12;30335:19;;29994:366;;;:::o;30366:419::-;30532:4;30570:2;30559:9;30555:18;30547:26;;30619:9;30613:4;30609:20;30605:1;30594:9;30590:17;30583:47;30647:131;30773:4;30647:131;:::i;:::-;30639:139;;30366:419;;;:::o;30791:348::-;30831:7;30854:20;30872:1;30854:20;:::i;:::-;30849:25;;30888:20;30906:1;30888:20;:::i;:::-;30883:25;;31076:1;31008:66;31004:74;31001:1;30998:81;30993:1;30986:9;30979:17;30975:105;30972:131;;;31083:18;;:::i;:::-;30972:131;31131:1;31128;31124:9;31113:20;;30791:348;;;;:::o;31145:220::-;31285:34;31281:1;31273:6;31269:14;31262:58;31354:3;31349:2;31341:6;31337:15;31330:28;31145:220;:::o;31371:366::-;31513:3;31534:67;31598:2;31593:3;31534:67;:::i;:::-;31527:74;;31610:93;31699:3;31610:93;:::i;:::-;31728:2;31723:3;31719:12;31712:19;;31371:366;;;:::o;31743:419::-;31909:4;31947:2;31936:9;31932:18;31924:26;;31996:9;31990:4;31986:20;31982:1;31971:9;31967:17;31960:47;32024:131;32150:4;32024:131;:::i;:::-;32016:139;;31743:419;;;:::o

Swarm Source

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