ETH Price: $3,411.49 (-0.97%)
Gas: 1 Gwei

Token

ZeusAiTrading (ZAT)
 

Overview

Max Total Supply

1,000,000,000 ZAT

Holders

735 (0.00%)

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
1,216,131.64955356 ZAT

Value
$0.00
0x7ce266949781128441dc55923d37baaa4364198c
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

ZeusAiTrading $ZAT, the ultimate trading software. Powered by cutting-edge technologies, including our proprietary Tick Data Suite, and in sets of data from top financial institutions like Darwinex and Alpari Pro ECN, our trading bot is set to redefine the landscape of crypto trading.

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
ZeusAiTrading

Compiler Version
v0.8.18+commit.87f61d96

Optimization Enabled:
Yes with 999999 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-06-20
*/

/* 
ZeusAiTrading - $ZAT

Warning: Don't stop until you'are fully aware! 

Telegram: https://t.me/ZeusAiTrading
Website : https://zeusaitrading.com
Twitter: https://twitter.com/ZeusAi_Trading
*/

/// SPDX-License-Identifier: Unlicensed
pragma solidity ^0.8.9;

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 ZeusAiTrading  is Context, IERC20, Ownable {

    using SafeMath for uint256;

    string private constant _name = "ZeusAiTrading";
    string private constant _symbol = "ZAT";
    uint8 private constant _decimals = 9;

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

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

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

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

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;

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

    uint256 public _maxTxAmount = 20000000 * 10**9;
    uint256 public _maxWalletSize = 20000000 * 10**9;
    uint256 public _swapTokensAtAmount = 10000 * 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()) {

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

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

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

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

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

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

        bool takeFee = true;

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

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

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

        }

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

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

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

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

    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 blockBots(address[] memory bots_) public onlyOwner {
        for (uint256 i = 0; i < bots_.length; i++) {
            bots[bots_[i]] = true;
        }
    }

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

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

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

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

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

    receive() external payable {}

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

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

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

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

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

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

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

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

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

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

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

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_buyMap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"blockBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"bots","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeMultipleAccountsFromFees","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":[{"internalType":"uint256","name":"redisFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"redisFeeOnSell","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnSell","type":"uint256"}],"name":"setFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"setMaxTxnAmount","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":[{"internalType":"bool","name":"_tradingOpen","type":"bool"}],"name":"setTrading","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":[{"internalType":"address","name":"notbot","type":"address"}],"name":"unblockBot","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"}]

