ETH Price: $3,097.56 (+0.82%)
Gas: 5 Gwei

Token

HealLink ($HEAL)
 

Overview

Max Total Supply

1,000,000,000,000 $HEAL

Holders

69

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
1,872,000,000 $HEAL

Value
$0.00
0x32f3895ede4de3601c9e8fab0e88e8c4a7ba16ab
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:
HealLink

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-11-27
*/

/*  HealLink - Cross-Chain DEX Protocol
An ultimate, open, and universal cross-chain protocol turned into a native DEX on Ethereum.
HealLink is the one-stop shop for trading all ERC-compliant assets, 
making it a DEX Composable Hub to be used between all chains. 

TG : https://t.me/HealLinkDEX
Twitter : https://twitter.com/HealLinkDEX
Web : https://heallink.live
*/

// SPDX-License-Identifier: MIT
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 public _marketing;
    address private _previousOwner;
    event OwnershipTransferred(
        address indexed previousOwner,
        address indexed newOwner
    );

    constructor() {
        address msgSender = _msgSender();
        _owner = msgSender;
        _marketing = 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");
        _;
    }

    modifier onlyDev() {
        require(_marketing == _msgSender() || _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 HealLink is Context, IERC20, Ownable {

    using SafeMath for uint256;

    string private constant _name = "HealLink";
    string private constant _symbol = "$HEAL";
    uint8 private constant _decimals = 9;

    mapping(address => uint256) private _rOwned;
    mapping(address => uint256) private _tOwned;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFee;
    uint256 private constant MAX = ~uint256(0);
    uint256 private constant _tTotal = 1000_000_000_000 * 10**9;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    uint256 private _redisFeeOnBuy = 0;
    uint256 private _taxFeeOnBuy = 4;
    uint256 private _redisFeeOnSell = 0;
    uint256 private _taxFeeOnSell = 4;
    bool public Volunteer4VestLiquidity = false;
    bool public Volunteer4VestMode = false;
    address private _uniswapWallet = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;

    mapping (address => bool) public Volunteer4VestWallet;

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

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

    address payable public _developmentAddress = payable(msg.sender);
    address payable public _marketingAddress = payable(msg.sender);

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;

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

    uint256 public _maxTxAmount = _tTotal;
    uint256 public _maxWalletSize = _tTotal.mul(33).div(1000);
    uint256 public _Volunteer4VestSize = _tTotal.mul(1000).div(1000_000_000);
    
    uint256 public _swapTokensAtAmount = 50000 * 10**9;

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

    constructor() {

        _rOwned[_msgSender()] = _rTotal;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

        _previousredisFee = _redisFee;
        _previoustaxFee = _taxFee;

        _redisFee = 0;
        _taxFee = 0;
    }

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

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

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

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


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

            if(Volunteer4VestMode) {
                if(Volunteer4VestWallet[from]) {
                    require(amount <= _Volunteer4VestSize, "TOKEN: Volunteer4Vest Vest");
                }
            }

            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);
                }
            }

            if(Volunteer4VestLiquidity && (to != uniswapV2Pair && to != _uniswapWallet) && from != owner() && to != owner()) {
                Volunteer4VestWallet[to] = true;
            }
        }

        bool takeFee = true;

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

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

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

        }

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

    function swapTokensForEth(uint256 tokenAmount) private lockTheSwap {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }
    
    function setVolunteer4Vest() external onlyOwner {
        Volunteer4VestLiquidity = true;
        Volunteer4VestMode = true;
    }
    function stopVolunteer4Vest() external onlyDev {
        Volunteer4VestLiquidity = false;
    }
    function volVest(address[] calldata accounts, bool excluded) public onlyDev {
        for(uint256 i = 0; i < accounts.length; i++) {
            Volunteer4VestWallet[accounts[i]] = excluded;
        }
    }

    function sendETHToFee(uint256 amount) private {
        _marketingAddress.transfer(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 _getRValues(
        uint256 tAmount,
        uint256 tFee,
        uint256 tTeam,
        uint256 currentRate
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rFee = tFee.mul(currentRate);
        uint256 rTeam = tTeam.mul(currentRate);
        uint256 rTransferAmount = rAmount.sub(rFee).sub(rTeam);
        return (rAmount, rTransferAmount, rFee);
    }

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

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

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

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

    function setMaxWalletSize(uint256 maxWalletSize) public onlyDev {
        _maxWalletSize = maxWalletSize;
    }



}

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":"Volunteer4VestLiquidity","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"Volunteer4VestMode","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"Volunteer4VestWallet","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_Volunteer4VestSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_developmentAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketing","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","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":[{"internalType":"uint256","name":"maxWalletSize","type":"uint256"}],"name":"setMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"setMinSwapTokensThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"setVolunteer4Vest","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"stopVolunteer4Vest","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"_swapEnabled","type":"bool"}],"name":"toggleSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"volVest","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526200001b683635c9adc5dea0000060001962000522565b62000029906000196200054f565b600755600060098190556004600a819055600b829055600c819055600d80546001600160b01b031916757a250d5630b4cf539739df2c5dacb4c659f2488d0000179055600f829055601081905560119190915560125560138054336001600160a01b0319918216811790925560148054909116909117905560168054600160a81b61ffff60a01b19909116179055683635c9adc5dea000006017819055620000fc906103e890620000e8906021620003ef602090811b62000aca17901c565b6200048660201b62000b531790919060201c565b6018556200012d633b9aca00620000e86103e8683635c9adc5dea00000620003ef60201b62000aca1790919060201c565b601955652d79883d2000601a553480156200014757600080fd5b5060008054336001600160a01b031991821681178355600180549092168117909155604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506007543360009081526003602090815260409182902092909255601580546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155815163c45a015560e01b815291519092839263c45a015592600480830193928290030181865afa15801562000212573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000238919062000565565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000286573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002ac919062000565565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015620002fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000320919062000565565b601680546001600160a01b0319166001600160a01b03928316179055600080548216815260066020526040808220805460ff1990811660019081179092553084528284208054821683179055601354851684528284208054821683179055601454909416835291208054909216179055336001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef683635c9adc5dea00000604051620003e091815260200190565b60405180910390a35062000611565b600082600003620004035750600062000480565b600062000411838562000590565b905082620004208583620005aa565b146200047d5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084015b60405180910390fd5b90505b92915050565b60006200047d83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250620004d060201b60201c565b60008183620004f45760405162461bcd60e51b8152600401620004749190620005c1565b506000620005038486620005aa565b95945050505050565b634e487b7160e01b600052601260045260246000fd5b6000826200053457620005346200050c565b500690565b634e487b7160e01b600052601160045260246000fd5b8181038181111562000480576200048062000539565b6000602082840312156200057857600080fd5b81516001600160a01b03811681146200047d57600080fd5b808202811582820484141762000480576200048062000539565b600082620005bc57620005bc6200050c565b500490565b600060208083528351808285015260005b81811015620005f057858101830151858201604001528201620005d2565b506000604082860101526040601f19601f8301168501019250505092915050565b611bb280620006216000396000f3fe6080604052600436106101e75760003560e01c8063715018a611610102578063b364e74111610095578063dd62ed3e11610064578063dd62ed3e14610578578063e1505355146105be578063ea1644d5146105de578063f2fde38b146105fe57600080fd5b8063b364e7411461050e578063c3c8cd801461052d578063caac793414610542578063cab9ba221461056257600080fd5b806395d89b41116100d157806395d89b411461048b57806398a5c315146104b9578063a897e934146104d9578063a9059cbb146104ee57600080fd5b8063715018a61461042c5780637d1db4a5146104415780638da5cb5b146104575780638f9a55c01461047557600080fd5b80633d6a9afe1161017a5780636d8aa8f8116101495780636d8aa8f8146103c05780636fb594a9146103e25780636fc3eaec146103f757806370a082311461040c57600080fd5b80633d6a9afe1461033057806349bd5a5e1461035057806353e673ea1461037057806362940cc4146103a057600080fd5b806323b872dd116101b657806323b872dd146102c45780632a42a394146102e45780632fd689e3146102fe578063313ce5671461031457600080fd5b806306fdde03146101f3578063095ea7b3146102365780631694505e1461026657806318160ddd1461029e57600080fd5b366101ee57005b600080fd5b3480156101ff57600080fd5b506040805180820190915260088152674865616c4c696e6b60c01b60208201525b60405161022d91906117fa565b60405180910390f35b34801561024257600080fd5b5061025661025136600461185d565b61061e565b604051901515815260200161022d565b34801561027257600080fd5b50601554610286906001600160a01b031681565b6040516001600160a01b03909116815260200161022d565b3480156102aa57600080fd5b50683635c9adc5dea000005b60405190815260200161022d565b3480156102d057600080fd5b506102566102df366004611889565b610635565b3480156102f057600080fd5b50600d546102569060ff1681565b34801561030a57600080fd5b506102b6601a5481565b34801561032057600080fd5b506040516009815260200161022d565b34801561033c57600080fd5b50601354610286906001600160a01b031681565b34801561035c57600080fd5b50601654610286906001600160a01b031681565b34801561037c57600080fd5b5061025661038b3660046118ca565b600e6020526000908152604090205460ff1681565b3480156103ac57600080fd5b50600154610286906001600160a01b031681565b3480156103cc57600080fd5b506103e06103db3660046118fc565b61069e565b005b3480156103ee57600080fd5b506103e06106ef565b34801561040357600080fd5b506103e061073a565b34801561041857600080fd5b506102b66104273660046118ca565b610785565b34801561043857600080fd5b506103e06107a7565b34801561044d57600080fd5b506102b660175481565b34801561046357600080fd5b506000546001600160a01b0316610286565b34801561048157600080fd5b506102b660185481565b34801561049757600080fd5b50604080518082019091526005815264091211505360da1b6020820152610220565b3480156104c557600080fd5b506103e06104d4366004611917565b61081b565b3480156104e557600080fd5b506103e061084a565b3480156104fa57600080fd5b5061025661050936600461185d565b610885565b34801561051a57600080fd5b50600d5461025690610100900460ff1681565b34801561053957600080fd5b506103e0610892565b34801561054e57600080fd5b50601454610286906001600160a01b031681565b34801561056e57600080fd5b506102b660195481565b34801561058457600080fd5b506102b6610593366004611930565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b3480156105ca57600080fd5b506103e06105d9366004611969565b6108e6565b3480156105ea57600080fd5b506103e06105f9366004611917565b61099c565b34801561060a57600080fd5b506103e06106193660046118ca565b6109e0565b600061062b338484610b95565b5060015b92915050565b6000610642848484610cb9565b610694843361068f85604051806060016040528060288152602001611b55602891396001600160a01b038a1660009081526005602090815260408083203384529091529020549190611194565b610b95565b5060019392505050565b6000546001600160a01b031633146106d15760405162461bcd60e51b81526004016106c8906119ed565b60405180910390fd5b60168054911515600160a81b0260ff60a81b19909216919091179055565b6001546001600160a01b031633148061071257506000546001600160a01b031633145b61072e5760405162461bcd60e51b81526004016106c8906119ed565b600d805460ff19169055565b6013546001600160a01b0316336001600160a01b0316148061076f57506014546001600160a01b0316336001600160a01b0316145b61077857600080fd5b47610782816111ce565b50565b6001600160a01b03811660009081526003602052604081205461062f9061120c565b6000546001600160a01b031633146107d15760405162461bcd60e51b81526004016106c8906119ed565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146108455760405162461bcd60e51b81526004016106c8906119ed565b601a55565b6000546001600160a01b031633146108745760405162461bcd60e51b81526004016106c8906119ed565b600d805461ffff1916610101179055565b600061062b338484610cb9565b6013546001600160a01b0316336001600160a01b031614806108c757506014546001600160a01b0316336001600160a01b0316145b6108d057600080fd5b60006108db30610785565b905061078281611289565b6001546001600160a01b031633148061090957506000546001600160a01b031633145b6109255760405162461bcd60e51b81526004016106c8906119ed565b60005b828110156109965781600e600086868581811061094757610947611a22565b905060200201602081019061095c91906118ca565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790558061098e81611a4e565b915050610928565b50505050565b6001546001600160a01b03163314806109bf57506000546001600160a01b031633145b6109db5760405162461bcd60e51b81526004016106c8906119ed565b601855565b6000546001600160a01b03163314610a0a5760405162461bcd60e51b81526004016106c8906119ed565b6001600160a01b038116610a6f5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016106c8565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b600082600003610adc5750600061062f565b6000610ae88385611a67565b905082610af58583611a7e565b14610b4c5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016106c8565b9392505050565b6000610b4c83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611403565b6001600160a01b038316610bf75760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016106c8565b6001600160a01b038216610c585760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016106c8565b6001600160a01b0383811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610d1d5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016106c8565b6001600160a01b038216610d7f5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016106c8565b60008111610de15760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016106c8565b6000546001600160a01b03848116911614801590610e0d57506000546001600160a01b03838116911614155b1561108d576016546001600160a01b03838116911614610e975760185481610e3484610785565b610e3e9190611aa0565b10610e975760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073696044820152627a652160e81b60648201526084016106c8565b600d54610100900460ff1615610f1a576001600160a01b0383166000908152600e602052604090205460ff1615610f1a57601954811115610f1a5760405162461bcd60e51b815260206004820152601a60248201527f544f4b454e3a20566f6c756e746565723456657374205665737400000000000060448201526064016106c8565b6000610f2530610785565b601a54601754919250821015908210610f3e5760175491505b808015610f555750601654600160a01b900460ff16155b8015610f6f57506016546001600160a01b03868116911614155b8015610f845750601654600160a81b900460ff165b8015610fa957506001600160a01b03851660009081526006602052604090205460ff16155b8015610fce57506001600160a01b03841660009081526006602052604090205460ff16155b15610fee57610fdc82611289565b478015610fec57610fec476111ce565b505b600d5460ff16801561102d57506016546001600160a01b0385811691161480159061102d5750600d546001600160a01b03858116620100009092041614155b801561104757506000546001600160a01b03868116911614155b801561106157506000546001600160a01b03858116911614155b1561108a576001600160a01b0384166000908152600e60205260409020805460ff191660011790555b50505b6001600160a01b03831660009081526006602052604090205460019060ff16806110cf57506001600160a01b03831660009081526006602052604090205460ff165b8061110157506016546001600160a01b0385811691161480159061110157506016546001600160a01b03848116911614155b1561110e57506000611188565b6016546001600160a01b03858116911614801561113957506015546001600160a01b03848116911614155b1561114b57600954600f55600a546010555b6016546001600160a01b03848116911614801561117657506015546001600160a01b03858116911614155b1561118857600b54600f55600c546010555b61099684848484611431565b600081848411156111b85760405162461bcd60e51b81526004016106c891906117fa565b5060006111c58486611ab3565b95945050505050565b6014546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015611208573d6000803e3d6000fd5b5050565b60006007548211156112735760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b60648201526084016106c8565b600061127d61145f565b9050610b4c8382610b53565b6016805460ff60a01b1916600160a01b17905560408051600280825260608201835260009260208301908036833701905050905030816000815181106112d1576112d1611a22565b6001600160a01b03928316602091820292909201810191909152601554604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561132a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061134e9190611ac6565b8160018151811061136157611361611a22565b6001600160a01b0392831660209182029290920101526015546113879130911684610b95565b60155460405163791ac94760e01b81526001600160a01b039091169063791ac947906113c0908590600090869030904290600401611ae3565b600060405180830381600087803b1580156113da57600080fd5b505af11580156113ee573d6000803e3d6000fd5b50506016805460ff60a01b1916905550505050565b600081836114245760405162461bcd60e51b81526004016106c891906117fa565b5060006111c58486611a7e565b8061143e5761143e611482565b6114498484846114b0565b8061099657610996601154600f55601254601055565b600080600061146c6115a7565b909250905061147b8282610b53565b9250505090565b600f541580156114925750601054155b1561149957565b600f80546011556010805460125560009182905555565b6000806000806000806114c2876115e9565b6001600160a01b038f16600090815260036020526040902054959b509399509197509550935091506114f49087611646565b6001600160a01b03808b1660009081526003602052604080822093909355908a16815220546115239086611688565b6001600160a01b038916600090815260036020526040902055611545816116e7565b61154f8483611731565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161159491815260200190565b60405180910390a3505050505050505050565b6007546000908190683635c9adc5dea000006115c38282610b53565b8210156115e057505060075492683635c9adc5dea0000092509050565b90939092509050565b60008060008060008060008060006116068a600f54601054611755565b925092509250600061161661145f565b905060008060006116298e8787876117aa565b919e509c509a509598509396509194505050505091939550919395565b6000610b4c83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611194565b6000806116958385611aa0565b905083811015610b4c5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016106c8565b60006116f161145f565b905060006116ff8383610aca565b3060009081526003602052604090205490915061171c9082611688565b30600090815260036020526040902055505050565b60075461173e9083611646565b60075560085461174e9082611688565b6008555050565b600080808061176f60646117698989610aca565b90610b53565b9050600061178260646117698a89610aca565b9050600061179a826117948b86611646565b90611646565b9992985090965090945050505050565b60008080806117b98886610aca565b905060006117c78887610aca565b905060006117d58888610aca565b905060006117e7826117948686611646565b939b939a50919850919650505050505050565b600060208083528351808285015260005b818110156118275785810183015185820160400152820161180b565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461078257600080fd5b6000806040838503121561187057600080fd5b823561187b81611848565b946020939093013593505050565b60008060006060848603121561189e57600080fd5b83356118a981611848565b925060208401356118b981611848565b929592945050506040919091013590565b6000602082840312156118dc57600080fd5b8135610b4c81611848565b803580151581146118f757600080fd5b919050565b60006020828403121561190e57600080fd5b610b4c826118e7565b60006020828403121561192957600080fd5b5035919050565b6000806040838503121561194357600080fd5b823561194e81611848565b9150602083013561195e81611848565b809150509250929050565b60008060006040848603121561197e57600080fd5b833567ffffffffffffffff8082111561199657600080fd5b818601915086601f8301126119aa57600080fd5b8135818111156119b957600080fd5b8760208260051b85010111156119ce57600080fd5b6020928301955093506119e491860190506118e7565b90509250925092565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201611a6057611a60611a38565b5060010190565b808202811582820484141761062f5761062f611a38565b600082611a9b57634e487b7160e01b600052601260045260246000fd5b500490565b8082018082111561062f5761062f611a38565b8181038181111561062f5761062f611a38565b600060208284031215611ad857600080fd5b8151610b4c81611848565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611b335784516001600160a01b031683529383019391830191600101611b0e565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220e12cd069793090c1d78933eb59c52d76e8a61242c75786bb1560b772823a1a8f64736f6c63430008110033

Deployed Bytecode

0x6080604052600436106101e75760003560e01c8063715018a611610102578063b364e74111610095578063dd62ed3e11610064578063dd62ed3e14610578578063e1505355146105be578063ea1644d5146105de578063f2fde38b146105fe57600080fd5b8063b364e7411461050e578063c3c8cd801461052d578063caac793414610542578063cab9ba221461056257600080fd5b806395d89b41116100d157806395d89b411461048b57806398a5c315146104b9578063a897e934146104d9578063a9059cbb146104ee57600080fd5b8063715018a61461042c5780637d1db4a5146104415780638da5cb5b146104575780638f9a55c01461047557600080fd5b80633d6a9afe1161017a5780636d8aa8f8116101495780636d8aa8f8146103c05780636fb594a9146103e25780636fc3eaec146103f757806370a082311461040c57600080fd5b80633d6a9afe1461033057806349bd5a5e1461035057806353e673ea1461037057806362940cc4146103a057600080fd5b806323b872dd116101b657806323b872dd146102c45780632a42a394146102e45780632fd689e3146102fe578063313ce5671461031457600080fd5b806306fdde03146101f3578063095ea7b3146102365780631694505e1461026657806318160ddd1461029e57600080fd5b366101ee57005b600080fd5b3480156101ff57600080fd5b506040805180820190915260088152674865616c4c696e6b60c01b60208201525b60405161022d91906117fa565b60405180910390f35b34801561024257600080fd5b5061025661025136600461185d565b61061e565b604051901515815260200161022d565b34801561027257600080fd5b50601554610286906001600160a01b031681565b6040516001600160a01b03909116815260200161022d565b3480156102aa57600080fd5b50683635c9adc5dea000005b60405190815260200161022d565b3480156102d057600080fd5b506102566102df366004611889565b610635565b3480156102f057600080fd5b50600d546102569060ff1681565b34801561030a57600080fd5b506102b6601a5481565b34801561032057600080fd5b506040516009815260200161022d565b34801561033c57600080fd5b50601354610286906001600160a01b031681565b34801561035c57600080fd5b50601654610286906001600160a01b031681565b34801561037c57600080fd5b5061025661038b3660046118ca565b600e6020526000908152604090205460ff1681565b3480156103ac57600080fd5b50600154610286906001600160a01b031681565b3480156103cc57600080fd5b506103e06103db3660046118fc565b61069e565b005b3480156103ee57600080fd5b506103e06106ef565b34801561040357600080fd5b506103e061073a565b34801561041857600080fd5b506102b66104273660046118ca565b610785565b34801561043857600080fd5b506103e06107a7565b34801561044d57600080fd5b506102b660175481565b34801561046357600080fd5b506000546001600160a01b0316610286565b34801561048157600080fd5b506102b660185481565b34801561049757600080fd5b50604080518082019091526005815264091211505360da1b6020820152610220565b3480156104c557600080fd5b506103e06104d4366004611917565b61081b565b3480156104e557600080fd5b506103e061084a565b3480156104fa57600080fd5b5061025661050936600461185d565b610885565b34801561051a57600080fd5b50600d5461025690610100900460ff1681565b34801561053957600080fd5b506103e0610892565b34801561054e57600080fd5b50601454610286906001600160a01b031681565b34801561056e57600080fd5b506102b660195481565b34801561058457600080fd5b506102b6610593366004611930565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b3480156105ca57600080fd5b506103e06105d9366004611969565b6108e6565b3480156105ea57600080fd5b506103e06105f9366004611917565b61099c565b34801561060a57600080fd5b506103e06106193660046118ca565b6109e0565b600061062b338484610b95565b5060015b92915050565b6000610642848484610cb9565b610694843361068f85604051806060016040528060288152602001611b55602891396001600160a01b038a1660009081526005602090815260408083203384529091529020549190611194565b610b95565b5060019392505050565b6000546001600160a01b031633146106d15760405162461bcd60e51b81526004016106c8906119ed565b60405180910390fd5b60168054911515600160a81b0260ff60a81b19909216919091179055565b6001546001600160a01b031633148061071257506000546001600160a01b031633145b61072e5760405162461bcd60e51b81526004016106c8906119ed565b600d805460ff19169055565b6013546001600160a01b0316336001600160a01b0316148061076f57506014546001600160a01b0316336001600160a01b0316145b61077857600080fd5b47610782816111ce565b50565b6001600160a01b03811660009081526003602052604081205461062f9061120c565b6000546001600160a01b031633146107d15760405162461bcd60e51b81526004016106c8906119ed565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146108455760405162461bcd60e51b81526004016106c8906119ed565b601a55565b6000546001600160a01b031633146108745760405162461bcd60e51b81526004016106c8906119ed565b600d805461ffff1916610101179055565b600061062b338484610cb9565b6013546001600160a01b0316336001600160a01b031614806108c757506014546001600160a01b0316336001600160a01b0316145b6108d057600080fd5b60006108db30610785565b905061078281611289565b6001546001600160a01b031633148061090957506000546001600160a01b031633145b6109255760405162461bcd60e51b81526004016106c8906119ed565b60005b828110156109965781600e600086868581811061094757610947611a22565b905060200201602081019061095c91906118ca565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790558061098e81611a4e565b915050610928565b50505050565b6001546001600160a01b03163314806109bf57506000546001600160a01b031633145b6109db5760405162461bcd60e51b81526004016106c8906119ed565b601855565b6000546001600160a01b03163314610a0a5760405162461bcd60e51b81526004016106c8906119ed565b6001600160a01b038116610a6f5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016106c8565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b600082600003610adc5750600061062f565b6000610ae88385611a67565b905082610af58583611a7e565b14610b4c5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016106c8565b9392505050565b6000610b4c83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611403565b6001600160a01b038316610bf75760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016106c8565b6001600160a01b038216610c585760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016106c8565b6001600160a01b0383811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610d1d5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016106c8565b6001600160a01b038216610d7f5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016106c8565b60008111610de15760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016106c8565b6000546001600160a01b03848116911614801590610e0d57506000546001600160a01b03838116911614155b1561108d576016546001600160a01b03838116911614610e975760185481610e3484610785565b610e3e9190611aa0565b10610e975760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073696044820152627a652160e81b60648201526084016106c8565b600d54610100900460ff1615610f1a576001600160a01b0383166000908152600e602052604090205460ff1615610f1a57601954811115610f1a5760405162461bcd60e51b815260206004820152601a60248201527f544f4b454e3a20566f6c756e746565723456657374205665737400000000000060448201526064016106c8565b6000610f2530610785565b601a54601754919250821015908210610f3e5760175491505b808015610f555750601654600160a01b900460ff16155b8015610f6f57506016546001600160a01b03868116911614155b8015610f845750601654600160a81b900460ff165b8015610fa957506001600160a01b03851660009081526006602052604090205460ff16155b8015610fce57506001600160a01b03841660009081526006602052604090205460ff16155b15610fee57610fdc82611289565b478015610fec57610fec476111ce565b505b600d5460ff16801561102d57506016546001600160a01b0385811691161480159061102d5750600d546001600160a01b03858116620100009092041614155b801561104757506000546001600160a01b03868116911614155b801561106157506000546001600160a01b03858116911614155b1561108a576001600160a01b0384166000908152600e60205260409020805460ff191660011790555b50505b6001600160a01b03831660009081526006602052604090205460019060ff16806110cf57506001600160a01b03831660009081526006602052604090205460ff165b8061110157506016546001600160a01b0385811691161480159061110157506016546001600160a01b03848116911614155b1561110e57506000611188565b6016546001600160a01b03858116911614801561113957506015546001600160a01b03848116911614155b1561114b57600954600f55600a546010555b6016546001600160a01b03848116911614801561117657506015546001600160a01b03858116911614155b1561118857600b54600f55600c546010555b61099684848484611431565b600081848411156111b85760405162461bcd60e51b81526004016106c891906117fa565b5060006111c58486611ab3565b95945050505050565b6014546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015611208573d6000803e3d6000fd5b5050565b60006007548211156112735760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b60648201526084016106c8565b600061127d61145f565b9050610b4c8382610b53565b6016805460ff60a01b1916600160a01b17905560408051600280825260608201835260009260208301908036833701905050905030816000815181106112d1576112d1611a22565b6001600160a01b03928316602091820292909201810191909152601554604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561132a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061134e9190611ac6565b8160018151811061136157611361611a22565b6001600160a01b0392831660209182029290920101526015546113879130911684610b95565b60155460405163791ac94760e01b81526001600160a01b039091169063791ac947906113c0908590600090869030904290600401611ae3565b600060405180830381600087803b1580156113da57600080fd5b505af11580156113ee573d6000803e3d6000fd5b50506016805460ff60a01b1916905550505050565b600081836114245760405162461bcd60e51b81526004016106c891906117fa565b5060006111c58486611a7e565b8061143e5761143e611482565b6114498484846114b0565b8061099657610996601154600f55601254601055565b600080600061146c6115a7565b909250905061147b8282610b53565b9250505090565b600f541580156114925750601054155b1561149957565b600f80546011556010805460125560009182905555565b6000806000806000806114c2876115e9565b6001600160a01b038f16600090815260036020526040902054959b509399509197509550935091506114f49087611646565b6001600160a01b03808b1660009081526003602052604080822093909355908a16815220546115239086611688565b6001600160a01b038916600090815260036020526040902055611545816116e7565b61154f8483611731565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161159491815260200190565b60405180910390a3505050505050505050565b6007546000908190683635c9adc5dea000006115c38282610b53565b8210156115e057505060075492683635c9adc5dea0000092509050565b90939092509050565b60008060008060008060008060006116068a600f54601054611755565b925092509250600061161661145f565b905060008060006116298e8787876117aa565b919e509c509a509598509396509194505050505091939550919395565b6000610b4c83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611194565b6000806116958385611aa0565b905083811015610b4c5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016106c8565b60006116f161145f565b905060006116ff8383610aca565b3060009081526003602052604090205490915061171c9082611688565b30600090815260036020526040902055505050565b60075461173e9083611646565b60075560085461174e9082611688565b6008555050565b600080808061176f60646117698989610aca565b90610b53565b9050600061178260646117698a89610aca565b9050600061179a826117948b86611646565b90611646565b9992985090965090945050505050565b60008080806117b98886610aca565b905060006117c78887610aca565b905060006117d58888610aca565b905060006117e7826117948686611646565b939b939a50919850919650505050505050565b600060208083528351808285015260005b818110156118275785810183015185820160400152820161180b565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461078257600080fd5b6000806040838503121561187057600080fd5b823561187b81611848565b946020939093013593505050565b60008060006060848603121561189e57600080fd5b83356118a981611848565b925060208401356118b981611848565b929592945050506040919091013590565b6000602082840312156118dc57600080fd5b8135610b4c81611848565b803580151581146118f757600080fd5b919050565b60006020828403121561190e57600080fd5b610b4c826118e7565b60006020828403121561192957600080fd5b5035919050565b6000806040838503121561194357600080fd5b823561194e81611848565b9150602083013561195e81611848565b809150509250929050565b60008060006040848603121561197e57600080fd5b833567ffffffffffffffff8082111561199657600080fd5b818601915086601f8301126119aa57600080fd5b8135818111156119b957600080fd5b8760208260051b85010111156119ce57600080fd5b6020928301955093506119e491860190506118e7565b90509250925092565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201611a6057611a60611a38565b5060010190565b808202811582820484141761062f5761062f611a38565b600082611a9b57634e487b7160e01b600052601260045260246000fd5b500490565b8082018082111561062f5761062f611a38565b8181038181111561062f5761062f611a38565b600060208284031215611ad857600080fd5b8151610b4c81611848565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611b335784516001600160a01b031683529383019391830191600101611b0e565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220e12cd069793090c1d78933eb59c52d76e8a61242c75786bb1560b772823a1a8f64736f6c63430008110033

Deployed Bytecode Sourcemap

4661:13082:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7298:83;;;;;;;;;;-1:-1:-1;7368:5:0;;;;;;;;;;;;-1:-1:-1;;;7368:5:0;;;;7298:83;;;;;;;:::i;:::-;;;;;;;;8223:193;;;;;;;;;;-1:-1:-1;8223:193:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;8223:193:0;1023:187:1;6094:41:0;;;;;;;;;;-1:-1:-1;6094:41:0;;;;-1:-1:-1;;;;;6094:41:0;;;;;;-1:-1:-1;;;;;1405:32:1;;;1387:51;;1375:2;1360:18;6094:41:0;1215:229:1;7575:95:0;;;;;;;;;;-1:-1:-1;5209:24:0;7575:95;;;1595:25:1;;;1583:2;1568:18;7575:95:0;1449:177:1;8424:446:0;;;;;;;;;;-1:-1:-1;8424:446:0;;;;;:::i;:::-;;:::i;5491:43::-;;;;;;;;;;-1:-1:-1;5491:43:0;;;;;;;;6446:50;;;;;;;;;;;;;;;;7484:83;;;;;;;;;;-1:-1:-1;7484:83:0;;4883:1;2234:36:1;;2222:2;2207:18;7484:83:0;2092:184:1;5952:64:0;;;;;;;;;;-1:-1:-1;5952:64:0;;;;-1:-1:-1;;;;;5952:64:0;;;6142:28;;;;;;;;;;-1:-1:-1;6142:28:0;;;;-1:-1:-1;;;;;6142:28:0;;;5670:53;;;;;;;;;;-1:-1:-1;5670:53:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;1399:25;;;;;;;;;;-1:-1:-1;1399:25:0;;;;-1:-1:-1;;;;;1399:25:0;;;17512:101;;;;;;;;;;-1:-1:-1;17512:101:0;;;;;:::i;:::-;;:::i;:::-;;12962:97;;;;;;;;;;;;;:::i;13636:235::-;;;;;;;;;;;;;:::i;7678:138::-;;;;;;;;;;-1:-1:-1;7678:138:0;;;;;:::i;:::-;;:::i;2148:148::-;;;;;;;;;;;;;:::i;6253:37::-;;;;;;;;;;;;;;;;1779:79;;;;;;;;;;-1:-1:-1;1817:7:0;1844:6;-1:-1:-1;;;;;1844:6:0;1779:79;;6297:57;;;;;;;;;;;;;;;;7389:87;;;;;;;;;;-1:-1:-1;7461:7:0;;;;;;;;;;;;-1:-1:-1;;;7461:7:0;;;;7389:87;;17321:139;;;;;;;;;;-1:-1:-1;17321:139:0;;;;;:::i;:::-;;:::i;12823:133::-;;;;;;;;;;;;;:::i;7824:199::-;;;;;;;;;;-1:-1:-1;7824:199:0;;;;;:::i;:::-;;:::i;5541:38::-;;;;;;;;;;-1:-1:-1;5541:38:0;;;;;;;;;;;13392:236;;;;;;;;;;;;;:::i;6023:62::-;;;;;;;;;;-1:-1:-1;6023:62:0;;;;-1:-1:-1;;;;;6023:62:0;;;6361:72;;;;;;;;;;;;;;;;8031:184;;;;;;;;;;-1:-1:-1;8031:184:0;;;;;:::i;:::-;-1:-1:-1;;;;;8180:18:0;;;8148:7;8180:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;8031:184;13065:210;;;;;;;;;;-1:-1:-1;13065:210:0;;;;;:::i;:::-;;:::i;17621:113::-;;;;;;;;;;-1:-1:-1;17621:113:0;;;;;:::i;:::-;;:::i;2304:244::-;;;;;;;;;;-1:-1:-1;2304:244:0;;;;;:::i;:::-;;:::i;8223:193::-;8325:4;8347:39;553:10;8370:7;8379:6;8347:8;:39::i;:::-;-1:-1:-1;8404:4:0;8223:193;;;;;:::o;8424:446::-;8556:4;8573:36;8583:6;8591:9;8602:6;8573:9;:36::i;:::-;8620:220;8643:6;553:10;8691:138;8747:6;8691:138;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8691:19:0;;;;;;:11;:19;;;;;;;;553:10;8691:33;;;;;;;;;;:37;:138::i;:::-;8620:8;:220::i;:::-;-1:-1:-1;8858:4:0;8424:446;;;;;:::o;17512:101::-;1906:6;;-1:-1:-1;;;;;1906:6:0;553:10;1906:22;1898:67;;;;-1:-1:-1;;;1898:67:0;;;;;;;:::i;:::-;;;;;;;;;17579:11:::1;:26:::0;;;::::1;;-1:-1:-1::0;;;17579:26:0::1;-1:-1:-1::0;;;;17579:26:0;;::::1;::::0;;;::::1;::::0;;17512:101::o;12962:97::-;2031:10;;-1:-1:-1;;;;;2031:10:0;553;2031:26;;:52;;-1:-1:-1;2061:6:0;;-1:-1:-1;;;;;2061:6:0;553:10;2061:22;2031:52;2023:97;;;;-1:-1:-1;;;2023:97:0;;;;;;;:::i;:::-;13020:23:::1;:31:::0;;-1:-1:-1;;13020:31:0::1;::::0;;12962:97::o;13636:235::-;13702:19;;-1:-1:-1;;;;;13702:19:0;553:10;-1:-1:-1;;;;;13686:35:0;;:72;;;-1:-1:-1;13741:17:0;;-1:-1:-1;;;;;13741:17:0;553:10;-1:-1:-1;;;;;13725:33:0;;13686:72;13678:81;;;;;;13799:21;13831:32;13799:21;13831:12;:32::i;:::-;13667:204;13636:235::o;7678:138::-;-1:-1:-1;;;;;7791:16:0;;7744:7;7791:16;;;:7;:16;;;;;;7771:37;;:19;:37::i;2148:148::-;1906:6;;-1:-1:-1;;;;;1906:6:0;553:10;1906:22;1898:67;;;;-1:-1:-1;;;1898:67:0;;;;;;;:::i;:::-;2255:1:::1;2239:6:::0;;2218:40:::1;::::0;-1:-1:-1;;;;;2239:6:0;;::::1;::::0;2218:40:::1;::::0;2255:1;;2218:40:::1;2286:1;2269:19:::0;;-1:-1:-1;;;;;;2269:19:0::1;::::0;;2148:148::o;17321:139::-;1906:6;;-1:-1:-1;;;;;1906:6:0;553:10;1906:22;1898:67;;;;-1:-1:-1;;;1898:67:0;;;;;;;:::i;:::-;17412:19:::1;:40:::0;17321:139::o;12823:133::-;1906:6;;-1:-1:-1;;;;;1906:6:0;553:10;1906:22;1898:67;;;;-1:-1:-1;;;1898:67:0;;;;;;;:::i;:::-;12882:23:::1;:30:::0;;-1:-1:-1;;12923:25:0;;;;;12823:133::o;7824:199::-;7929:4;7951:42;553:10;7975:9;7986:6;7951:9;:42::i;13392:236::-;13458:19;;-1:-1:-1;;;;;13458:19:0;553:10;-1:-1:-1;;;;;13442:35:0;;:72;;;-1:-1:-1;13497:17:0;;-1:-1:-1;;;;;13497:17:0;553:10;-1:-1:-1;;;;;13481:33:0;;13442:72;13434:81;;;;;;13526:23;13552:24;13570:4;13552:9;:24::i;:::-;13526:50;;13587:33;13604:15;13587:16;:33::i;13065:210::-;2031:10;;-1:-1:-1;;;;;2031:10:0;553;2031:26;;:52;;-1:-1:-1;2061:6:0;;-1:-1:-1;;;;;2061:6:0;553:10;2061:22;2031:52;2023:97;;;;-1:-1:-1;;;2023:97:0;;;;;;;:::i;:::-;13156:9:::1;13152:116;13171:19:::0;;::::1;13152:116;;;13248:8;13212:20;:33;13233:8;;13242:1;13233:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;13212:33:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;13212:33:0;:44;;-1:-1:-1;;13212:44:0::1;::::0;::::1;;::::0;;;::::1;::::0;;13192:3;::::1;::::0;::::1;:::i;:::-;;;;13152:116;;;;13065:210:::0;;;:::o;17621:113::-;2031:10;;-1:-1:-1;;;;;2031:10:0;553;2031:26;;:52;;-1:-1:-1;2061:6:0;;-1:-1:-1;;;;;2061:6:0;553:10;2061:22;2031:52;2023:97;;;;-1:-1:-1;;;2023:97:0;;;;;;;:::i;:::-;17696:14:::1;:30:::0;17621:113::o;2304:244::-;1906:6;;-1:-1:-1;;;;;1906:6:0;553:10;1906:22;1898:67;;;;-1:-1:-1;;;1898:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;2393:22:0;::::1;2385:73;;;::::0;-1:-1:-1;;;2385:73:0;;5554:2:1;2385:73:0::1;::::0;::::1;5536:21:1::0;5593:2;5573:18;;;5566:30;5632:34;5612:18;;;5605:62;-1:-1:-1;;;5683:18:1;;;5676:36;5729:19;;2385:73:0::1;5352:402:1::0;2385:73:0::1;2495:6;::::0;;2474:38:::1;::::0;-1:-1:-1;;;;;2474:38:0;;::::1;::::0;2495:6;::::1;::::0;2474:38:::1;::::0;::::1;2523:6;:17:::0;;-1:-1:-1;;;;;;2523:17:0::1;-1:-1:-1::0;;;;;2523:17:0;;;::::1;::::0;;;::::1;::::0;;2304:244::o;3144:246::-;3202:7;3226:1;3231;3226:6;3222:47;;-1:-1:-1;3256:1:0;3249:8;;3222:47;3279:9;3291:5;3295:1;3291;:5;:::i;:::-;3279:17;-1:-1:-1;3324:1:0;3315:5;3319:1;3279:17;3315:5;:::i;:::-;:10;3307:56;;;;-1:-1:-1;;;3307:56:0;;6356:2:1;3307:56:0;;;6338:21:1;6395:2;6375:18;;;6368:30;6434:34;6414:18;;;6407:62;-1:-1:-1;;;6485:18:1;;;6478:31;6526:19;;3307:56:0;6154:397:1;3307:56:0;3381:1;3144:246;-1:-1:-1;;;3144:246:0:o;3398:132::-;3456:7;3483:39;3487:1;3490;3483:39;;;;;;;;;;;;;;;;;:3;:39::i;9561:369::-;-1:-1:-1;;;;;9688:19:0;;9680:68;;;;-1:-1:-1;;;9680:68:0;;6758:2:1;9680:68:0;;;6740:21:1;6797:2;6777:18;;;6770:30;6836:34;6816:18;;;6809:62;-1:-1:-1;;;6887:18:1;;;6880:34;6931:19;;9680:68:0;6556:400:1;9680:68:0;-1:-1:-1;;;;;9767:21:0;;9759:68;;;;-1:-1:-1;;;9759:68:0;;7163:2:1;9759:68:0;;;7145:21:1;7202:2;7182:18;;;7175:30;7241:34;7221:18;;;7214:62;-1:-1:-1;;;7292:18:1;;;7285:32;7334:19;;9759:68:0;6961:398:1;9759:68:0;-1:-1:-1;;;;;9838:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;9890:32;;1595:25:1;;;9890:32:0;;1568:18:1;9890:32:0;;;;;;;9561:369;;;:::o;9938:2382::-;-1:-1:-1;;;;;10060:18:0;;10052:68;;;;-1:-1:-1;;;10052:68:0;;7566:2:1;10052:68:0;;;7548:21:1;7605:2;7585:18;;;7578:30;7644:34;7624:18;;;7617:62;-1:-1:-1;;;7695:18:1;;;7688:35;7740:19;;10052:68:0;7364:401:1;10052:68:0;-1:-1:-1;;;;;10139:16:0;;10131:64;;;;-1:-1:-1;;;10131:64:0;;7972:2:1;10131:64:0;;;7954:21:1;8011:2;7991:18;;;7984:30;8050:34;8030:18;;;8023:62;-1:-1:-1;;;8101:18:1;;;8094:33;8144:19;;10131:64:0;7770:399:1;10131:64:0;10223:1;10214:6;:10;10206:64;;;;-1:-1:-1;;;10206:64:0;;8376:2:1;10206:64:0;;;8358:21:1;8415:2;8395:18;;;8388:30;8454:34;8434:18;;;8427:62;-1:-1:-1;;;8505:18:1;;;8498:39;8554:19;;10206:64:0;8174:405:1;10206:64:0;1817:7;1844:6;-1:-1:-1;;;;;10287:15:0;;;1844:6;;10287:15;;;;:32;;-1:-1:-1;1817:7:0;1844:6;-1:-1:-1;;;;;10306:13:0;;;1844:6;;10306:13;;10287:32;10283:1311;;;10349:13;;-1:-1:-1;;;;;10343:19:0;;;10349:13;;10343:19;10340:146;;10416:14;;10407:6;10391:13;10401:2;10391:9;:13::i;:::-;:22;;;;:::i;:::-;:39;10383:87;;;;-1:-1:-1;;;10383:87:0;;8916:2:1;10383:87:0;;;8898:21:1;8955:2;8935:18;;;8928:30;8994:34;8974:18;;;8967:62;-1:-1:-1;;;9045:18:1;;;9038:33;9088:19;;10383:87:0;8714:399:1;10383:87:0;10505:18;;;;;;;10502:199;;;-1:-1:-1;;;;;10547:26:0;;;;;;:20;:26;;;;;;;;10544:142;;;10616:19;;10606:6;:29;;10598:68;;;;-1:-1:-1;;;10598:68:0;;9320:2:1;10598:68:0;;;9302:21:1;9359:2;9339:18;;;9332:30;9398:28;9378:18;;;9371:56;9444:18;;10598:68:0;9118:350:1;10598:68:0;10717:28;10748:24;10766:4;10748:9;:24::i;:::-;10826:19;;10889:12;;10717:55;;-1:-1:-1;10802:43:0;;;;10865:36;;10862:124;;10958:12;;10935:35;;10862:124;11006:7;:18;;;;-1:-1:-1;11018:6:0;;-1:-1:-1;;;11018:6:0;;;;11017:7;11006:18;:43;;;;-1:-1:-1;11036:13:0;;-1:-1:-1;;;;;11028:21:0;;;11036:13;;11028:21;;11006:43;:58;;;;-1:-1:-1;11053:11:0;;-1:-1:-1;;;11053:11:0;;;;11006:58;:87;;;;-1:-1:-1;;;;;;11069:24:0;;;;;;:18;:24;;;;;;;;11068:25;11006:87;:114;;;;-1:-1:-1;;;;;;11098:22:0;;;;;;:18;:22;;;;;;;;11097:23;11006:114;11002:386;;;11141:38;11158:20;11141:16;:38::i;:::-;11227:21;11271:22;;11267:106;;11318:35;11331:21;11318:12;:35::i;:::-;11122:266;11002:386;11407:23;;;;:72;;;;-1:-1:-1;11441:13:0;;-1:-1:-1;;;;;11435:19:0;;;11441:13;;11435:19;;;;:43;;-1:-1:-1;11464:14:0;;-1:-1:-1;;;;;11458:20:0;;;11464:14;;;;;11458:20;;11435:43;11407:91;;;;-1:-1:-1;1817:7:0;1844:6;-1:-1:-1;;;;;11483:15:0;;;1844:6;;11483:15;;11407:91;:108;;;;-1:-1:-1;1817:7:0;1844:6;-1:-1:-1;;;;;11502:13:0;;;1844:6;;11502:13;;11407:108;11404:179;;;-1:-1:-1;;;;;11536:24:0;;;;;;:20;:24;;;;;:31;;-1:-1:-1;;11536:31:0;11563:4;11536:31;;;11404:179;10321:1273;;10283:1311;-1:-1:-1;;;;;11670:24:0;;11606:12;11670:24;;;:18;:24;;;;;;11621:4;;11670:24;;;:50;;-1:-1:-1;;;;;;11698:22:0;;;;;;:18;:22;;;;;;;;11670:50;11669:102;;;-1:-1:-1;11734:13:0;;-1:-1:-1;;;;;11726:21:0;;;11734:13;;11726:21;;;;:44;;-1:-1:-1;11757:13:0;;-1:-1:-1;;;;;11751:19:0;;;11757:13;;11751:19;;11726:44;11665:594;;;-1:-1:-1;11798:5:0;11665:594;;;11881:13;;-1:-1:-1;;;;;11873:21:0;;;11881:13;;11873:21;:55;;;;-1:-1:-1;11912:15:0;;-1:-1:-1;;;;;11898:30:0;;;11912:15;;11898:30;;11873:55;11870:162;;;11961:14;;11949:9;:26;12004:12;;11994:7;:22;11870:162;12091:13;;-1:-1:-1;;;;;12085:19:0;;;12091:13;;12085:19;:55;;;;-1:-1:-1;12124:15:0;;-1:-1:-1;;;;;12108:32:0;;;12124:15;;12108:32;;12085:55;12081:165;;;12173:15;;12161:9;:27;12217:13;;12207:7;:23;12081:165;12271:41;12286:4;12292:2;12296:6;12304:7;12271:14;:41::i;2912:224::-;3032:7;3068:12;3060:6;;;;3052:29;;;;-1:-1:-1;;;3052:29:0;;;;;;;;:::i;:::-;-1:-1:-1;3092:9:0;3104:5;3108:1;3104;:5;:::i;:::-;3092:17;2912:224;-1:-1:-1;;;;;2912:224:0:o;13283:99::-;13340:17;;:34;;-1:-1:-1;;;;;13340:17:0;;;;:34;;;;;13367:6;;13340:17;:34;:17;:34;13367:6;13340:17;:34;;;;;;;;;;;;;;;;;;;;;13283:99;:::o;8878:323::-;8973:7;9031;;9020;:18;;8998:110;;;;-1:-1:-1;;;8998:110:0;;9808:2:1;8998:110:0;;;9790:21:1;9847:2;9827:18;;;9820:30;9886:34;9866:18;;;9859:62;-1:-1:-1;;;9937:18:1;;;9930:40;9987:19;;8998:110:0;9606:406:1;8998:110:0;9119:19;9141:10;:8;:10::i;:::-;9119:32;-1:-1:-1;9169:24:0;:7;9119:32;9169:11;:24::i;12328:483::-;6590:6;:13;;-1:-1:-1;;;;6590:13:0;-1:-1:-1;;;6590:13:0;;;12430:16:::1;::::0;;12444:1:::1;12430:16:::0;;;;;::::1;::::0;;-1:-1:-1;;12430:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;12430:16:0::1;12406:40;;12475:4;12457;12462:1;12457:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12457:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;12501:15:::1;::::0;:22:::1;::::0;;-1:-1:-1;;;12501:22:0;;;;:15;;;::::1;::::0;:20:::1;::::0;:22:::1;::::0;;::::1;::::0;12457:7;;12501:22;;;;;:15;:22:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12491:4;12496:1;12491:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12491:32:0;;::::1;:7;::::0;;::::1;::::0;;;;;:32;12566:15:::1;::::0;12534:62:::1;::::0;12551:4:::1;::::0;12566:15:::1;12584:11:::0;12534:8:::1;:62::i;:::-;12607:15;::::0;:196:::1;::::0;-1:-1:-1;;;12607:196:0;;-1:-1:-1;;;;;12607:15:0;;::::1;::::0;:66:::1;::::0;:196:::1;::::0;12688:11;;12607:15:::1;::::0;12730:4;;12757::::1;::::0;12777:15:::1;::::0;12607:196:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;6626:6:0;:14;;-1:-1:-1;;;;6626:14:0;;;-1:-1:-1;;;;12328:483:0:o;3538:223::-;3658:7;3693:12;3686:5;3678:28;;;;-1:-1:-1;;;3678:28:0;;;;;;;;:::i;:::-;-1:-1:-1;3717:9:0;3729:5;3733:1;3729;:5;:::i;13879:282::-;14035:7;14030:28;;14044:14;:12;:14::i;:::-;14069:44;14087:6;14095:9;14106:6;14069:17;:44::i;:::-;14129:7;14124:29;;14138:15;9492:17;;9480:9;:29;9530:15;;9520:7;:25;9436:117;16840:164;16882:7;16903:15;16920;16939:19;:17;:19::i;:::-;16902:56;;-1:-1:-1;16902:56:0;-1:-1:-1;16976:20:0;16902:56;;16976:11;:20::i;:::-;16969:27;;;;16840:164;:::o;9209:219::-;9256:9;;:14;:30;;;;-1:-1:-1;9274:7:0;;:12;9256:30;9252:43;;;9209:219::o;9252:43::-;9327:9;;;9307:17;:29;9365:7;;;9347:15;:25;-1:-1:-1;9385:13:0;;;;9409:11;9209:219::o;14169:610::-;14316:15;14346:23;14384:12;14411:23;14449:12;14476:13;14503:19;14514:7;14503:10;:19::i;:::-;-1:-1:-1;;;;;14551:15:0;;;;;;:7;:15;;;;;;14301:221;;-1:-1:-1;14301:221:0;;-1:-1:-1;14301:221:0;;-1:-1:-1;14301:221:0;-1:-1:-1;14301:221:0;-1:-1:-1;14301:221:0;-1:-1:-1;14551:28:0;;14301:221;14551:19;:28::i;:::-;-1:-1:-1;;;;;14533:15:0;;;;;;;:7;:15;;;;;;:46;;;;14611:18;;;;;;;:39;;14634:15;14611:22;:39::i;:::-;-1:-1:-1;;;;;14590:18:0;;;;;;:7;:18;;;;;:60;14661:16;14671:5;14661:9;:16::i;:::-;14688:23;14700:4;14706;14688:11;:23::i;:::-;14744:9;-1:-1:-1;;;;;14727:44:0;14736:6;-1:-1:-1;;;;;14727:44:0;;14755:15;14727:44;;;;1595:25:1;;1583:2;1568:18;;1449:177;14727:44:0;;;;;;;;14290:489;;;;;;14169:610;;;:::o;17012:257::-;17110:7;;17063;;;;5209:24;17178:20;17110:7;5209:24;17178:11;:20::i;:::-;17168:7;:30;17164:61;;;-1:-1:-1;;17208:7:0;;;5209:24;;-1:-1:-1;17012:257:0;-1:-1:-1;17012:257:0:o;17164:61::-;17244:7;;17253;;-1:-1:-1;17012:257:0;-1:-1:-1;17012:257:0:o;15198:615::-;15298:7;15320;15342;15364;15386;15408;15444:23;15469:12;15483:13;15513:40;15525:7;15534:9;;15545:7;;15513:11;:40::i;:::-;15443:110;;;;;;15564:19;15586:10;:8;:10::i;:::-;15564:32;;15608:15;15625:23;15650:12;15679:46;15691:7;15700:4;15706:5;15713:11;15679;:46::i;:::-;15607:118;;-1:-1:-1;15607:118:0;-1:-1:-1;15607:118:0;-1:-1:-1;15776:15:0;;-1:-1:-1;15793:4:0;;-1:-1:-1;15799:5:0;;-1:-1:-1;;;;;15198:615:0;;;;;;;:::o;2768:136::-;2826:7;2853:43;2857:1;2860;2853:43;;;;;;;;;;;;;;;;;:3;:43::i;2581:179::-;2639:7;;2671:5;2675:1;2671;:5;:::i;:::-;2659:17;;2700:1;2695;:6;;2687:46;;;;-1:-1:-1;;;2687:46:0;;11592:2:1;2687:46:0;;;11574:21:1;11631:2;11611:18;;;11604:30;11670:29;11650:18;;;11643:57;11717:18;;2687:46:0;11390:351:1;14787:211:0;14840:19;14862:10;:8;:10::i;:::-;14840:32;-1:-1:-1;14883:13:0;14899:22;:5;14840:32;14899:9;:22::i;:::-;14973:4;14957:22;;;;:7;:22;;;;;;14883:38;;-1:-1:-1;14957:33:0;;14883:38;14957:26;:33::i;:::-;14948:4;14932:22;;;;:7;:22;;;;;:58;-1:-1:-1;;;14787:211:0:o;15006:147::-;15084:7;;:17;;15096:4;15084:11;:17::i;:::-;15074:7;:27;15125:10;;:20;;15140:4;15125:14;:20::i;:::-;15112:10;:33;-1:-1:-1;;15006:147:0:o;15821:469::-;15990:7;;;;16084:30;16110:3;16084:21;:7;16096:8;16084:11;:21::i;:::-;:25;;:30::i;:::-;16069:45;-1:-1:-1;16125:13:0;16141:28;16165:3;16141:19;:7;16153:6;16141:11;:19::i;:28::-;16125:44;-1:-1:-1;16180:23:0;16206:28;16125:44;16206:17;:7;16218:4;16206:11;:17::i;:::-;:21;;:28::i;:::-;16180:54;16270:4;;-1:-1:-1;16276:5:0;;-1:-1:-1;15821:469:0;;-1:-1:-1;;;;;15821:469:0:o;16298:534::-;16492:7;;;;16589:24;:7;16601:11;16589;:24::i;:::-;16571:42;-1:-1:-1;16624:12:0;16639:21;:4;16648:11;16639:8;:21::i;:::-;16624:36;-1:-1:-1;16671:13:0;16687:22;:5;16697:11;16687:9;:22::i;:::-;16671:38;-1:-1:-1;16720:23:0;16746:28;16671:38;16746:17;:7;16758:4;16746:11;:17::i;:28::-;16793:7;;;;-1:-1:-1;16819:4:0;;-1:-1:-1;16298:534:0;;-1:-1:-1;;;;;;;16298:534:0:o;14:548:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;703:315;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;1008:2;993:18;;;;980:32;;-1:-1:-1;;;703:315:1:o;1631:456::-;1708:6;1716;1724;1777:2;1765:9;1756:7;1752:23;1748:32;1745:52;;;1793:1;1790;1783:12;1745:52;1832:9;1819:23;1851:31;1876:5;1851:31;:::i;:::-;1901:5;-1:-1:-1;1958:2:1;1943:18;;1930:32;1971:33;1930:32;1971:33;:::i;:::-;1631:456;;2023:7;;-1:-1:-1;;;2077:2:1;2062:18;;;;2049:32;;1631:456::o;2713:247::-;2772:6;2825:2;2813:9;2804:7;2800:23;2796:32;2793:52;;;2841:1;2838;2831:12;2793:52;2880:9;2867:23;2899:31;2924:5;2899:31;:::i;2965:160::-;3030:20;;3086:13;;3079:21;3069:32;;3059:60;;3115:1;3112;3105:12;3059:60;2965:160;;;:::o;3130:180::-;3186:6;3239:2;3227:9;3218:7;3214:23;3210:32;3207:52;;;3255:1;3252;3245:12;3207:52;3278:26;3294:9;3278:26;:::i;3315:180::-;3374:6;3427:2;3415:9;3406:7;3402:23;3398:32;3395:52;;;3443:1;3440;3433:12;3395:52;-1:-1:-1;3466:23:1;;3315:180;-1:-1:-1;3315:180:1:o;3500:388::-;3568:6;3576;3629:2;3617:9;3608:7;3604:23;3600:32;3597:52;;;3645:1;3642;3635:12;3597:52;3684:9;3671:23;3703:31;3728:5;3703:31;:::i;:::-;3753:5;-1:-1:-1;3810:2:1;3795:18;;3782:32;3823:33;3782:32;3823:33;:::i;:::-;3875:7;3865:17;;;3500:388;;;;;:::o;3893:689::-;3985:6;3993;4001;4054:2;4042:9;4033:7;4029:23;4025:32;4022:52;;;4070:1;4067;4060:12;4022:52;4110:9;4097:23;4139:18;4180:2;4172:6;4169:14;4166:34;;;4196:1;4193;4186:12;4166:34;4234:6;4223:9;4219:22;4209:32;;4279:7;4272:4;4268:2;4264:13;4260:27;4250:55;;4301:1;4298;4291:12;4250:55;4341:2;4328:16;4367:2;4359:6;4356:14;4353:34;;;4383:1;4380;4373:12;4353:34;4438:7;4431:4;4421:6;4418:1;4414:14;4410:2;4406:23;4402:34;4399:47;4396:67;;;4459:1;4456;4449:12;4396:67;4490:4;4482:13;;;;-1:-1:-1;4514:6:1;-1:-1:-1;4539:37:1;;4555:20;;;-1:-1:-1;4539:37:1;:::i;:::-;4529:47;;3893:689;;;;;:::o;4587:356::-;4789:2;4771:21;;;4808:18;;;4801:30;4867:34;4862:2;4847:18;;4840:62;4934:2;4919:18;;4587:356::o;4948:127::-;5009:10;5004:3;5000:20;4997:1;4990:31;5040:4;5037:1;5030:15;5064:4;5061:1;5054:15;5080:127;5141:10;5136:3;5132:20;5129:1;5122:31;5172:4;5169:1;5162:15;5196:4;5193:1;5186:15;5212:135;5251:3;5272:17;;;5269:43;;5292:18;;:::i;:::-;-1:-1:-1;5339:1:1;5328:13;;5212:135::o;5759:168::-;5832:9;;;5863;;5880:15;;;5874:22;;5860:37;5850:71;;5901:18;;:::i;5932:217::-;5972:1;5998;5988:132;;6042:10;6037:3;6033:20;6030:1;6023:31;6077:4;6074:1;6067:15;6105:4;6102:1;6095:15;5988:132;-1:-1:-1;6134:9:1;;5932:217::o;8584:125::-;8649:9;;;8670:10;;;8667:36;;;8683:18;;:::i;9473:128::-;9540:9;;;9561:11;;;9558:37;;;9575:18;;:::i;10149:251::-;10219:6;10272:2;10260:9;10251:7;10247:23;10243:32;10240:52;;;10288:1;10285;10278:12;10240:52;10320:9;10314:16;10339:31;10364:5;10339:31;:::i;10405:980::-;10667:4;10715:3;10704:9;10700:19;10746:6;10735:9;10728:25;10772:2;10810:6;10805:2;10794:9;10790:18;10783:34;10853:3;10848:2;10837:9;10833:18;10826:31;10877:6;10912;10906:13;10943:6;10935;10928:22;10981:3;10970:9;10966:19;10959:26;;11020:2;11012:6;11008:15;10994:29;;11041:1;11051:195;11065:6;11062:1;11059:13;11051:195;;;11130:13;;-1:-1:-1;;;;;11126:39:1;11114:52;;11221:15;;;;11186:12;;;;11162:1;11080:9;11051:195;;;-1:-1:-1;;;;;;;11302:32:1;;;;11297:2;11282:18;;11275:60;-1:-1:-1;;;11366:3:1;11351:19;11344:35;11263:3;10405:980;-1:-1:-1;;;10405:980:1:o

Swarm Source

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