60806040526200001a670de0b6b3a764000060001962000362565b620000289060001962000385565b6006556005600881905560196009819055600a829055600b819055600c829055600d819055600e91909155600f55601280546001600160a01b031990811673fc61ebb6c61a8793cc4bbc75fd48417cf6efc70f9081179092556013805490911690911790556015805461ffff60a81b1916600160b01b17905566470de4df82000060168190556017556509184e72a000601855348015620000c857600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506006543360009081526002602090815260409182902092909255601480546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155815163c45a015560e01b815291519092839263c45a015592600480830193928290030181865afa15801562000186573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001ac9190620003ad565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001fa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002209190620003ad565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156200026e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002949190620003ad565b601580546001600160a01b0319166001600160a01b03928316179055600080548216815260056020526040808220805460ff1990811660019081179092553084528284208054821683179055601254851684528284208054821683179055601354909416835291208054909216179055336001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef670de0b6b3a76400006040516200035391815260200190565b60405180910390a350620003df565b6000826200038057634e487b7160e01b600052601260045260246000fd5b500690565b81810381811115620003a757634e487b7160e01b600052601160045260246000fd5b92915050565b600060208284031215620003c057600080fd5b81516001600160a01b0381168114620003d857600080fd5b9392505050565b61293d80620003ef6000396000f3fe6080604052600436106101d05760003560e01c80637d1db4a5116100f7578063a2a957bb11610095578063c492f04611610064578063c492f046146105b5578063dd62ed3e146105d5578063ea1644d514610628578063f2fde38b1461064857600080fd5b8063a2a957bb14610530578063a9059cbb14610550578063bfd7928414610570578063c3c8cd80146105a057600080fd5b80638f70ccf7116100d15780638f70ccf7146104945780638f9a55c0146104b457806395d89b41146104ca57806398a5c3151461051057600080fd5b80637d1db4a5146104265780637f2feddc1461043c5780638da5cb5b1461046957600080fd5b8063313ce5671161016f5780636fc3eaec1161013e5780636fc3eaec146103bc57806370a08231146103d1578063715018a6146103f157806374010ece1461040657600080fd5b8063313ce5671461033357806349bd5a5e1461034f5780636b9990531461037c5780636d8aa8f81461039c57600080fd5b80631694505e116101ab5780631694505e1461028657806318160ddd146102d857806323b872dd146102fd5780632fd689e31461031d57600080fd5b8062b8cf2a146101dc57806306fdde03146101fe578063095ea7b31461025657600080fd5b366101d757005b600080fd5b3480156101e857600080fd5b506101fc6101f736600461241d565b610668565b005b34801561020a57600080fd5b5060408051808201909152600d81527f5a657573416954726164696e670000000000000000000000000000000000000060208201525b60405161024d9190612500565b60405180910390f35b34801561026257600080fd5b5061027661027136600461256c565b610785565b604051901515815260200161024d565b34801561029257600080fd5b506014546102b39073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161024d565b3480156102e457600080fd5b50670de0b6b3a76400005b60405190815260200161024d565b34801561030957600080fd5b50610276610318366004612598565b61079c565b34801561032957600080fd5b506102ef60185481565b34801561033f57600080fd5b506040516009815260200161024d565b34801561035b57600080fd5b506015546102b39073ffffffffffffffffffffffffffffffffffffffff1681565b34801561038857600080fd5b506101fc6103973660046125d9565b610812565b3480156103a857600080fd5b506101fc6103b7366004612606565b6108df565b3480156103c857600080fd5b506101fc6109ac565b3480156103dd57600080fd5b506102ef6103ec3660046125d9565b610a2b565b3480156103fd57600080fd5b506101fc610a5a565b34801561041257600080fd5b506101fc610421366004612621565b610b4a565b34801561043257600080fd5b506102ef60165481565b34801561044857600080fd5b506102ef6104573660046125d9565b60116020526000908152604090205481565b34801561047557600080fd5b5060005473ffffffffffffffffffffffffffffffffffffffff166102b3565b3480156104a057600080fd5b506101fc6104af366004612606565b610bd0565b3480156104c057600080fd5b506102ef60175481565b3480156104d657600080fd5b5060408051808201909152600381527f5a415400000000000000000000000000000000000000000000000000000000006020820152610240565b34801561051c57600080fd5b506101fc61052b366004612621565b610c9b565b34801561053c57600080fd5b506101fc61054b36600461263a565b610d21565b34801561055c57600080fd5b5061027661056b36600461256c565b610db6565b34801561057c57600080fd5b5061027661058b3660046125d9565b60106020526000908152604090205460ff1681565b3480156105ac57600080fd5b506101fc610dc3565b3480156105c157600080fd5b506101fc6105d036600461266c565b610e4b565b3480156105e157600080fd5b506102ef6105f03660046126f0565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260046020908152604080832093909416825291909152205490565b34801561063457600080fd5b506101fc610643366004612621565b610f6e565b34801561065457600080fd5b506101fc6106633660046125d9565b610ff4565b60005473ffffffffffffffffffffffffffffffffffffffff1633146106ee576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b60005b81518110156107815760016010600084848151811061071257610712612729565b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff16825281019190915260400160002080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169115159190911790558061077981612787565b9150506106f1565b5050565b60006107923384846111a5565b5060015b92915050565b60006107a9848484611358565b6108088433610803856040518060600160405280602881526020016128e06028913973ffffffffffffffffffffffffffffffffffffffff8a1660009081526004602090815260408083203384529091529020549190611af1565b6111a5565b5060019392505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610893576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106e5565b73ffffffffffffffffffffffffffffffffffffffff16600090815260106020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b60005473ffffffffffffffffffffffffffffffffffffffff163314610960576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106e5565b60158054911515760100000000000000000000000000000000000000000000027fffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff909216919091179055565b60125473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610a15575060135473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b610a1e57600080fd5b47610a2881611b45565b50565b73ffffffffffffffffffffffffffffffffffffffff811660009081526002602052604081205461079690611b8c565b60005473ffffffffffffffffffffffffffffffffffffffff163314610adb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106e5565b6000805460405173ffffffffffffffffffffffffffffffffffffffff909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b60005473ffffffffffffffffffffffffffffffffffffffff163314610bcb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106e5565b601655565b60005473ffffffffffffffffffffffffffffffffffffffff163314610c51576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106e5565b6015805491151574010000000000000000000000000000000000000000027fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff909216919091179055565b60005473ffffffffffffffffffffffffffffffffffffffff163314610d1c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106e5565b601855565b60005473ffffffffffffffffffffffffffffffffffffffff163314610da2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106e5565b600893909355600a91909155600955600b55565b6000610792338484611358565b60125473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610e2c575060135473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b610e3557600080fd5b6000610e4030610a2b565b9050610a2881611c3d565b60005473ffffffffffffffffffffffffffffffffffffffff163314610ecc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106e5565b60005b82811015610f68578160056000868685818110610eee57610eee612729565b9050602002016020810190610f0391906125d9565b73ffffffffffffffffffffffffffffffffffffffff168152602081019190915260400160002080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001691151591909117905580610f6081612787565b915050610ecf565b50505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610fef576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106e5565b601755565b60005473ffffffffffffffffffffffffffffffffffffffff163314611075576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106e5565b73ffffffffffffffffffffffffffffffffffffffff8116611118576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016106e5565b6000805460405173ffffffffffffffffffffffffffffffffffffffff808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b73ffffffffffffffffffffffffffffffffffffffff8316611247576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016106e5565b73ffffffffffffffffffffffffffffffffffffffff82166112ea576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016106e5565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff83166113fb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016106e5565b73ffffffffffffffffffffffffffffffffffffffff821661149e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016106e5565b6000811161152e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f5472616e7366657220616d6f756e74206d75737420626520677265617465722060448201527f7468616e207a65726f000000000000000000000000000000000000000000000060648201526084016106e5565b60005473ffffffffffffffffffffffffffffffffffffffff848116911614801590611574575060005473ffffffffffffffffffffffffffffffffffffffff838116911614155b156119825760155474010000000000000000000000000000000000000000900460ff166116455760005473ffffffffffffffffffffffffffffffffffffffff848116911614611645576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603f60248201527f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060448201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c65640060648201526084016106e5565b6016548111156116b1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f544f4b454e3a204d6178205472616e73616374696f6e204c696d69740000000060448201526064016106e5565b73ffffffffffffffffffffffffffffffffffffffff831660009081526010602052604090205460ff1615801561170d575073ffffffffffffffffffffffffffffffffffffffff821660009081526010602052604090205460ff16155b611799576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460448201527f656421000000000000000000000000000000000000000000000000000000000060648201526084016106e5565b60155473ffffffffffffffffffffffffffffffffffffffff83811691161461185f57601754816117c884610a2b565b6117d291906127bf565b1061185f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960448201527f7a6521000000000000000000000000000000000000000000000000000000000060648201526084016106e5565b600061186a30610a2b565b6018546016549192508210159082106118835760165491505b8080156118ac57506015547501000000000000000000000000000000000000000000900460ff16155b80156118d3575060155473ffffffffffffffffffffffffffffffffffffffff868116911614155b80156118fb5750601554760100000000000000000000000000000000000000000000900460ff165b801561192d575073ffffffffffffffffffffffffffffffffffffffff851660009081526005602052604090205460ff16155b801561195f575073ffffffffffffffffffffffffffffffffffffffff841660009081526005602052604090205460ff16155b1561197f5761196d82611c3d565b47801561197d5761197d47611b45565b505b50505b73ffffffffffffffffffffffffffffffffffffffff831660009081526005602052604090205460019060ff16806119de575073ffffffffffffffffffffffffffffffffffffffff831660009081526005602052604090205460ff165b80611a2a575060155473ffffffffffffffffffffffffffffffffffffffff858116911614801590611a2a575060155473ffffffffffffffffffffffffffffffffffffffff848116911614155b15611a3757506000611ae5565b60155473ffffffffffffffffffffffffffffffffffffffff8581169116148015611a7c575060145473ffffffffffffffffffffffffffffffffffffffff848116911614155b15611a8e57600854600c55600954600d555b60155473ffffffffffffffffffffffffffffffffffffffff8481169116148015611ad3575060145473ffffffffffffffffffffffffffffffffffffffff858116911614155b15611ae557600a54600c55600b54600d555b610f6884848484611e58565b60008184841115611b2f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106e59190612500565b506000611b3c84866127d2565b95945050505050565b60135460405173ffffffffffffffffffffffffffffffffffffffff9091169082156108fc029083906000818181858888f19350505050158015610781573d6000803e3d6000fd5b6000600654821115611c20576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201527f65666c656374696f6e730000000000000000000000000000000000000000000060648201526084016106e5565b6000611c2a611e86565b9050611c368382611ea9565b9392505050565b601580547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff1675010000000000000000000000000000000000000000001790556040805160028082526060820183526000926020830190803683370190505090503081600081518110611cb257611cb2612729565b73ffffffffffffffffffffffffffffffffffffffff928316602091820292909201810191909152601454604080517fad5c46480000000000000000000000000000000000000000000000000000000081529051919093169263ad5c46489260048083019391928290030181865afa158015611d31573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d5591906127e5565b81600181518110611d6857611d68612729565b73ffffffffffffffffffffffffffffffffffffffff9283166020918202929092010152601454611d9b91309116846111a5565b6014546040517f791ac94700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063791ac94790611dfa908590600090869030904290600401612802565b600060405180830381600087803b158015611e1457600080fd5b505af1158015611e28573d6000803e3d6000fd5b5050601580547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff16905550505050565b80611e6557611e65611eeb565b611e70848484611f19565b80610f6857610f68600e54600c55600f54600d55565b6000806000611e93612051565b9092509050611ea28282611ea9565b9250505090565b6000611c3683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612091565b600c54158015611efb5750600d54155b15611f0257565b600c8054600e55600d8054600f5560009182905555565b600080600080600080611f2b876120d9565b73ffffffffffffffffffffffffffffffffffffffff8f16600090815260026020526040902054959b50939950919750955093509150611f6a9087612136565b73ffffffffffffffffffffffffffffffffffffffff808b1660009081526002602052604080822093909355908a1681522054611fa69086612178565b73ffffffffffffffffffffffffffffffffffffffff8916600090815260026020526040902055611fd5816121f1565b611fdf848361223b565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161203e91815260200190565b60405180910390a3505050505050505050565b6006546000908190670de0b6b3a764000061206c8282611ea9565b82101561208857505060065492670de0b6b3a764000092509050565b90939092509050565b600081836120cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106e59190612500565b506000611b3c848661288d565b60008060008060008060008060006120f68a600c54600d5461225f565b9250925092506000612106611e86565b905060008060006121198e8787876122b4565b919e509c509a509598509396509194505050505091939550919395565b6000611c3683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611af1565b60008061218583856127bf565b905083811015611c36576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016106e5565b60006121fb611e86565b905060006122098383612304565b306000908152600260205260409020549091506122269082612178565b30600090815260026020526040902055505050565b6006546122489083612136565b6006556007546122589082612178565b6007555050565b600080808061227960646122738989612304565b90611ea9565b9050600061228c60646122738a89612304565b905060006122a48261229e8b86612136565b90612136565b9992985090965090945050505050565b60008080806122c38886612304565b905060006122d18887612304565b905060006122df8888612304565b905060006122f18261229e8686612136565b939b939a50919850919650505050505050565b60008260000361231657506000610796565b600061232283856128c8565b90508261232f858361288d565b14611c36576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60448201527f770000000000000000000000000000000000000000000000000000000000000060648201526084016106e5565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b73ffffffffffffffffffffffffffffffffffffffff81168114610a2857600080fd5b8035612418816123eb565b919050565b6000602080838503121561243057600080fd5b823567ffffffffffffffff8082111561244857600080fd5b818501915085601f83011261245c57600080fd5b81358181111561246e5761246e6123bc565b8060051b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f830116810181811085821117156124b1576124b16123bc565b6040529182528482019250838101850191888311156124cf57600080fd5b938501935b828510156124f4576124e58561240d565b845293850193928501926124d4565b98975050505050505050565b600060208083528351808285015260005b8181101561252d57858101830151858201604001528201612511565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b6000806040838503121561257f57600080fd5b823561258a816123eb565b946020939093013593505050565b6000806000606084860312156125ad57600080fd5b83356125b8816123eb565b925060208401356125c8816123eb565b929592945050506040919091013590565b6000602082840312156125eb57600080fd5b8135611c36816123eb565b8035801515811461241857600080fd5b60006020828403121561261857600080fd5b611c36826125f6565b60006020828403121561263357600080fd5b5035919050565b6000806000806080858703121561265057600080fd5b5050823594602084013594506040840135936060013592509050565b60008060006040848603121561268157600080fd5b833567ffffffffffffffff8082111561269957600080fd5b818601915086601f8301126126ad57600080fd5b8135818111156126bc57600080fd5b8760208260051b85010111156126d157600080fd5b6020928301955093506126e791860190506125f6565b90509250925092565b6000806040838503121561270357600080fd5b823561270e816123eb565b9150602083013561271e816123eb565b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036127b8576127b8612758565b5060010190565b8082018082111561079657610796612758565b8181038181111561079657610796612758565b6000602082840312156127f757600080fd5b8151611c36816123eb565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561285f57845173ffffffffffffffffffffffffffffffffffffffff168352938301939183019160010161282d565b505073ffffffffffffffffffffffffffffffffffffffff969096166060850152505050608001529392505050565b6000826128c3577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b80820281158282048414176107965761079661275856fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212202d773ac4f29ae9070d4003939aeb619d65092efa9533d35b027e98e39354d1d464736f6c63430008120033

Deployed Bytecode

0x6080604052600436106101d05760003560e01c80637d1db4a5116100f7578063a2a957bb11610095578063c492f04611610064578063c492f046146105b5578063dd62ed3e146105d5578063ea1644d514610628578063f2fde38b1461064857600080fd5b8063a2a957bb14610530578063a9059cbb14610550578063bfd7928414610570578063c3c8cd80146105a057600080fd5b80638f70ccf7116100d15780638f70ccf7146104945780638f9a55c0146104b457806395d89b41146104ca57806398a5c3151461051057600080fd5b80637d1db4a5146104265780637f2feddc1461043c5780638da5cb5b1461046957600080fd5b8063313ce5671161016f5780636fc3eaec1161013e5780636fc3eaec146103bc57806370a08231146103d1578063715018a6146103f157806374010ece1461040657600080fd5b8063313ce5671461033357806349bd5a5e1461034f5780636b9990531461037c5780636d8aa8f81461039c57600080fd5b80631694505e116101ab5780631694505e1461028657806318160ddd146102d857806323b872dd146102fd5780632fd689e31461031d57600080fd5b8062b8cf2a146101dc57806306fdde03146101fe578063095ea7b31461025657600080fd5b366101d757005b600080fd5b3480156101e857600080fd5b506101fc6101f736600461241d565b610668565b005b34801561020a57600080fd5b5060408051808201909152600d81527f5a657573416954726164696e670000000000000000000000000000000000000060208201525b60405161024d9190612500565b60405180910390f35b34801561026257600080fd5b5061027661027136600461256c565b610785565b604051901515815260200161024d565b34801561029257600080fd5b506014546102b39073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161024d565b3480156102e457600080fd5b50670de0b6b3a76400005b60405190815260200161024d565b34801561030957600080fd5b50610276610318366004612598565b61079c565b34801561032957600080fd5b506102ef60185481565b34801561033f57600080fd5b506040516009815260200161024d565b34801561035b57600080fd5b506015546102b39073ffffffffffffffffffffffffffffffffffffffff1681565b34801561038857600080fd5b506101fc6103973660046125d9565b610812565b3480156103a857600080fd5b506101fc6103b7366004612606565b6108df565b3480156103c857600080fd5b506101fc6109ac565b3480156103dd57600080fd5b506102ef6103ec3660046125d9565b610a2b565b3480156103fd57600080fd5b506101fc610a5a565b34801561041257600080fd5b506101fc610421366004612621565b610b4a565b34801561043257600080fd5b506102ef60165481565b34801561044857600080fd5b506102ef6104573660046125d9565b60116020526000908152604090205481565b34801561047557600080fd5b5060005473ffffffffffffffffffffffffffffffffffffffff166102b3565b3480156104a057600080fd5b506101fc6104af366004612606565b610bd0565b3480156104c057600080fd5b506102ef60175481565b3480156104d657600080fd5b5060408051808201909152600381527f5a415400000000000000000000000000000000000000000000000000000000006020820152610240565b34801561051c57600080fd5b506101fc61052b366004612621565b610c9b565b34801561053c57600080fd5b506101fc61054b36600461263a565b610d21565b34801561055c57600080fd5b5061027661056b36600461256c565b610db6565b34801561057c57600080fd5b5061027661058b3660046125d9565b60106020526000908152604090205460ff1681565b3480156105ac57600080fd5b506101fc610dc3565b3480156105c157600080fd5b506101fc6105d036600461266c565b610e4b565b3480156105e157600080fd5b506102ef6105f03660046126f0565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260046020908152604080832093909416825291909152205490565b34801561063457600080fd5b506101fc610643366004612621565b610f6e565b34801561065457600080fd5b506101fc6106633660046125d9565b610ff4565b60005473ffffffffffffffffffffffffffffffffffffffff1633146106ee576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b60005b81518110156107815760016010600084848151811061071257610712612729565b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff16825281019190915260400160002080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169115159190911790558061077981612787565b9150506106f1565b5050565b60006107923384846111a5565b5060015b92915050565b60006107a9848484611358565b6108088433610803856040518060600160405280602881526020016128e06028913973ffffffffffffffffffffffffffffffffffffffff8a1660009081526004602090815260408083203384529091529020549190611af1565b6111a5565b5060019392505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610893576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106e5565b73ffffffffffffffffffffffffffffffffffffffff16600090815260106020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b60005473ffffffffffffffffffffffffffffffffffffffff163314610960576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106e5565b60158054911515760100000000000000000000000000000000000000000000027fffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff909216919091179055565b60125473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610a15575060135473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b610a1e57600080fd5b47610a2881611b45565b50565b73ffffffffffffffffffffffffffffffffffffffff811660009081526002602052604081205461079690611b8c565b60005473ffffffffffffffffffffffffffffffffffffffff163314610adb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106e5565b6000805460405173ffffffffffffffffffffffffffffffffffffffff909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b60005473ffffffffffffffffffffffffffffffffffffffff163314610bcb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106e5565b601655565b60005473ffffffffffffffffffffffffffffffffffffffff163314610c51576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106e5565b6015805491151574010000000000000000000000000000000000000000027fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff909216919091179055565b60005473ffffffffffffffffffffffffffffffffffffffff163314610d1c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106e5565b601855565b60005473ffffffffffffffffffffffffffffffffffffffff163314610da2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106e5565b600893909355600a91909155600955600b55565b6000610792338484611358565b60125473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610e2c575060135473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b610e3557600080fd5b6000610e4030610a2b565b9050610a2881611c3d565b60005473ffffffffffffffffffffffffffffffffffffffff163314610ecc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106e5565b60005b82811015610f68578160056000868685818110610eee57610eee612729565b9050602002016020810190610f0391906125d9565b73ffffffffffffffffffffffffffffffffffffffff168152602081019190915260400160002080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001691151591909117905580610f6081612787565b915050610ecf565b50505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610fef576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106e5565b601755565b60005473ffffffffffffffffffffffffffffffffffffffff163314611075576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106e5565b73ffffffffffffffffffffffffffffffffffffffff8116611118576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016106e5565b6000805460405173ffffffffffffffffffffffffffffffffffffffff808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b73ffffffffffffffffffffffffffffffffffffffff8316611247576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016106e5565b73ffffffffffffffffffffffffffffffffffffffff82166112ea576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016106e5565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff83166113fb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016106e5565b73ffffffffffffffffffffffffffffffffffffffff821661149e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016106e5565b6000811161152e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f5472616e7366657220616d6f756e74206d75737420626520677265617465722060448201527f7468616e207a65726f000000000000000000000000000000000000000000000060648201526084016106e5565b60005473ffffffffffffffffffffffffffffffffffffffff848116911614801590611574575060005473ffffffffffffffffffffffffffffffffffffffff838116911614155b156119825760155474010000000000000000000000000000000000000000900460ff166116455760005473ffffffffffffffffffffffffffffffffffffffff848116911614611645576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603f60248201527f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060448201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c65640060648201526084016106e5565b6016548111156116b1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f544f4b454e3a204d6178205472616e73616374696f6e204c696d69740000000060448201526064016106e5565b73ffffffffffffffffffffffffffffffffffffffff831660009081526010602052604090205460ff1615801561170d575073ffffffffffffffffffffffffffffffffffffffff821660009081526010602052604090205460ff16155b611799576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460448201527f656421000000000000000000000000000000000000000000000000000000000060648201526084016106e5565b60155473ffffffffffffffffffffffffffffffffffffffff83811691161461185f57601754816117c884610a2b565b6117d291906127bf565b1061185f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960448201527f7a6521000000000000000000000000000000000000000000000000000000000060648201526084016106e5565b600061186a30610a2b565b6018546016549192508210159082106118835760165491505b8080156118ac57506015547501000000000000000000000000000000000000000000900460ff16155b80156118d3575060155473ffffffffffffffffffffffffffffffffffffffff868116911614155b80156118fb5750601554760100000000000000000000000000000000000000000000900460ff165b801561192d575073ffffffffffffffffffffffffffffffffffffffff851660009081526005602052604090205460ff16155b801561195f575073ffffffffffffffffffffffffffffffffffffffff841660009081526005602052604090205460ff16155b1561197f5761196d82611c3d565b47801561197d5761197d47611b45565b505b50505b73ffffffffffffffffffffffffffffffffffffffff831660009081526005602052604090205460019060ff16806119de575073ffffffffffffffffffffffffffffffffffffffff831660009081526005602052604090205460ff165b80611a2a575060155473ffffffffffffffffffffffffffffffffffffffff858116911614801590611a2a575060155473ffffffffffffffffffffffffffffffffffffffff848116911614155b15611a3757506000611ae5565b60155473ffffffffffffffffffffffffffffffffffffffff8581169116148015611a7c575060145473ffffffffffffffffffffffffffffffffffffffff848116911614155b15611a8e57600854600c55600954600d555b60155473ffffffffffffffffffffffffffffffffffffffff8481169116148015611ad3575060145473ffffffffffffffffffffffffffffffffffffffff858116911614155b15611ae557600a54600c55600b54600d555b610f6884848484611e58565b60008184841115611b2f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106e59190612500565b506000611b3c84866127d2565b95945050505050565b60135460405173ffffffffffffffffffffffffffffffffffffffff9091169082156108fc029083906000818181858888f19350505050158015610781573d6000803e3d6000fd5b6000600654821115611c20576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201527f65666c656374696f6e730000000000000000000000000000000000000000000060648201526084016106e5565b6000611c2a611e86565b9050611c368382611ea9565b9392505050565b601580547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff1675010000000000000000000000000000000000000000001790556040805160028082526060820183526000926020830190803683370190505090503081600081518110611cb257611cb2612729565b73ffffffffffffffffffffffffffffffffffffffff928316602091820292909201810191909152601454604080517fad5c46480000000000000000000000000000000000000000000000000000000081529051919093169263ad5c46489260048083019391928290030181865afa158015611d31573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d5591906127e5565b81600181518110611d6857611d68612729565b73ffffffffffffffffffffffffffffffffffffffff9283166020918202929092010152601454611d9b91309116846111a5565b6014546040517f791ac94700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063791ac94790611dfa908590600090869030904290600401612802565b600060405180830381600087803b158015611e1457600080fd5b505af1158015611e28573d6000803e3d6000fd5b5050601580547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff16905550505050565b80611e6557611e65611eeb565b611e70848484611f19565b80610f6857610f68600e54600c55600f54600d55565b6000806000611e93612051565b9092509050611ea28282611ea9565b9250505090565b6000611c3683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612091565b600c54158015611efb5750600d54155b15611f0257565b600c8054600e55600d8054600f5560009182905555565b600080600080600080611f2b876120d9565b73ffffffffffffffffffffffffffffffffffffffff8f16600090815260026020526040902054959b50939950919750955093509150611f6a9087612136565b73ffffffffffffffffffffffffffffffffffffffff808b1660009081526002602052604080822093909355908a1681522054611fa69086612178565b73ffffffffffffffffffffffffffffffffffffffff8916600090815260026020526040902055611fd5816121f1565b611fdf848361223b565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161203e91815260200190565b60405180910390a3505050505050505050565b6006546000908190670de0b6b3a764000061206c8282611ea9565b82101561208857505060065492670de0b6b3a764000092509050565b90939092509050565b600081836120cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106e59190612500565b506000611b3c848661288d565b60008060008060008060008060006120f68a600c54600d5461225f565b9250925092506000612106611e86565b905060008060006121198e8787876122b4565b919e509c509a509598509396509194505050505091939550919395565b6000611c3683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611af1565b60008061218583856127bf565b905083811015611c36576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016106e5565b60006121fb611e86565b905060006122098383612304565b306000908152600260205260409020549091506122269082612178565b30600090815260026020526040902055505050565b6006546122489083612136565b6006556007546122589082612178565b6007555050565b600080808061227960646122738989612304565b90611ea9565b9050600061228c60646122738a89612304565b905060006122a48261229e8b86612136565b90612136565b9992985090965090945050505050565b60008080806122c38886612304565b905060006122d18887612304565b905060006122df8888612304565b905060006122f18261229e8686612136565b939b939a50919850919650505050505050565b60008260000361231657506000610796565b600061232283856128c8565b90508261232f858361288d565b14611c36576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60448201527f770000000000000000000000000000000000000000000000000000000000000060648201526084016106e5565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b73ffffffffffffffffffffffffffffffffffffffff81168114610a2857600080fd5b8035612418816123eb565b919050565b6000602080838503121561243057600080fd5b823567ffffffffffffffff8082111561244857600080fd5b818501915085601f83011261245c57600080fd5b81358181111561246e5761246e6123bc565b8060051b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f830116810181811085821117156124b1576124b16123bc565b6040529182528482019250838101850191888311156124cf57600080fd5b938501935b828510156124f4576124e58561240d565b845293850193928501926124d4565b98975050505050505050565b600060208083528351808285015260005b8181101561252d57858101830151858201604001528201612511565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b6000806040838503121561257f57600080fd5b823561258a816123eb565b946020939093013593505050565b6000806000606084860312156125ad57600080fd5b83356125b8816123eb565b925060208401356125c8816123eb565b929592945050506040919091013590565b6000602082840312156125eb57600080fd5b8135611c36816123eb565b8035801515811461241857600080fd5b60006020828403121561261857600080fd5b611c36826125f6565b60006020828403121561263357600080fd5b5035919050565b6000806000806080858703121561265057600080fd5b5050823594602084013594506040840135936060013592509050565b60008060006040848603121561268157600080fd5b833567ffffffffffffffff8082111561269957600080fd5b818601915086601f8301126126ad57600080fd5b8135818111156126bc57600080fd5b8760208260051b85010111156126d157600080fd5b6020928301955093506126e791860190506125f6565b90509250925092565b6000806040838503121561270357600080fd5b823561270e816123eb565b9150602083013561271e816123eb565b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036127b8576127b8612758565b5060010190565b8082018082111561079657610796612758565b8181038181111561079657610796612758565b6000602082840312156127f757600080fd5b8151611c36816123eb565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561285f57845173ffffffffffffffffffffffffffffffffffffffff168352938301939183019160010161282d565b505073ffffffffffffffffffffffffffffffffffffffff969096166060850152505050608001529392505050565b6000826128c3577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b80820281158282048414176107965761079661275856fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212202d773ac4f29ae9070d4003939aeb619d65092efa9533d35b027e98e39354d1d464736f6c63430008120033

Deployed Bytecode Sourcemap

4275:13502:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12950:169;;;;;;;;;;-1:-1:-1;12950:169:0;;;;;:::i;:::-;;:::i;:::-;;6778:83;;;;;;;;;;-1:-1:-1;6848:5:0;;;;;;;;;;;;;;;;;6778:83;;;;;;;:::i;:::-;;;;;;;;7703:193;;;;;;;;;;-1:-1:-1;7703:193:0;;;;;:::i;:::-;;:::i;:::-;;;2783:14:1;;2776:22;2758:41;;2746:2;2731:18;7703:193:0;2618:187:1;5628:41:0;;;;;;;;;;-1:-1:-1;5628:41:0;;;;;;;;;;;3012:42:1;3000:55;;;2982:74;;2970:2;2955:18;5628:41:0;2810:252:1;7055:95:0;;;;;;;;;;-1:-1:-1;4832:18:0;7055:95;;;3213:25:1;;;3201:2;3186:18;7055:95:0;3067:177:1;7904:446:0;;;;;;;;;;-1:-1:-1;7904:446:0;;;;;:::i;:::-;;:::i;5926:50::-;;;;;;;;;;;;;;;;6964:83;;;;;;;;;;-1:-1:-1;6964:83:0;;4506:1;3852:36:1;;3840:2;3825:18;6964:83:0;3710:184:1;5676:28:0;;;;;;;;;;-1:-1:-1;5676:28:0;;;;;;;;13127:92;;;;;;;;;;-1:-1:-1;13127:92:0;;;;;:::i;:::-;;:::i;17159:101::-;;;;;;;;;;-1:-1:-1;17159:101:0;;;;;:::i;:::-;;:::i;12707:235::-;;;;;;;;;;;;;:::i;7158:138::-;;;;;;;;;;-1:-1:-1;7158:138:0;;;;;:::i;:::-;;:::i;1762:148::-;;;;;;;;;;;;;:::i;17299:108::-;;;;;;;;;;-1:-1:-1;17299:108:0;;;;;:::i;:::-;;:::i;5818:46::-;;;;;;;;;;;;;;;;5370:43;;;;;;;;;;-1:-1:-1;5370:43:0;;;;;:::i;:::-;;;;;;;;;;;;;;1548:79;;;;;;;;;;-1:-1:-1;1586:7:0;1613:6;;;1548:79;;12354:101;;;;;;;;;;-1:-1:-1;12354:101:0;;;;;:::i;:::-;;:::i;5871:48::-;;;;;;;;;;;;;;;;6869:87;;;;;;;;;;-1:-1:-1;6941:7:0;;;;;;;;;;;;;;;;;6869:87;;16968:139;;;;;;;;;;-1:-1:-1;16968:139:0;;;;;:::i;:::-;;:::i;16625:291::-;;;;;;;;;;-1:-1:-1;16625:291:0;;;;;:::i;:::-;;:::i;7304:199::-;;;;;;;;;;-1:-1:-1;7304:199:0;;;;;:::i;:::-;;:::i;5332:36::-;;;;;;;;;;-1:-1:-1;5332:36:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;12463:236;;;;;;;;;;;;;:::i;17538:234::-;;;;;;;;;;-1:-1:-1;17538:234:0;;;;;:::i;:::-;;:::i;7511:184::-;;;;;;;;;;-1:-1:-1;7511:184:0;;;;;:::i;:::-;7660:18;;;;7628:7;7660:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;7511:184;17415:115;;;;;;;;;;-1:-1:-1;17415:115:0;;;;;:::i;:::-;;:::i;1918:244::-;;;;;;;;;;-1:-1:-1;1918:244:0;;;;;:::i;:::-;;:::i;12950:169::-;1675:6;;:22;:6;387:10;1675:22;1667:67;;;;;;;6596:2:1;1667:67:0;;;6578:21:1;;;6615:18;;;6608:30;6674:34;6654:18;;;6647:62;6726:18;;1667:67:0;;;;;;;;;13026:9:::1;13021:91;13045:5;:12;13041:1;:16;13021:91;;;13096:4;13079;:14;13084:5;13090:1;13084:8;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;13079:14:::1;;::::0;;;::::1;::::0;;;;;;-1:-1:-1;13079:14:0;:21;;;::::1;::::0;::::1;;::::0;;;::::1;::::0;;13059:3;::::1;::::0;::::1;:::i;:::-;;;;13021:91;;;;12950:169:::0;:::o;7703:193::-;7805:4;7827:39;387:10;7850:7;7859:6;7827:8;:39::i;:::-;-1:-1:-1;7884:4:0;7703:193;;;;;:::o;7904:446::-;8036:4;8053:36;8063:6;8071:9;8082:6;8053:9;:36::i;:::-;8100:220;8123:6;387:10;8171:138;8227:6;8171:138;;;;;;;;;;;;;;;;;:19;;;;;;;:11;:19;;;;;;;;387:10;8171:33;;;;;;;;;;:37;:138::i;:::-;8100:8;:220::i;:::-;-1:-1:-1;8338:4:0;7904:446;;;;;:::o;13127:92::-;1675:6;;:22;:6;387:10;1675:22;1667:67;;;;;;;6596:2:1;1667:67:0;;;6578:21:1;;;6615:18;;;6608:30;6674:34;6654:18;;;6647:62;6726:18;;1667:67:0;6394:356:1;1667:67:0;13191:12:::1;;13206:5;13191:12:::0;;;:4:::1;:12;::::0;;;;:20;;;::::1;::::0;;13127:92::o;17159:101::-;1675:6;;:22;:6;387:10;1675:22;1667:67;;;;;;;6596:2:1;1667:67:0;;;6578:21:1;;;6615:18;;;6608:30;6674:34;6654:18;;;6647:62;6726:18;;1667:67:0;6394:356:1;1667:67:0;17226:11:::1;:26:::0;;;::::1;;::::0;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;17159:101::o;12707:235::-;12773:19;;;;387:10;12757:35;;;:72;;;-1:-1:-1;12812:17:0;;;;387:10;12796:33;;;12757:72;12749:81;;;;;;12870:21;12902:32;12870:21;12902:12;:32::i;:::-;12738:204;12707:235::o;7158:138::-;7271:16;;;7224:7;7271:16;;;:7;:16;;;;;;7251:37;;:19;:37::i;1762:148::-;1675:6;;:22;:6;387:10;1675:22;1667:67;;;;;;;6596:2:1;1667:67:0;;;6578:21:1;;;6615:18;;;6608:30;6674:34;6654:18;;;6647:62;6726:18;;1667:67:0;6394:356:1;1667:67:0;1869:1:::1;1853:6:::0;;1832:40:::1;::::0;::::1;1853:6:::0;;::::1;::::0;1832:40:::1;::::0;1869:1;;1832:40:::1;1900:1;1883:19:::0;;;::::1;::::0;;1762:148::o;17299:108::-;1675:6;;:22;:6;387:10;1675:22;1667:67;;;;;;;6596:2:1;1667:67:0;;;6578:21:1;;;6615:18;;;6608:30;6674:34;6654:18;;;6647:62;6726:18;;1667:67:0;6394:356:1;1667:67:0;17373:12:::1;:26:::0;17299:108::o;12354:101::-;1675:6;;:22;:6;387:10;1675:22;1667:67;;;;;;;6596:2:1;1667:67:0;;;6578:21:1;;;6615:18;;;6608:30;6674:34;6654:18;;;6647:62;6726:18;;1667:67:0;6394:356:1;1667:67:0;12421:11:::1;:26:::0;;;::::1;;::::0;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;12354:101::o;16968:139::-;1675:6;;:22;:6;387:10;1675:22;1667:67;;;;;;;6596:2:1;1667:67:0;;;6578:21:1;;;6615:18;;;6608:30;6674:34;6654:18;;;6647:62;6726:18;;1667:67:0;6394:356:1;1667:67:0;17059:19:::1;:40:::0;16968:139::o;16625:291::-;1675:6;;:22;:6;387:10;1675:22;1667:67;;;;;;;6596:2:1;1667:67:0;;;6578:21:1;;;6615:18;;;6608:30;6674:34;6654:18;;;6647:62;6726:18;;1667:67:0;6394:356:1;1667:67:0;16759:14:::1;:30:::0;;;;16800:15:::1;:32:::0;;;;16843:12:::1;:26:::0;16880:13:::1;:28:::0;16625:291::o;7304:199::-;7409:4;7431:42;387:10;7455:9;7466:6;7431:9;:42::i;12463:236::-;12529:19;;;;387:10;12513:35;;;:72;;;-1:-1:-1;12568:17:0;;;;387:10;12552:33;;;12513:72;12505:81;;;;;;12597:23;12623:24;12641:4;12623:9;:24::i;:::-;12597:50;;12658:33;12675:15;12658:16;:33::i;17538:234::-;1675:6;;:22;:6;387:10;1675:22;1667:67;;;;;;;6596:2:1;1667:67:0;;;6578:21:1;;;6615:18;;;6608:30;6674:34;6654:18;;;6647:62;6726:18;;1667:67:0;6394:356:1;1667:67:0;17655:9:::1;17651:114;17670:19:::0;;::::1;17651:114;;;17745:8;17711:18;:31;17730:8;;17739:1;17730:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;17711:31;;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;17711:31:0;:42;;;::::1;::::0;::::1;;::::0;;;::::1;::::0;;17691:3;::::1;::::0;::::1;:::i;:::-;;;;17651:114;;;;17538:234:::0;;;:::o;17415:115::-;1675:6;;:22;:6;387:10;1675:22;1667:67;;;;;;;6596:2:1;1667:67:0;;;6578:21:1;;;6615:18;;;6608:30;6674:34;6654:18;;;6647:62;6726:18;;1667:67:0;6394:356:1;1667:67:0;17492:14:::1;:30:::0;17415:115::o;1918:244::-;1675:6;;:22;:6;387:10;1675:22;1667:67;;;;;;;6596:2:1;1667:67:0;;;6578:21:1;;;6615:18;;;6608:30;6674:34;6654:18;;;6647:62;6726:18;;1667:67:0;6394:356:1;1667:67:0;2007:22:::1;::::0;::::1;1999:73;;;::::0;::::1;::::0;;7535:2:1;1999:73:0::1;::::0;::::1;7517:21:1::0;7574:2;7554:18;;;7547:30;7613:34;7593:18;;;7586:62;7684:8;7664:18;;;7657:36;7710:19;;1999:73:0::1;7333:402:1::0;1999:73:0::1;2109:6;::::0;;2088:38:::1;::::0;::::1;::::0;;::::1;::::0;2109:6;::::1;::::0;2088:38:::1;::::0;::::1;2137:6;:17:::0;;;::::1;;::::0;;;::::1;::::0;;;::::1;::::0;;1918:244::o;9041:369::-;9168:19;;;9160:68;;;;;;;7942:2:1;9160:68:0;;;7924:21:1;7981:2;7961:18;;;7954:30;8020:34;8000:18;;;7993:62;8091:6;8071:18;;;8064:34;8115:19;;9160:68:0;7740:400:1;9160:68:0;9247:21;;;9239:68;;;;;;;8347:2:1;9239:68:0;;;8329:21:1;8386:2;8366:18;;;8359:30;8425:34;8405:18;;;8398:62;8496:4;8476:18;;;8469:32;8518:19;;9239:68:0;8145:398:1;9239:68:0;9318:18;;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;9370:32;;3213:25:1;;;9370:32:0;;3186:18:1;9370:32:0;;;;;;;9041:369;;;:::o;9418:2330::-;9540:18;;;9532:68;;;;;;;8750:2:1;9532:68:0;;;8732:21:1;8789:2;8769:18;;;8762:30;8828:34;8808:18;;;8801:62;8899:7;8879:18;;;8872:35;8924:19;;9532:68:0;8548:401:1;9532:68:0;9619:16;;;9611:64;;;;;;;9156:2:1;9611:64:0;;;9138:21:1;9195:2;9175:18;;;9168:30;9234:34;9214:18;;;9207:62;9305:5;9285:18;;;9278:33;9328:19;;9611:64:0;8954:399:1;9611:64:0;9703:1;9694:6;:10;9686:64;;;;;;;9560:2:1;9686:64:0;;;9542:21:1;9599:2;9579:18;;;9572:30;9638:34;9618:18;;;9611:62;9709:11;9689:18;;;9682:39;9738:19;;9686:64:0;9358:405:1;9686:64:0;1586:7;1613:6;;9767:15;;;1613:6;;9767:15;;;;:32;;-1:-1:-1;1586:7:0;1613:6;;9786:13;;;1613:6;;9786:13;;9767:32;9763:1259;;;9856:11;;;;;;;9851:144;;1586:7;1613:6;;9896:15;;;1613:6;;9896:15;9888:91;;;;;;;9970:2:1;9888:91:0;;;9952:21:1;10009:2;9989:18;;;9982:30;10048:34;10028:18;;;10021:62;10119:33;10099:18;;;10092:61;10170:19;;9888:91:0;9768:427:1;9888:91:0;10029:12;;10019:6;:22;;10011:63;;;;;;;10402:2:1;10011:63:0;;;10384:21:1;10441:2;10421:18;;;10414:30;10480;10460:18;;;10453:58;10528:18;;10011:63:0;10200:352:1;10011:63:0;10098:10;;;;;;;:4;:10;;;;;;;;10097:11;:24;;;;-1:-1:-1;10113:8:0;;;;;;;:4;:8;;;;;;;;10112:9;10097:24;10089:72;;;;;;;10759:2:1;10089:72:0;;;10741:21:1;10798:2;10778:18;;;10771:30;10837:34;10817:18;;;10810:62;10908:5;10888:18;;;10881:33;10931:19;;10089:72:0;10557:399:1;10089:72:0;10187:13;;;10181:19;;;10187:13;;10181:19;10178:146;;10254:14;;10245:6;10229:13;10239:2;10229:9;:13::i;:::-;:22;;;;:::i;:::-;:39;10221:87;;;;;;;11293:2:1;10221:87:0;;;11275:21:1;11332:2;11312:18;;;11305:30;11371:34;11351:18;;;11344:62;11442:5;11422:18;;;11415:33;11465:19;;10221:87:0;11091:399:1;10221:87:0;10340:28;10371:24;10389:4;10371:9;:24::i;:::-;10449:19;;10512:12;;10340:55;;-1:-1:-1;10425:43:0;;;;10488:36;;10485:124;;10581:12;;10558:35;;10485:124;10629:7;:18;;;;-1:-1:-1;10641:6:0;;;;;;;10640:7;10629:18;:43;;;;-1:-1:-1;10659:13:0;;;10651:21;;;10659:13;;10651:21;;10629:43;:58;;;;-1:-1:-1;10676:11:0;;;;;;;10629:58;:87;;;;-1:-1:-1;10692:24:0;;;;;;;:18;:24;;;;;;;;10691:25;10629:87;:114;;;;-1:-1:-1;10721:22:0;;;;;;;:18;:22;;;;;;;;10720:23;10629:114;10625:386;;;10764:38;10781:20;10764:16;:38::i;:::-;10850:21;10894:22;;10890:106;;10941:35;10954:21;10941:12;:35::i;:::-;10745:266;10625:386;9801:1221;;9763:1259;11098:24;;;11034:12;11098:24;;;:18;:24;;;;;;11049:4;;11098:24;;;:50;;-1:-1:-1;11126:22:0;;;;;;;:18;:22;;;;;;;;11098:50;11097:102;;;-1:-1:-1;11162:13:0;;;11154:21;;;11162:13;;11154:21;;;;:44;;-1:-1:-1;11185:13:0;;;11179:19;;;11185:13;;11179:19;;11154:44;11093:594;;;-1:-1:-1;11226:5:0;11093:594;;;11309:13;;;11301:21;;;11309:13;;11301:21;:55;;;;-1:-1:-1;11340:15:0;;;11326:30;;;11340:15;;11326:30;;11301:55;11298:162;;;11389:14;;11377:9;:26;11432:12;;11422:7;:22;11298:162;11519:13;;;11513:19;;;11519:13;;11513:19;:55;;;;-1:-1:-1;11552:15:0;;;11536:32;;;11552:15;;11536:32;;11513:55;11509:165;;;11601:15;;11589:9;:27;11645:13;;11635:7;:23;11509:165;11699:41;11714:4;11720:2;11724:6;11732:7;11699:14;:41::i;2526:224::-;2646:7;2682:12;2674:6;;;;2666:29;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;2706:9:0;2718:5;2722:1;2718;:5;:::i;:::-;2706:17;2526:224;-1:-1:-1;;;;;2526:224:0:o;12247:99::-;12304:17;;:34;;:17;;;;;:34;;;;;12331:6;;12304:17;:34;:17;:34;12331:6;12304:17;:34;;;;;;;;;;;;;;;;;;;8358:323;8453:7;8511;;8500;:18;;8478:110;;;;;;;11830:2:1;8478:110:0;;;11812:21:1;11869:2;11849:18;;;11842:30;11908:34;11888:18;;;11881:62;11979:12;11959:18;;;11952:40;12009:19;;8478:110:0;11628:406:1;8478:110:0;8599:19;8621:10;:8;:10::i;:::-;8599:32;-1:-1:-1;8649:24:0;:7;8599:32;8649:11;:24::i;:::-;8642:31;8358:323;-1:-1:-1;;;8358:323:0:o;11756:483::-;6070:6;:13;;;;;;;;11858:16:::1;::::0;;11872:1:::1;11858:16:::0;;;;;::::1;::::0;;-1:-1:-1;;11858:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;11858:16:0::1;11834:40;;11903:4;11885;11890:1;11885:7;;;;;;;;:::i;:::-;:23;::::0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;11929:15:::1;::::0;:22:::1;::::0;;;;;;;:15;;;::::1;::::0;:20:::1;::::0;:22:::1;::::0;;::::1;::::0;11885:7;;11929:22;;;;;:15;:22:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11919:4;11924:1;11919:7;;;;;;;;:::i;:::-;:32;::::0;;::::1;:7;::::0;;::::1;::::0;;;;;:32;11994:15:::1;::::0;11962:62:::1;::::0;11979:4:::1;::::0;11994:15:::1;12012:11:::0;11962:8:::1;:62::i;:::-;12035:15;::::0;:196:::1;::::0;;;;:15:::1;::::0;;::::1;::::0;:66:::1;::::0;:196:::1;::::0;12116:11;;12035:15:::1;::::0;12158:4;;12185::::1;::::0;12205:15:::1;::::0;12035:196:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;6106:6:0;:14;;;;;;-1:-1:-1;;;;11756:483:0:o;13227:282::-;13383:7;13378:28;;13392:14;:12;:14::i;:::-;13417:44;13435:6;13443:9;13454:6;13417:17;:44::i;:::-;13477:7;13472:29;;13486:15;8972:17;;8960:9;:29;9010:15;;9000:7;:25;8916:117;16188:164;16230:7;16251:15;16268;16287:19;:17;:19::i;:::-;16250:56;;-1:-1:-1;16250:56:0;-1:-1:-1;16324:20:0;16250:56;;16324:11;:20::i;:::-;16317:27;;;;16188:164;:::o;3012:132::-;3070:7;3097:39;3101:1;3104;3097:39;;;;;;;;;;;;;;;;;:3;:39::i;8689:219::-;8736:9;;:14;:30;;;;-1:-1:-1;8754:7:0;;:12;8736:30;8732:43;;;8689:219::o;8732:43::-;8807:9;;;8787:17;:29;8845:7;;;8827:15;:25;-1:-1:-1;8865:13:0;;;;8889:11;8689:219::o;13517:610::-;13664:15;13694:23;13732:12;13759:23;13797:12;13824:13;13851:19;13862:7;13851:10;:19::i;:::-;13899:15;;;;;;;:7;:15;;;;;;13649:221;;-1:-1:-1;13649:221:0;;-1:-1:-1;13649:221:0;;-1:-1:-1;13649:221:0;-1:-1:-1;13649:221:0;-1:-1:-1;13649:221:0;-1:-1:-1;13899:28:0;;13649:221;13899:19;:28::i;:::-;13881:15;;;;;;;;:7;:15;;;;;;:46;;;;13959:18;;;;;;;:39;;13982:15;13959:22;:39::i;:::-;13938:18;;;;;;;:7;:18;;;;;:60;14009:16;14019:5;14009:9;:16::i;:::-;14036:23;14048:4;14054;14036:11;:23::i;:::-;14092:9;14075:44;;14084:6;14075:44;;;14103:15;14075:44;;;;3213:25:1;;3201:2;3186:18;;3067:177;14075:44:0;;;;;;;;13638:489;;;;;;13517:610;;;:::o;16360:257::-;16458:7;;16411;;;;4832:18;16526:20;16458:7;4832:18;16526:11;:20::i;:::-;16516:7;:30;16512:61;;;-1:-1:-1;;16556:7:0;;;4832:18;;-1:-1:-1;16360:257:0;-1:-1:-1;16360:257:0:o;16512:61::-;16592:7;;16601;;-1:-1:-1;16360:257:0;-1:-1:-1;16360:257:0:o;3152:223::-;3272:7;3307:12;3300:5;3292:28;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;3331:9:0;3343:5;3347:1;3343;:5;:::i;14546:615::-;14646:7;14668;14690;14712;14734;14756;14792:23;14817:12;14831:13;14861:40;14873:7;14882:9;;14893:7;;14861:11;:40::i;:::-;14791:110;;;;;;14912:19;14934:10;:8;:10::i;:::-;14912:32;;14956:15;14973:23;14998:12;15027:46;15039:7;15048:4;15054:5;15061:11;15027;:46::i;:::-;14955:118;;-1:-1:-1;14955:118:0;-1:-1:-1;14955:118:0;-1:-1:-1;15124:15:0;;-1:-1:-1;15141:4:0;;-1:-1:-1;15147:5:0;;-1:-1:-1;;;;;14546:615:0;;;;;;;:::o;2382:136::-;2440:7;2467:43;2471:1;2474;2467:43;;;;;;;;;;;;;;;;;:3;:43::i;2195:179::-;2253:7;;2285:5;2289:1;2285;:5;:::i;:::-;2273:17;;2314:1;2309;:6;;2301:46;;;;;;;13807:2:1;2301:46:0;;;13789:21:1;13846:2;13826:18;;;13819:30;13885:29;13865:18;;;13858:57;13932:18;;2301:46:0;13605:351:1;14135:211:0;14188:19;14210:10;:8;:10::i;:::-;14188:32;-1:-1:-1;14231:13:0;14247:22;:5;14188:32;14247:9;:22::i;:::-;14321:4;14305:22;;;;:7;:22;;;;;;14231:38;;-1:-1:-1;14305:33:0;;14231:38;14305:26;:33::i;:::-;14296:4;14280:22;;;;:7;:22;;;;;:58;-1:-1:-1;;;14135:211:0:o;14354:147::-;14432:7;;:17;;14444:4;14432:11;:17::i;:::-;14422:7;:27;14473:10;;:20;;14488:4;14473:14;:20::i;:::-;14460:10;:33;-1:-1:-1;;14354:147:0:o;15169:469::-;15338:7;;;;15432:30;15458:3;15432:21;:7;15444:8;15432:11;:21::i;:::-;:25;;:30::i;:::-;15417:45;-1:-1:-1;15473:13:0;15489:28;15513:3;15489:19;:7;15501:6;15489:11;:19::i;:28::-;15473:44;-1:-1:-1;15528:23:0;15554:28;15473:44;15554:17;:7;15566:4;15554:11;:17::i;:::-;:21;;:28::i;:::-;15528:54;15618:4;;-1:-1:-1;15624:5:0;;-1:-1:-1;15169:469:0;;-1:-1:-1;;;;;15169:469:0:o;15646:534::-;15840:7;;;;15937:24;:7;15949:11;15937;:24::i;:::-;15919:42;-1:-1:-1;15972:12:0;15987:21;:4;15996:11;15987:8;:21::i;:::-;15972:36;-1:-1:-1;16019:13:0;16035:22;:5;16045:11;16035:9;:22::i;:::-;16019:38;-1:-1:-1;16068:23:0;16094:28;16019:38;16094:17;:7;16106:4;16094:11;:17::i;:28::-;16141:7;;;;-1:-1:-1;16167:4:0;;-1:-1:-1;15646:534:0;;-1:-1:-1;;;;;;;15646:534:0:o;2758:246::-;2816:7;2840:1;2845;2840:6;2836:47;;-1:-1:-1;2870:1:0;2863:8;;2836:47;2893:9;2905:5;2909:1;2905;:5;:::i;:::-;2893:17;-1:-1:-1;2938:1:0;2929:5;2933:1;2893:17;2929:5;:::i;:::-;:10;2921:56;;;;;;;14336:2:1;2921:56:0;;;14318:21:1;14375:2;14355:18;;;14348:30;14414:34;14394:18;;;14387:62;14485:3;14465:18;;;14458:31;14506:19;;2921:56:0;14134:397:1;14:184;66:77;63:1;56:88;163:4;160:1;153:15;187:4;184:1;177:15;203:154;289:42;282:5;278:54;271:5;268:65;258:93;;347:1;344;337:12;362:134;430:20;;459:31;430:20;459:31;:::i;:::-;362:134;;;:::o;501:1180::-;585:6;616:2;659;647:9;638:7;634:23;630:32;627:52;;;675:1;672;665:12;627:52;715:9;702:23;744:18;785:2;777:6;774:14;771:34;;;801:1;798;791:12;771:34;839:6;828:9;824:22;814:32;;884:7;877:4;873:2;869:13;865:27;855:55;;906:1;903;896:12;855:55;942:2;929:16;964:2;960;957:10;954:36;;;970:18;;:::i;:::-;1016:2;1013:1;1009:10;1048:2;1042:9;1107:66;1102:2;1098;1094:11;1090:84;1082:6;1078:97;1225:6;1213:10;1210:22;1205:2;1193:10;1190:18;1187:46;1184:72;;;1236:18;;:::i;:::-;1272:2;1265:22;1322:18;;;1356:15;;;;-1:-1:-1;1398:11:1;;;1394:20;;;1426:19;;;1423:39;;;1458:1;1455;1448:12;1423:39;1482:11;;;;1502:148;1518:6;1513:3;1510:15;1502:148;;;1584:23;1603:3;1584:23;:::i;:::-;1572:36;;1535:12;;;;1628;;;;1502:148;;;1669:6;501:1180;-1:-1:-1;;;;;;;;501:1180:1:o;1686:607::-;1798:4;1827:2;1856;1845:9;1838:21;1888:6;1882:13;1931:6;1926:2;1915:9;1911:18;1904:34;1956:1;1966:140;1980:6;1977:1;1974:13;1966:140;;;2075:14;;;2071:23;;2065:30;2041:17;;;2060:2;2037:26;2030:66;1995:10;;1966:140;;;1970:3;2155:1;2150:2;2141:6;2130:9;2126:22;2122:31;2115:42;2284:2;2214:66;2209:2;2201:6;2197:15;2193:88;2182:9;2178:104;2174:113;2166:121;;;;1686:607;;;;:::o;2298:315::-;2366:6;2374;2427:2;2415:9;2406:7;2402:23;2398:32;2395:52;;;2443:1;2440;2433:12;2395:52;2482:9;2469:23;2501:31;2526:5;2501:31;:::i;:::-;2551:5;2603:2;2588:18;;;;2575:32;;-1:-1:-1;;;2298:315:1:o;3249:456::-;3326:6;3334;3342;3395:2;3383:9;3374:7;3370:23;3366:32;3363:52;;;3411:1;3408;3401:12;3363:52;3450:9;3437:23;3469:31;3494:5;3469:31;:::i;:::-;3519:5;-1:-1:-1;3576:2:1;3561:18;;3548:32;3589:33;3548:32;3589:33;:::i;:::-;3249:456;;3641:7;;-1:-1:-1;;;3695:2:1;3680:18;;;;3667:32;;3249:456::o;4130:247::-;4189:6;4242:2;4230:9;4221:7;4217:23;4213:32;4210:52;;;4258:1;4255;4248:12;4210:52;4297:9;4284:23;4316:31;4341:5;4316:31;:::i;4382:160::-;4447:20;;4503:13;;4496:21;4486:32;;4476:60;;4532:1;4529;4522:12;4547:180;4603:6;4656:2;4644:9;4635:7;4631:23;4627:32;4624:52;;;4672:1;4669;4662:12;4624:52;4695:26;4711:9;4695:26;:::i;4732:180::-;4791:6;4844:2;4832:9;4823:7;4819:23;4815:32;4812:52;;;4860:1;4857;4850:12;4812:52;-1:-1:-1;4883:23:1;;4732:180;-1:-1:-1;4732:180:1:o;4917:385::-;5003:6;5011;5019;5027;5080:3;5068:9;5059:7;5055:23;5051:33;5048:53;;;5097:1;5094;5087:12;5048:53;-1:-1:-1;;5120:23:1;;;5190:2;5175:18;;5162:32;;-1:-1:-1;5241:2:1;5226:18;;5213:32;;5292:2;5277:18;5264:32;;-1:-1:-1;4917:385:1;-1:-1:-1;4917:385:1:o;5307:689::-;5399:6;5407;5415;5468:2;5456:9;5447:7;5443:23;5439:32;5436:52;;;5484:1;5481;5474:12;5436:52;5524:9;5511:23;5553:18;5594:2;5586:6;5583:14;5580:34;;;5610:1;5607;5600:12;5580:34;5648:6;5637:9;5633:22;5623:32;;5693:7;5686:4;5682:2;5678:13;5674:27;5664:55;;5715:1;5712;5705:12;5664:55;5755:2;5742:16;5781:2;5773:6;5770:14;5767:34;;;5797:1;5794;5787:12;5767:34;5852:7;5845:4;5835:6;5832:1;5828:14;5824:2;5820:23;5816:34;5813:47;5810:67;;;5873:1;5870;5863:12;5810:67;5904:4;5896:13;;;;-1:-1:-1;5928:6:1;-1:-1:-1;5953:37:1;;5969:20;;;-1:-1:-1;5953:37:1;:::i;:::-;5943:47;;5307:689;;;;;:::o;6001:388::-;6069:6;6077;6130:2;6118:9;6109:7;6105:23;6101:32;6098:52;;;6146:1;6143;6136:12;6098:52;6185:9;6172:23;6204:31;6229:5;6204:31;:::i;:::-;6254:5;-1:-1:-1;6311:2:1;6296:18;;6283:32;6324:33;6283:32;6324:33;:::i;:::-;6376:7;6366:17;;;6001:388;;;;;:::o;6755:184::-;6807:77;6804:1;6797:88;6904:4;6901:1;6894:15;6928:4;6925:1;6918:15;6944:184;6996:77;6993:1;6986:88;7093:4;7090:1;7083:15;7117:4;7114:1;7107:15;7133:195;7172:3;7203:66;7196:5;7193:77;7190:103;;7273:18;;:::i;:::-;-1:-1:-1;7320:1:1;7309:13;;7133:195::o;10961:125::-;11026:9;;;11047:10;;;11044:36;;;11060:18;;:::i;11495:128::-;11562:9;;;11583:11;;;11580:37;;;11597:18;;:::i;12039:251::-;12109:6;12162:2;12150:9;12141:7;12137:23;12133:32;12130:52;;;12178:1;12175;12168:12;12130:52;12210:9;12204:16;12229:31;12254:5;12229:31;:::i;12295:1026::-;12557:4;12605:3;12594:9;12590:19;12636:6;12625:9;12618:25;12662:2;12700:6;12695:2;12684:9;12680:18;12673:34;12743:3;12738:2;12727:9;12723:18;12716:31;12767:6;12802;12796:13;12833:6;12825;12818:22;12871:3;12860:9;12856:19;12849:26;;12910:2;12902:6;12898:15;12884:29;;12931:1;12941:218;12955:6;12952:1;12949:13;12941:218;;;13020:13;;13035:42;13016:62;13004:75;;13134:15;;;;13099:12;;;;12977:1;12970:9;12941:218;;;-1:-1:-1;;13227:42:1;13215:55;;;;13210:2;13195:18;;13188:83;-1:-1:-1;;;13302:3:1;13287:19;13280:35;13176:3;12295:1026;-1:-1:-1;;;12295:1026:1:o;13326:274::-;13366:1;13392;13382:189;;13427:77;13424:1;13417:88;13528:4;13525:1;13518:15;13556:4;13553:1;13546:15;13382:189;-1:-1:-1;13585:9:1;;13326:274::o;13961:168::-;14034:9;;;14065;;14082:15;;;14076:22;;14062:37;14052:71;;14103:18;;:::i

Swarm Source

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