ETH Price: $2,775.06 (+1.38%)

Token

Good Morning Frens (GMF)
 

Overview

Max Total Supply

1,000,000,000 GMF

Holders

131

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
653,307.766923599181558849 GMF

Value
$0.00
0x7afa9d836d2fccf172b66622625e56404e465dbd
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:
GMF

Compiler Version
v0.8.27+commit.40a35a09

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2025-02-15
*/

// SPDX-License-Identifier: MIT

pragma solidity 0.8.27;

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

library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        return a + b;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return a - b;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        return a * b;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }

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

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

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

abstract contract Ownable is Context {
    address internal _owner;
    address private _previousOwner;

    event OwnershipTransferred(
        address indexed previousOwner,
        address indexed newOwner
    );

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

    function owner() public view virtual 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;
    }
}

interface IERC20Metadata is IERC20 {
    function name() external view returns (string memory);

    function symbol() external view returns (string memory);

    function decimals() external view returns (uint8);
}

contract ERC20 is Context, Ownable, IERC20, IERC20Metadata {
    using SafeMath for uint256;

    mapping(address => uint256) private _balances;

    mapping(address => mapping(address => uint256)) private _allowances;

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

    function name() public view virtual override returns (string memory) {
        return _name;
    }

    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }

    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

    function totalSupply() public view virtual override returns (uint256) {
        return _totalSupply;
    }

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

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

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

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

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

    function increaseAllowance(
        address spender,
        uint256 addedValue
    ) public virtual returns (bool) {
        _approve(
            _msgSender(),
            spender,
            _allowances[_msgSender()][spender].add(addedValue)
        );
        return true;
    }

    function decreaseAllowance(
        address spender,
        uint256 subtractedValue
    ) public virtual returns (bool) {
        _approve(
            _msgSender(),
            spender,
            _allowances[_msgSender()][spender].sub(
                subtractedValue,
                "ERC20: decreased allowance below zero"
            )
        );
        return true;
    }

    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(sender, recipient, amount);

        _balances[sender] = _balances[sender].sub(
            amount,
            "ERC20: transfer amount exceeds balance"
        );
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
    }

    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

        _beforeTokenTransfer(address(0), account, amount);

        _totalSupply = _totalSupply.add(amount);
        _balances[account] = _balances[account].add(amount);
        emit Transfer(address(0), account, amount);
    }

    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

        _beforeTokenTransfer(account, address(0), amount);

        _balances[account] = _balances[account].sub(
            amount,
            "ERC20: burn amount exceeds balance"
        );
        _totalSupply = _totalSupply.sub(amount);
        emit Transfer(account, address(0), amount);
    }

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        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 _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}
}

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

interface IUniswapV2Router01 {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);

}
 
interface IUniswapV2Router02 is IUniswapV2Router01 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}

contract GMF is ERC20 {

    using SafeMath for uint256;

    mapping(address => bool) private _isExcludedFromFee;

    address public feeWallet; 
    address constant burnAddress = 0x000000000000000000000000000000000000dEaD;

    uint256 public buyMFee = 2;
    uint256 public buyBFee = 1;
    uint256 public sellMFee = 2;
    uint256 public sellBFee = 1;


    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;
    bool inSwapAndSendFees;
    bool public swapAndSendFeesEnabled = true;
    bool public tradingEnabled = false;
    uint256 public numTokensSellToSendFees;

    event swapAndSendFeesEnabledUpdated(bool enabled);

    modifier lockTheSwap() {
        inSwapAndSendFees = true;
        _;
        inSwapAndSendFees = false;
    }

    constructor() ERC20("Good Morning Frens", "GMF") {
        numTokensSellToSendFees = 50000 * 10 ** decimals();
        feeWallet = 0x957Aa300bCc827a363DD91969cB5eeb9259C88F9;

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

        uniswapV2Router = _uniswapV2Router;

        _isExcludedFromFee[_msgSender()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[feeWallet] = true;

        _mint(owner(), 1000000000 * 10 ** decimals());
    }

    function enableTrading() external onlyOwner {
        tradingEnabled = true;
    }

    function includeAndExcludeFromFee(
        address account,
        bool value
    ) public onlyOwner {
        _isExcludedFromFee[account] = value;
    }

    function isExcludedFromFee(address account) public view returns (bool) {
        return _isExcludedFromFee[account];
    }

    function setBuyAndsellFee(
        uint256 _buyMFee,
        uint256 _buyBFee,
        uint256 _sellMFee,
        uint256 _sellBFee
    ) external onlyOwner {
        buyMFee = _buyMFee;
        buyBFee = _buyBFee;
        sellMFee = _sellMFee;
        sellBFee = _sellBFee;
    }

    function withdrawTaxTokens(address tokenAddress, uint256 tokens) external onlyOwner returns (bool success){
        return IERC20(tokenAddress).transfer(msg.sender, tokens);
    }

    function setFeesWallet(address _addr) external onlyOwner {
        feeWallet = _addr;
    }

    function setNumTokensSellToSendFees(uint256 amount) external onlyOwner {
        numTokensSellToSendFees = amount * 10 ** decimals();
    }

    function setswapAndSendFeesEnabled(bool _enabled) external onlyOwner {
        swapAndSendFeesEnabled = _enabled;
        emit swapAndSendFeesEnabledUpdated(_enabled);
    }

    receive() external payable {}

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

        uint256 contractTokenBalance = balanceOf(address(this));
        bool overMinTokenBalance = contractTokenBalance >=
            numTokensSellToSendFees;
        if (
            overMinTokenBalance &&
            !inSwapAndSendFees &&
            from != uniswapV2Pair &&
            to == uniswapV2Pair &&
            swapAndSendFeesEnabled
        ) {
            contractTokenBalance = numTokensSellToSendFees;
            swapBack(contractTokenBalance);
        }

        bool takeFee = true;
        if (_isExcludedFromFee[from] || _isExcludedFromFee[to]) {
            super._transfer(from, to, amount);
            takeFee = false;
        } else {
            if (from == uniswapV2Pair) {
                uint256 teamTokens = amount.mul(buyMFee).div(100);
                uint256 burnTokens = amount.mul(buyBFee).div(100);
                amount = amount.sub(teamTokens.add(burnTokens));
                super._transfer(from, burnAddress, burnTokens);
                super._transfer(from, address(this), teamTokens);
                super._transfer(from, to, amount);
            } else if (to == uniswapV2Pair) {
                uint256 teamTokens = amount.mul(sellMFee).div(100);
                uint256 burnTokens = amount.mul(sellBFee).div(100);
                amount = amount.sub(teamTokens.add(burnTokens));
                super._transfer(from, burnAddress, burnTokens);
                super._transfer(from, address(this), teamTokens);
                super._transfer(from, to, amount);
            } else {
                super._transfer(from, to, amount);
            }
        }
    }

    function swapBack(uint256 contractBalance) private lockTheSwap {
        if (contractBalance == 0) {
            return;
        }
        bool success;
        swapTokensForETH(contractBalance);
        uint256 ethBalance = address(this).balance;
        (success, ) = address(feeWallet).call{
            value: ethBalance
        }("");
    }

    function swapTokensForETH(uint256 tokenAmount) private {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp
        );
    }
}

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":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"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"swapAndSendFeesEnabledUpdated","type":"event"},{"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":"buyBFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"includeAndExcludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"numTokensSellToSendFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellBFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buyMFee","type":"uint256"},{"internalType":"uint256","name":"_buyBFee","type":"uint256"},{"internalType":"uint256","name":"_sellMFee","type":"uint256"},{"internalType":"uint256","name":"_sellBFee","type":"uint256"}],"name":"setBuyAndsellFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_addr","type":"address"}],"name":"setFeesWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setNumTokensSellToSendFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setswapAndSendFeesEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndSendFeesEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":"tokenAddress","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"withdrawTaxTokens","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052600260098190556001600a819055600b91909155600c55600e805461ffff60a81b1916600160a81b17905534801561003a575f5ffd5b5060405180604001604052806012815260200171476f6f64204d6f726e696e67204672656e7360701b8152506040518060400160405280600381526020016223a6a360e91b81525061009061035760201b60201c565b5f80546001600160a01b0319166001600160a01b039290921691821781556040517f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a360056100e283826104f3565b5060066100ef82826104f3565b506100fb915050601290565b61010690600a6106a4565b6101129061c3506106b2565b600f55600880546001600160a01b03191673957aa300bcc827a363dd91969cb5eeb9259c88f91790556040805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d91829163c45a0155916004808201926020929091908290030181865afa15801561018c573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101b091906106c9565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101fb573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061021f91906106c9565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015610269573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061028d91906106c9565b600e80546001600160a01b03199081166001600160a01b0393841617909155600d8054909116918316919091179055600160075f6102c83390565b6001600160a01b03908116825260208083019390935260409182015f908120805495151560ff1996871617905530815260079093528183208054851660019081179091556008549091168352912080549092161790556103516103325f546001600160a01b031690565b61033e6012600a6106a4565b61034c90633b9aca006106b2565b61035b565b50610709565b3390565b6001600160a01b0382166103b55760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640160405180910390fd5b6004546103c29082610448565b6004556001600160a01b0382165f908152600260205260409020546103e79082610448565b6001600160a01b0383165f818152600260205260408082209390935591519091907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906104379085815260200190565b60405180910390a35050565b505050565b5f61045382846106f6565b90505b92915050565b634e487b7160e01b5f52604160045260245ffd5b600181811c9082168061048457607f821691505b6020821081036104a257634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561044357805f5260205f20601f840160051c810160208510156104cd5750805b601f840160051c820191505b818110156104ec575f81556001016104d9565b5050505050565b81516001600160401b0381111561050c5761050c61045c565b6105208161051a8454610470565b846104a8565b6020601f821160018114610552575f831561053b5750848201515b5f19600385901b1c1916600184901b1784556104ec565b5f84815260208120601f198516915b828110156105815787850151825560209485019460019092019101610561565b508482101561059e57868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b634e487b7160e01b5f52601160045260245ffd5b6001815b60018411156105fc578085048111156105e0576105e06105ad565b60018416156105ee57908102905b60019390931c9280026105c5565b935093915050565b5f8261061257506001610456565b8161061e57505f610456565b8160018114610634576002811461063e5761065a565b6001915050610456565b60ff84111561064f5761064f6105ad565b50506001821b610456565b5060208310610133831016604e8410600b841016171561067d575081810a610456565b6106895f1984846105c1565b805f190482111561069c5761069c6105ad565b029392505050565b5f61045360ff841683610604565b8082028115828204841417610456576104566105ad565b5f602082840312156106d9575f5ffd5b81516001600160a01b03811681146106ef575f5ffd5b9392505050565b80820180821115610456576104566105ad565b6117b7806107165f395ff3fe6080604052600436106101de575f3560e01c806370a08231116100fd578063a60e799b11610092578063da7e2c7f11610062578063da7e2c7f14610556578063dd62ed3e14610575578063f25f4b56146105b9578063f2fde38b146105d8575f5ffd5b8063a60e799b146104ee578063a9059cbb14610503578063c453d6e914610522578063cc96447114610537575f5ffd5b80638c0caff4116100cd5780638c0caff4146104805780638da5cb5b1461049f57806395d89b41146104bb578063a457c2d7146104cf575f5ffd5b806370a0823114610405578063715018a61461043957806384e2b88d1461044d5780638a8c523c1461046c575f5ffd5b806339509351116101735780634ada218b116101435780634ada218b1461038457806351dd3b9d146103a45780635342acb4146103b957806353cae9cf146103f0575f5ffd5b8063395093511461031257806343d4f92b1461033157806349bd5a5e146103505780634ac9e61a1461036f575f5ffd5b80631694505e116101ae5780631694505e1461028357806318160ddd146102ba57806323b872dd146102d8578063313ce567146102f7575f5ffd5b806302a8b041146101e957806306fdde031461020a578063095ea7b314610234578063148d216114610263575f5ffd5b366101e557005b5f5ffd5b3480156101f4575f5ffd5b5061020861020336600461126e565b6105f7565b005b348015610215575f5ffd5b5061021e610681565b60405161022b9190611289565b60405180910390f35b34801561023f575f5ffd5b5061025361024e3660046112d2565b610711565b604051901515815260200161022b565b34801561026e575f5ffd5b50600e5461025390600160a81b900460ff1681565b34801561028e575f5ffd5b50600d546102a2906001600160a01b031681565b6040516001600160a01b03909116815260200161022b565b3480156102c5575f5ffd5b506004545b60405190815260200161022b565b3480156102e3575f5ffd5b506102536102f23660046112fc565b610727565b348015610302575f5ffd5b506040516012815260200161022b565b34801561031d575f5ffd5b5061025361032c3660046112d2565b61078e565b34801561033c575f5ffd5b5061020861034b36600461133a565b6107c3565b34801561035b575f5ffd5b50600e546102a2906001600160a01b031681565b34801561037a575f5ffd5b506102ca600b5481565b34801561038f575f5ffd5b50600e5461025390600160b01b900460ff1681565b3480156103af575f5ffd5b506102ca600a5481565b3480156103c4575f5ffd5b506102536103d336600461133a565b6001600160a01b03165f9081526007602052604090205460ff1690565b3480156103fb575f5ffd5b506102ca600f5481565b348015610410575f5ffd5b506102ca61041f36600461133a565b6001600160a01b03165f9081526002602052604090205490565b348015610444575f5ffd5b5061020861080e565b348015610458575f5ffd5b50610208610467366004611355565b61087f565b348015610477575f5ffd5b506102086108c4565b34801561048b575f5ffd5b5061020861049a36600461136c565b610902565b3480156104aa575f5ffd5b505f546001600160a01b03166102a2565b3480156104c6575f5ffd5b5061021e61093f565b3480156104da575f5ffd5b506102536104e93660046112d2565b61094e565b3480156104f9575f5ffd5b506102ca60095481565b34801561050e575f5ffd5b5061025361051d3660046112d2565b61099b565b34801561052d575f5ffd5b506102ca600c5481565b348015610542575f5ffd5b506102536105513660046112d2565b6109a7565b348015610561575f5ffd5b5061020861057036600461139b565b610a46565b348015610580575f5ffd5b506102ca61058f3660046113d2565b6001600160a01b039182165f90815260036020908152604080832093909416825291909152205490565b3480156105c4575f5ffd5b506008546102a2906001600160a01b031681565b3480156105e3575f5ffd5b506102086105f236600461133a565b610a99565b5f546001600160a01b031633146106295760405162461bcd60e51b8152600401610620906113fe565b60405180910390fd5b600e8054821515600160a81b0260ff60a81b199091161790556040517f95104a55e36dd507aac6f3a5211027febb09c940366b18700bc6e6cedf67426b9061067690831515815260200190565b60405180910390a150565b60606005805461069090611433565b80601f01602080910402602001604051908101604052809291908181526020018280546106bc90611433565b80156107075780601f106106de57610100808354040283529160200191610707565b820191905f5260205f20905b8154815290600101906020018083116106ea57829003601f168201915b5050505050905090565b5f61071d338484610b80565b5060015b92915050565b5f610733848484610ca4565b610784843361077f85604051806060016040528060288152602001611735602891396001600160a01b038a165f9081526003602090815260408083203384529091529020549190610f2e565b610b80565b5060019392505050565b335f8181526003602090815260408083206001600160a01b0387168452909152812054909161071d91859061077f9086610f59565b5f546001600160a01b031633146107ec5760405162461bcd60e51b8152600401610620906113fe565b600880546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b031633146108375760405162461bcd60e51b8152600401610620906113fe565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b031633146108a85760405162461bcd60e51b8152600401610620906113fe565b6108b46012600a611562565b6108be9082611570565b600f5550565b5f546001600160a01b031633146108ed5760405162461bcd60e51b8152600401610620906113fe565b600e805460ff60b01b1916600160b01b179055565b5f546001600160a01b0316331461092b5760405162461bcd60e51b8152600401610620906113fe565b600993909355600a91909155600b55600c55565b60606006805461069090611433565b5f61071d338461077f8560405180606001604052806025815260200161175d60259139335f9081526003602090815260408083206001600160a01b038d1684529091529020549190610f2e565b5f61071d338484610ca4565b5f80546001600160a01b031633146109d15760405162461bcd60e51b8152600401610620906113fe565b60405163a9059cbb60e01b8152336004820152602481018390526001600160a01b0384169063a9059cbb906044016020604051808303815f875af1158015610a1b573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a3f9190611587565b9392505050565b5f546001600160a01b03163314610a6f5760405162461bcd60e51b8152600401610620906113fe565b6001600160a01b03919091165f908152600760205260409020805460ff1916911515919091179055565b5f546001600160a01b03163314610ac25760405162461bcd60e51b8152600401610620906113fe565b6001600160a01b038116610b275760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610620565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038316610be25760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610620565b6001600160a01b038216610c435760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610620565b6001600160a01b038381165f8181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b038316610cca5760405162461bcd60e51b8152600401610620906115a2565b6001600160a01b038216610cf05760405162461bcd60e51b8152600401610620906115e7565b5f8111610d585760405162461bcd60e51b815260206004820152603060248201527f45524332303a207472616e7366657220616d6f756e74206d757374206265206760448201526f726561746572207468616e207a65726f60801b6064820152608401610620565b305f90815260026020526040902054600f5481108015908190610d855750600e54600160a01b900460ff16155b8015610d9f5750600e546001600160a01b03868116911614155b8015610db85750600e546001600160a01b038581169116145b8015610dcd5750600e54600160a81b900460ff165b15610de057600f549150610de082610f64565b6001600160a01b0385165f9081526007602052604090205460019060ff1680610e2057506001600160a01b0385165f9081526007602052604090205460ff165b15610e3757610e30868686610fec565b505f610f26565b600e546001600160a01b0390811690871603610ecd575f610e6e6064610e68600954886110f590919063ffffffff16565b90611100565b90505f610e8b6064610e68600a54896110f590919063ffffffff16565b9050610ea1610e9a8383610f59565b879061110b565b9550610eb08861dead83610fec565b610ebb883084610fec565b610ec6888888610fec565b5050610f26565b600e546001600160a01b0390811690861603610f1b575f610efe6064610e68600b54886110f590919063ffffffff16565b90505f610e8b6064610e68600c54896110f590919063ffffffff16565b610f26868686610fec565b505050505050565b5f8184841115610f515760405162461bcd60e51b81526004016106209190611289565b505050900390565b5f610a3f828461162a565b600e805460ff60a01b1916600160a01b1790558015610fdc575f610f8782611116565b60085460405147916001600160a01b03169082905f81818185875af1925050503d805f8114610fd1576040519150601f19603f3d011682016040523d82523d5f602084013e610fd6565b606091505b50505050505b50600e805460ff60a01b19169055565b6001600160a01b0383166110125760405162461bcd60e51b8152600401610620906115a2565b6001600160a01b0382166110385760405162461bcd60e51b8152600401610620906115e7565b6110748160405180606001604052806026815260200161170f602691396001600160a01b0386165f908152600260205260409020549190610f2e565b6001600160a01b038085165f9081526002602052604080822093909355908416815220546110a29082610f59565b6001600160a01b038084165f8181526002602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610c979085815260200190565b5f610a3f8284611570565b5f610a3f828461163d565b5f610a3f828461165c565b6040805160028082526060820183525f9260208301908036833701905050905030815f815181106111495761114961166f565b6001600160a01b03928316602091820292909201810191909152600d54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156111a0573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111c49190611683565b816001815181106111d7576111d761166f565b6001600160a01b039283166020918202929092010152600d546111fd9130911684610b80565b600d5460405163791ac94760e01b81526001600160a01b039091169063791ac947906112359085905f9086903090429060040161169e565b5f604051808303815f87803b15801561124c575f5ffd5b505af1158015610f26573d5f5f3e3d5ffd5b801515811461126b575f5ffd5b50565b5f6020828403121561127e575f5ffd5b8135610a3f8161125e565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b6001600160a01b038116811461126b575f5ffd5b5f5f604083850312156112e3575f5ffd5b82356112ee816112be565b946020939093013593505050565b5f5f5f6060848603121561130e575f5ffd5b8335611319816112be565b92506020840135611329816112be565b929592945050506040919091013590565b5f6020828403121561134a575f5ffd5b8135610a3f816112be565b5f60208284031215611365575f5ffd5b5035919050565b5f5f5f5f6080858703121561137f575f5ffd5b5050823594602084013594506040840135936060013592509050565b5f5f604083850312156113ac575f5ffd5b82356113b7816112be565b915060208301356113c78161125e565b809150509250929050565b5f5f604083850312156113e3575f5ffd5b82356113ee816112be565b915060208301356113c7816112be565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600181811c9082168061144757607f821691505b60208210810361146557634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52601160045260245ffd5b6001815b60018411156114ba5780850481111561149e5761149e61146b565b60018416156114ac57908102905b60019390931c928002611483565b935093915050565b5f826114d057506001610721565b816114dc57505f610721565b81600181146114f257600281146114fc57611518565b6001915050610721565b60ff84111561150d5761150d61146b565b50506001821b610721565b5060208310610133831016604e8410600b841016171561153b575081810a610721565b6115475f19848461147f565b805f190482111561155a5761155a61146b565b029392505050565b5f610a3f60ff8416836114c2565b80820281158282048414176107215761072161146b565b5f60208284031215611597575f5ffd5b8151610a3f8161125e565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b808201808211156107215761072161146b565b5f8261165757634e487b7160e01b5f52601260045260245ffd5b500490565b818103818111156107215761072161146b565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215611693575f5ffd5b8151610a3f816112be565b5f60a0820187835286602084015260a0604084015280865180835260c0850191506020880192505f5b818110156116ee5783516001600160a01b03168352602093840193909201916001016116c7565b50506001600160a01b03959095166060840152505060800152939250505056fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220f04bedad1e0ab04c471624cb6afd5055df8c711f342b7f397eaea538555f2dbe64736f6c634300081b0033

Deployed Bytecode

0x6080604052600436106101de575f3560e01c806370a08231116100fd578063a60e799b11610092578063da7e2c7f11610062578063da7e2c7f14610556578063dd62ed3e14610575578063f25f4b56146105b9578063f2fde38b146105d8575f5ffd5b8063a60e799b146104ee578063a9059cbb14610503578063c453d6e914610522578063cc96447114610537575f5ffd5b80638c0caff4116100cd5780638c0caff4146104805780638da5cb5b1461049f57806395d89b41146104bb578063a457c2d7146104cf575f5ffd5b806370a0823114610405578063715018a61461043957806384e2b88d1461044d5780638a8c523c1461046c575f5ffd5b806339509351116101735780634ada218b116101435780634ada218b1461038457806351dd3b9d146103a45780635342acb4146103b957806353cae9cf146103f0575f5ffd5b8063395093511461031257806343d4f92b1461033157806349bd5a5e146103505780634ac9e61a1461036f575f5ffd5b80631694505e116101ae5780631694505e1461028357806318160ddd146102ba57806323b872dd146102d8578063313ce567146102f7575f5ffd5b806302a8b041146101e957806306fdde031461020a578063095ea7b314610234578063148d216114610263575f5ffd5b366101e557005b5f5ffd5b3480156101f4575f5ffd5b5061020861020336600461126e565b6105f7565b005b348015610215575f5ffd5b5061021e610681565b60405161022b9190611289565b60405180910390f35b34801561023f575f5ffd5b5061025361024e3660046112d2565b610711565b604051901515815260200161022b565b34801561026e575f5ffd5b50600e5461025390600160a81b900460ff1681565b34801561028e575f5ffd5b50600d546102a2906001600160a01b031681565b6040516001600160a01b03909116815260200161022b565b3480156102c5575f5ffd5b506004545b60405190815260200161022b565b3480156102e3575f5ffd5b506102536102f23660046112fc565b610727565b348015610302575f5ffd5b506040516012815260200161022b565b34801561031d575f5ffd5b5061025361032c3660046112d2565b61078e565b34801561033c575f5ffd5b5061020861034b36600461133a565b6107c3565b34801561035b575f5ffd5b50600e546102a2906001600160a01b031681565b34801561037a575f5ffd5b506102ca600b5481565b34801561038f575f5ffd5b50600e5461025390600160b01b900460ff1681565b3480156103af575f5ffd5b506102ca600a5481565b3480156103c4575f5ffd5b506102536103d336600461133a565b6001600160a01b03165f9081526007602052604090205460ff1690565b3480156103fb575f5ffd5b506102ca600f5481565b348015610410575f5ffd5b506102ca61041f36600461133a565b6001600160a01b03165f9081526002602052604090205490565b348015610444575f5ffd5b5061020861080e565b348015610458575f5ffd5b50610208610467366004611355565b61087f565b348015610477575f5ffd5b506102086108c4565b34801561048b575f5ffd5b5061020861049a36600461136c565b610902565b3480156104aa575f5ffd5b505f546001600160a01b03166102a2565b3480156104c6575f5ffd5b5061021e61093f565b3480156104da575f5ffd5b506102536104e93660046112d2565b61094e565b3480156104f9575f5ffd5b506102ca60095481565b34801561050e575f5ffd5b5061025361051d3660046112d2565b61099b565b34801561052d575f5ffd5b506102ca600c5481565b348015610542575f5ffd5b506102536105513660046112d2565b6109a7565b348015610561575f5ffd5b5061020861057036600461139b565b610a46565b348015610580575f5ffd5b506102ca61058f3660046113d2565b6001600160a01b039182165f90815260036020908152604080832093909416825291909152205490565b3480156105c4575f5ffd5b506008546102a2906001600160a01b031681565b3480156105e3575f5ffd5b506102086105f236600461133a565b610a99565b5f546001600160a01b031633146106295760405162461bcd60e51b8152600401610620906113fe565b60405180910390fd5b600e8054821515600160a81b0260ff60a81b199091161790556040517f95104a55e36dd507aac6f3a5211027febb09c940366b18700bc6e6cedf67426b9061067690831515815260200190565b60405180910390a150565b60606005805461069090611433565b80601f01602080910402602001604051908101604052809291908181526020018280546106bc90611433565b80156107075780601f106106de57610100808354040283529160200191610707565b820191905f5260205f20905b8154815290600101906020018083116106ea57829003601f168201915b5050505050905090565b5f61071d338484610b80565b5060015b92915050565b5f610733848484610ca4565b610784843361077f85604051806060016040528060288152602001611735602891396001600160a01b038a165f9081526003602090815260408083203384529091529020549190610f2e565b610b80565b5060019392505050565b335f8181526003602090815260408083206001600160a01b0387168452909152812054909161071d91859061077f9086610f59565b5f546001600160a01b031633146107ec5760405162461bcd60e51b8152600401610620906113fe565b600880546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b031633146108375760405162461bcd60e51b8152600401610620906113fe565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b031633146108a85760405162461bcd60e51b8152600401610620906113fe565b6108b46012600a611562565b6108be9082611570565b600f5550565b5f546001600160a01b031633146108ed5760405162461bcd60e51b8152600401610620906113fe565b600e805460ff60b01b1916600160b01b179055565b5f546001600160a01b0316331461092b5760405162461bcd60e51b8152600401610620906113fe565b600993909355600a91909155600b55600c55565b60606006805461069090611433565b5f61071d338461077f8560405180606001604052806025815260200161175d60259139335f9081526003602090815260408083206001600160a01b038d1684529091529020549190610f2e565b5f61071d338484610ca4565b5f80546001600160a01b031633146109d15760405162461bcd60e51b8152600401610620906113fe565b60405163a9059cbb60e01b8152336004820152602481018390526001600160a01b0384169063a9059cbb906044016020604051808303815f875af1158015610a1b573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a3f9190611587565b9392505050565b5f546001600160a01b03163314610a6f5760405162461bcd60e51b8152600401610620906113fe565b6001600160a01b03919091165f908152600760205260409020805460ff1916911515919091179055565b5f546001600160a01b03163314610ac25760405162461bcd60e51b8152600401610620906113fe565b6001600160a01b038116610b275760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610620565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038316610be25760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610620565b6001600160a01b038216610c435760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610620565b6001600160a01b038381165f8181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b038316610cca5760405162461bcd60e51b8152600401610620906115a2565b6001600160a01b038216610cf05760405162461bcd60e51b8152600401610620906115e7565b5f8111610d585760405162461bcd60e51b815260206004820152603060248201527f45524332303a207472616e7366657220616d6f756e74206d757374206265206760448201526f726561746572207468616e207a65726f60801b6064820152608401610620565b305f90815260026020526040902054600f5481108015908190610d855750600e54600160a01b900460ff16155b8015610d9f5750600e546001600160a01b03868116911614155b8015610db85750600e546001600160a01b038581169116145b8015610dcd5750600e54600160a81b900460ff165b15610de057600f549150610de082610f64565b6001600160a01b0385165f9081526007602052604090205460019060ff1680610e2057506001600160a01b0385165f9081526007602052604090205460ff165b15610e3757610e30868686610fec565b505f610f26565b600e546001600160a01b0390811690871603610ecd575f610e6e6064610e68600954886110f590919063ffffffff16565b90611100565b90505f610e8b6064610e68600a54896110f590919063ffffffff16565b9050610ea1610e9a8383610f59565b879061110b565b9550610eb08861dead83610fec565b610ebb883084610fec565b610ec6888888610fec565b5050610f26565b600e546001600160a01b0390811690861603610f1b575f610efe6064610e68600b54886110f590919063ffffffff16565b90505f610e8b6064610e68600c54896110f590919063ffffffff16565b610f26868686610fec565b505050505050565b5f8184841115610f515760405162461bcd60e51b81526004016106209190611289565b505050900390565b5f610a3f828461162a565b600e805460ff60a01b1916600160a01b1790558015610fdc575f610f8782611116565b60085460405147916001600160a01b03169082905f81818185875af1925050503d805f8114610fd1576040519150601f19603f3d011682016040523d82523d5f602084013e610fd6565b606091505b50505050505b50600e805460ff60a01b19169055565b6001600160a01b0383166110125760405162461bcd60e51b8152600401610620906115a2565b6001600160a01b0382166110385760405162461bcd60e51b8152600401610620906115e7565b6110748160405180606001604052806026815260200161170f602691396001600160a01b0386165f908152600260205260409020549190610f2e565b6001600160a01b038085165f9081526002602052604080822093909355908416815220546110a29082610f59565b6001600160a01b038084165f8181526002602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610c979085815260200190565b5f610a3f8284611570565b5f610a3f828461163d565b5f610a3f828461165c565b6040805160028082526060820183525f9260208301908036833701905050905030815f815181106111495761114961166f565b6001600160a01b03928316602091820292909201810191909152600d54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156111a0573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111c49190611683565b816001815181106111d7576111d761166f565b6001600160a01b039283166020918202929092010152600d546111fd9130911684610b80565b600d5460405163791ac94760e01b81526001600160a01b039091169063791ac947906112359085905f9086903090429060040161169e565b5f604051808303815f87803b15801561124c575f5ffd5b505af1158015610f26573d5f5f3e3d5ffd5b801515811461126b575f5ffd5b50565b5f6020828403121561127e575f5ffd5b8135610a3f8161125e565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b6001600160a01b038116811461126b575f5ffd5b5f5f604083850312156112e3575f5ffd5b82356112ee816112be565b946020939093013593505050565b5f5f5f6060848603121561130e575f5ffd5b8335611319816112be565b92506020840135611329816112be565b929592945050506040919091013590565b5f6020828403121561134a575f5ffd5b8135610a3f816112be565b5f60208284031215611365575f5ffd5b5035919050565b5f5f5f5f6080858703121561137f575f5ffd5b5050823594602084013594506040840135936060013592509050565b5f5f604083850312156113ac575f5ffd5b82356113b7816112be565b915060208301356113c78161125e565b809150509250929050565b5f5f604083850312156113e3575f5ffd5b82356113ee816112be565b915060208301356113c7816112be565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600181811c9082168061144757607f821691505b60208210810361146557634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52601160045260245ffd5b6001815b60018411156114ba5780850481111561149e5761149e61146b565b60018416156114ac57908102905b60019390931c928002611483565b935093915050565b5f826114d057506001610721565b816114dc57505f610721565b81600181146114f257600281146114fc57611518565b6001915050610721565b60ff84111561150d5761150d61146b565b50506001821b610721565b5060208310610133831016604e8410600b841016171561153b575081810a610721565b6115475f19848461147f565b805f190482111561155a5761155a61146b565b029392505050565b5f610a3f60ff8416836114c2565b80820281158282048414176107215761072161146b565b5f60208284031215611597575f5ffd5b8151610a3f8161125e565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b808201808211156107215761072161146b565b5f8261165757634e487b7160e01b5f52601260045260245ffd5b500490565b818103818111156107215761072161146b565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215611693575f5ffd5b8151610a3f816112be565b5f60a0820187835286602084015260a0604084015280865180835260c0850191506020880192505f5b818110156116ee5783516001600160a01b03168352602093840193909201916001016116c7565b50506001600160a01b03959095166060840152505060800152939250505056fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220f04bedad1e0ab04c471624cb6afd5055df8c711f342b7f397eaea538555f2dbe64736f6c634300081b0033

Deployed Bytecode Sourcemap

8546:5751:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11197:176;;;;;;;;;;-1:-1:-1;11197:176:0;;;;;:::i;:::-;;:::i;:::-;;3639:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4619:194;;;;;;;;;;-1:-1:-1;4619:194:0;;;;;:::i;:::-;;:::i;:::-;;;1479:14:1;;1472:22;1454:41;;1442:2;1427:18;4619:194:0;1314:187:1;9036:41:0;;;;;;;;;;-1:-1:-1;9036:41:0;;;;-1:-1:-1;;;9036:41:0;;;;;;8924;;;;;;;;;;-1:-1:-1;8924:41:0;;;;-1:-1:-1;;;;;8924:41:0;;;;;;-1:-1:-1;;;;;1696:32:1;;;1678:51;;1666:2;1651:18;8924:41:0;1506:229:1;3960:108:0;;;;;;;;;;-1:-1:-1;4048:12:0;;3960:108;;;1886:25:1;;;1874:2;1859:18;3960:108:0;1740:177:1;4821:454:0;;;;;;;;;;-1:-1:-1;4821:454:0;;;;;:::i;:::-;;:::i;3859:93::-;;;;;;;;;;-1:-1:-1;3859:93:0;;3942:2;2577:36:1;;2565:2;2550:18;3859:93:0;2435:184:1;5283:293:0;;;;;;;;;;-1:-1:-1;5283:293:0;;;;;:::i;:::-;;:::i;10947:93::-;;;;;;;;;;-1:-1:-1;10947:93:0;;;;;:::i;:::-;;:::i;8972:28::-;;;;;;;;;;-1:-1:-1;8972:28:0;;;;-1:-1:-1;;;;;8972:28:0;;;8852:27;;;;;;;;;;;;;;;;9084:34;;;;;;;;;;-1:-1:-1;9084:34:0;;;;-1:-1:-1;;;9084:34:0;;;;;;8819:26;;;;;;;;;;;;;;;;10328:124;;;;;;;;;;-1:-1:-1;10328:124:0;;;;;:::i;:::-;-1:-1:-1;;;;;10417:27:0;10393:4;10417:27;;;:18;:27;;;;;;;;;10328:124;9125:38;;;;;;;;;;;;;;;;4076:143;;;;;;;;;;-1:-1:-1;4076:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;4193:18:0;4166:7;4193:18;;;:9;:18;;;;;;;4076:143;2520:148;;;;;;;;;;;;;:::i;11048:141::-;;;;;;;;;;-1:-1:-1;11048:141:0;;;;;:::i;:::-;;:::i;10069:84::-;;;;;;;;;;;;;:::i;10460:290::-;;;;;;;;;;-1:-1:-1;10460:290:0;;;;;:::i;:::-;;:::i;2297:87::-;;;;;;;;;;-1:-1:-1;2343:7:0;2370:6;-1:-1:-1;;;;;2370:6:0;2297:87;;3747:104;;;;;;;;;;;;;:::i;5584:393::-;;;;;;;;;;-1:-1:-1;5584:393:0;;;;;:::i;:::-;;:::i;8786:26::-;;;;;;;;;;;;;;;;4227:200;;;;;;;;;;-1:-1:-1;4227:200:0;;;;;:::i;:::-;;:::i;8886:27::-;;;;;;;;;;;;;;;;10758:181;;;;;;;;;;-1:-1:-1;10758:181:0;;;;;:::i;:::-;;:::i;10161:159::-;;;;;;;;;;-1:-1:-1;10161:159:0;;;;;:::i;:::-;;:::i;4435:176::-;;;;;;;;;;-1:-1:-1;4435:176:0;;;;;:::i;:::-;-1:-1:-1;;;;;4576:18:0;;;4549:7;4576:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;4435:176;8672:24;;;;;;;;;;-1:-1:-1;8672:24:0;;;;-1:-1:-1;;;;;8672:24:0;;;2676:281;;;;;;;;;;-1:-1:-1;2676:281:0;;;;;:::i;:::-;;:::i;11197:176::-;2343:7;2370:6;-1:-1:-1;;;;;2370:6:0;1924:10;2432:23;2424:68;;;;-1:-1:-1;;;2424:68:0;;;;;;;:::i;:::-;;;;;;;;;11277:22:::1;:33:::0;;;::::1;;-1:-1:-1::0;;;11277:33:0::1;-1:-1:-1::0;;;;11277:33:0;;::::1;;::::0;;11326:39:::1;::::0;::::1;::::0;::::1;::::0;11302:8;1479:14:1;1472:22;1454:41;;1442:2;1427:18;;1314:187;11326:39:0::1;;;;;;;;11197:176:::0;:::o;3639:100::-;3693:13;3726:5;3719:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3639:100;:::o;4619:194::-;4727:4;4744:39;1924:10;4767:7;4776:6;4744:8;:39::i;:::-;-1:-1:-1;4801:4:0;4619:194;;;;;:::o;4821:454::-;4961:4;4978:36;4988:6;4996:9;5007:6;4978:9;:36::i;:::-;5025:220;5048:6;1924:10;5096:138;5152:6;5096:138;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5096:19:0;;;;;;:11;:19;;;;;;;;1924:10;5096:33;;;;;;;;;;:37;:138::i;:::-;5025:8;:220::i;:::-;-1:-1:-1;5263:4:0;4821:454;;;;;:::o;5283:293::-;1924:10;5396:4;5485:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;5485:34:0;;;;;;;;;;5396:4;;5413:133;;5463:7;;5485:50;;5524:10;5485:38;:50::i;10947:93::-;2343:7;2370:6;-1:-1:-1;;;;;2370:6:0;1924:10;2432:23;2424:68;;;;-1:-1:-1;;;2424:68:0;;;;;;;:::i;:::-;11015:9:::1;:17:::0;;-1:-1:-1;;;;;;11015:17:0::1;-1:-1:-1::0;;;;;11015:17:0;;;::::1;::::0;;;::::1;::::0;;10947:93::o;2520:148::-;2343:7;2370:6;-1:-1:-1;;;;;2370:6:0;1924:10;2432:23;2424:68;;;;-1:-1:-1;;;2424:68:0;;;;;;;:::i;:::-;2627:1:::1;2611:6:::0;;2590:40:::1;::::0;-1:-1:-1;;;;;2611:6:0;;::::1;::::0;2590:40:::1;::::0;2627:1;;2590:40:::1;2658:1;2641:19:::0;;-1:-1:-1;;;;;;2641:19:0::1;::::0;;2520:148::o;11048:141::-;2343:7;2370:6;-1:-1:-1;;;;;2370:6:0;1924:10;2432:23;2424:68;;;;-1:-1:-1;;;2424:68:0;;;;;;;:::i;:::-;11165:16:::1;3942:2:::0;11165::::1;:16;:::i;:::-;11156:25;::::0;:6;:25:::1;:::i;:::-;11130:23;:51:::0;-1:-1:-1;11048:141:0:o;10069:84::-;2343:7;2370:6;-1:-1:-1;;;;;2370:6:0;1924:10;2432:23;2424:68;;;;-1:-1:-1;;;2424:68:0;;;;;;;:::i;:::-;10124:14:::1;:21:::0;;-1:-1:-1;;;;10124:21:0::1;-1:-1:-1::0;;;10124:21:0::1;::::0;;10069:84::o;10460:290::-;2343:7;2370:6;-1:-1:-1;;;;;2370:6:0;1924:10;2432:23;2424:68;;;;-1:-1:-1;;;2424:68:0;;;;;;;:::i;:::-;10633:7:::1;:18:::0;;;;10662:7:::1;:18:::0;;;;10691:8:::1;:20:::0;10722:8:::1;:20:::0;10460:290::o;3747:104::-;3803:13;3836:7;3829:14;;;;;:::i;5584:393::-;5702:4;5719:228;1924:10;5769:7;5791:145;5848:15;5791:145;;;;;;;;;;;;;;;;;1924:10;5791:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;5791:34:0;;;;;;;;;;;;:38;:145::i;4227:200::-;4338:4;4355:42;1924:10;4379:9;4390:6;4355:9;:42::i;10758:181::-;10851:12;2370:6;;-1:-1:-1;;;;;2370:6:0;1924:10;2432:23;2424:68;;;;-1:-1:-1;;;2424:68:0;;;;;;;:::i;:::-;10882:49:::1;::::0;-1:-1:-1;;;10882:49:0;;10912:10:::1;10882:49;::::0;::::1;7344:51:1::0;7411:18;;;7404:34;;;-1:-1:-1;;;;;10882:29:0;::::1;::::0;::::1;::::0;7317:18:1;;10882:49:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10875:56:::0;10758:181;-1:-1:-1;;;10758:181:0:o;10161:159::-;2343:7;2370:6;-1:-1:-1;;;;;2370:6:0;1924:10;2432:23;2424:68;;;;-1:-1:-1;;;2424:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;10277:27:0;;;::::1;;::::0;;;:18:::1;:27;::::0;;;;:35;;-1:-1:-1;;10277:35:0::1;::::0;::::1;;::::0;;;::::1;::::0;;10161:159::o;2676:281::-;2343:7;2370:6;-1:-1:-1;;;;;2370:6:0;1924:10;2432:23;2424:68;;;;-1:-1:-1;;;2424:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;2779:22:0;::::1;2757:110;;;::::0;-1:-1:-1;;;2757:110:0;;7901:2:1;2757:110:0::1;::::0;::::1;7883:21:1::0;7940:2;7920:18;;;7913:30;7979:34;7959:18;;;7952:62;-1:-1:-1;;;8030:18:1;;;8023:36;8076:19;;2757:110:0::1;7699:402:1::0;2757:110:0::1;2904:6;::::0;;2883:38:::1;::::0;-1:-1:-1;;;;;2883:38:0;;::::1;::::0;2904:6;::::1;::::0;2883:38:::1;::::0;::::1;2932:6;:17:::0;;-1:-1:-1;;;;;;2932:17:0::1;-1:-1:-1::0;;;;;2932:17:0;;;::::1;::::0;;;::::1;::::0;;2676:281::o;7452:380::-;-1:-1:-1;;;;;7588:19:0;;7580:68;;;;-1:-1:-1;;;7580:68:0;;8308:2:1;7580:68:0;;;8290:21:1;8347:2;8327:18;;;8320:30;8386:34;8366:18;;;8359:62;-1:-1:-1;;;8437:18:1;;;8430:34;8481:19;;7580:68:0;8106:400:1;7580:68:0;-1:-1:-1;;;;;7667:21:0;;7659:68;;;;-1:-1:-1;;;7659:68:0;;8713:2:1;7659:68:0;;;8695:21:1;8752:2;8732:18;;;8725:30;8791:34;8771:18;;;8764:62;-1:-1:-1;;;8842:18:1;;;8835:32;8884:19;;7659:68:0;8511:398:1;7659:68:0;-1:-1:-1;;;;;7740:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;7792:32;;1886:25:1;;;7792:32:0;;1859:18:1;7792:32:0;;;;;;;;7452:380;;;:::o;11418:2006::-;-1:-1:-1;;;;;11550:18:0;;11542:68;;;;-1:-1:-1;;;11542:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;11629:16:0;;11621:64;;;;-1:-1:-1;;;11621:64:0;;;;;;;:::i;:::-;11713:1;11704:6;:10;11696:71;;;;-1:-1:-1;;;11696:71:0;;9926:2:1;11696:71:0;;;9908:21:1;9965:2;9945:18;;;9938:30;10004:34;9984:18;;;9977:62;-1:-1:-1;;;10055:18:1;;;10048:46;10111:19;;11696:71:0;9724:412:1;11696:71:0;11829:4;11780:28;4193:18;;;:9;:18;;;;;;11910:23;;11873:60;;;;;;;11962:54;;-1:-1:-1;11999:17:0;;-1:-1:-1;;;11999:17:0;;;;11998:18;11962:54;:92;;;;-1:-1:-1;12041:13:0;;-1:-1:-1;;;;;12033:21:0;;;12041:13;;12033:21;;11962:92;:128;;;;-1:-1:-1;12077:13:0;;-1:-1:-1;;;;;12071:19:0;;;12077:13;;12071:19;11962:128;:167;;;;-1:-1:-1;12107:22:0;;-1:-1:-1;;;12107:22:0;;;;11962:167;11944:315;;;12179:23;;12156:46;;12217:30;12226:20;12217:8;:30::i;:::-;-1:-1:-1;;;;;12305:24:0;;12271:12;12305:24;;;:18;:24;;;;;;12286:4;;12305:24;;;:50;;-1:-1:-1;;;;;;12333:22:0;;;;;;:18;:22;;;;;;;;12305:50;12301:1116;;;12372:33;12388:4;12394:2;12398:6;12372:15;:33::i;:::-;-1:-1:-1;12430:5:0;12301:1116;;;12480:13;;-1:-1:-1;;;;;12480:13:0;;;12472:21;;;;12468:938;;12514:18;12535:28;12559:3;12535:19;12546:7;;12535:6;:10;;:19;;;;:::i;:::-;:23;;:28::i;:::-;12514:49;;12582:18;12603:28;12627:3;12603:19;12614:7;;12603:6;:10;;:19;;;;:::i;:28::-;12582:49;-1:-1:-1;12659:38:0;12670:26;:10;12582:49;12670:14;:26::i;:::-;12659:6;;:10;:38::i;:::-;12650:47;;12716:46;12732:4;8735:42;12751:10;12716:15;:46::i;:::-;12781:48;12797:4;12811;12818:10;12781:15;:48::i;:::-;12848:33;12864:4;12870:2;12874:6;12848:15;:33::i;:::-;12495:402;;12468:938;;;12913:13;;-1:-1:-1;;;;;12913:13:0;;;12907:19;;;;12903:503;;12947:18;12968:29;12993:3;12968:20;12979:8;;12968:6;:10;;:20;;;;:::i;:29::-;12947:50;;13016:18;13037:29;13062:3;13037:20;13048:8;;13037:6;:10;;:20;;;;:::i;12903:503::-;13357:33;13373:4;13379:2;13383:6;13357:15;:33::i;:::-;11531:1893;;;11418:2006;;;:::o;1317:240::-;1437:7;1498:12;1490:6;;;;1482:29;;;;-1:-1:-1;;;1482:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;1533:5:0;;;1317:240::o;893:98::-;951:7;978:5;982:1;978;:5;:::i;13432:355::-;9264:17;:24;;-1:-1:-1;;;;9264:24:0;-1:-1:-1;;;9264:24:0;;;13506:59;;13547:7:::1;13506:59;13575:12;13598:33;13615:15;13598:16;:33::i;:::-;13717:9;::::0;13709:70:::1;::::0;13663:21:::1;::::0;-1:-1:-1;;;;;13717:9:0::1;::::0;13663:21;;13709:70:::1;::::0;;;13663:21;13717:9;13709:70:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;9299:1:0::1;-1:-1:-1::0;9311:17:0;:25;;-1:-1:-1;;;;9311:25:0;;;13432:355::o;5985:610::-;-1:-1:-1;;;;;6125:20:0;;6117:70;;;;-1:-1:-1;;;6117:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;6206:23:0;;6198:71;;;;-1:-1:-1;;;6198:71:0;;;;;;;:::i;:::-;6362:108;6398:6;6362:108;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6362:17:0;;;;;;:9;:17;;;;;;;:108;:21;:108::i;:::-;-1:-1:-1;;;;;6342:17:0;;;;;;;:9;:17;;;;;;:128;;;;6504:20;;;;;;;:32;;6529:6;6504:24;:32::i;:::-;-1:-1:-1;;;;;6481:20:0;;;;;;;:9;:20;;;;;;;:55;;;;6552:35;;;;;;;;;;6580:6;1886:25:1;;1874:2;1859:18;;1740:177;1105:98:0;1163:7;1190:5;1194:1;1190;:5;:::i;1211:98::-;1269:7;1296:5;1300:1;1296;:5;:::i;999:98::-;1057:7;1084:5;1088:1;1084;:5;:::i;13795:499::-;13885:16;;;13899:1;13885:16;;;;;;;;13861:21;;13885:16;;;;;;;;;;-1:-1:-1;13885:16:0;13861:40;;13930:4;13912;13917:1;13912:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;13912:23:0;;;:7;;;;;;;;;;:23;;;;13956:15;;:22;;;-1:-1:-1;;;13956:22:0;;;;:15;;;;;:20;;:22;;;;;13912:7;;13956:22;;;;;:15;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13946:4;13951:1;13946:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;13946:32:0;;;:7;;;;;;;;;:32;14021:15;;13989:62;;14006:4;;14021:15;14039:11;13989:8;:62::i;:::-;14062:15;;:224;;-1:-1:-1;;;14062:224:0;;-1:-1:-1;;;;;14062:15:0;;;;:66;;:224;;14143:11;;14062:15;;14213:4;;14240;;14260:15;;14062:224;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14:118:1;100:5;93:13;86:21;79:5;76:32;66:60;;122:1;119;112:12;66:60;14:118;:::o;137:241::-;193:6;246:2;234:9;225:7;221:23;217:32;214:52;;;262:1;259;252:12;214:52;301:9;288:23;320:28;342:5;320:28;:::i;383:418::-;532:2;521:9;514:21;495:4;564:6;558:13;607:6;602:2;591:9;587:18;580:34;666:6;661:2;653:6;649:15;644:2;633:9;629:18;623:50;722:1;717:2;708:6;697:9;693:22;689:31;682:42;792:2;785;781:7;776:2;768:6;764:15;760:29;749:9;745:45;741:54;733:62;;;383:418;;;;:::o;806:131::-;-1:-1:-1;;;;;881:31:1;;871:42;;861:70;;927:1;924;917:12;942:367;1010:6;1018;1071:2;1059:9;1050:7;1046:23;1042:32;1039:52;;;1087:1;1084;1077:12;1039:52;1126:9;1113:23;1145:31;1170:5;1145:31;:::i;:::-;1195:5;1273:2;1258:18;;;;1245:32;;-1:-1:-1;;;942:367:1:o;1922:508::-;1999:6;2007;2015;2068:2;2056:9;2047:7;2043:23;2039:32;2036:52;;;2084:1;2081;2074:12;2036:52;2123:9;2110:23;2142:31;2167:5;2142:31;:::i;:::-;2192:5;-1:-1:-1;2249:2:1;2234:18;;2221:32;2262:33;2221:32;2262:33;:::i;:::-;1922:508;;2314:7;;-1:-1:-1;;;2394:2:1;2379:18;;;;2366:32;;1922:508::o;2624:247::-;2683:6;2736:2;2724:9;2715:7;2711:23;2707:32;2704:52;;;2752:1;2749;2742:12;2704:52;2791:9;2778:23;2810:31;2835:5;2810:31;:::i;3084:226::-;3143:6;3196:2;3184:9;3175:7;3171:23;3167:32;3164:52;;;3212:1;3209;3202:12;3164:52;-1:-1:-1;3257:23:1;;3084:226;-1:-1:-1;3084:226:1:o;3315:587::-;3401:6;3409;3417;3425;3478:3;3466:9;3457:7;3453:23;3449:33;3446:53;;;3495:1;3492;3485:12;3446:53;-1:-1:-1;;3540:23:1;;;3660:2;3645:18;;3632:32;;-1:-1:-1;3763:2:1;3748:18;;3735:32;;3866:2;3851:18;3838:32;;-1:-1:-1;3315:587:1;-1:-1:-1;3315:587:1:o;3907:382::-;3972:6;3980;4033:2;4021:9;4012:7;4008:23;4004:32;4001:52;;;4049:1;4046;4039:12;4001:52;4088:9;4075:23;4107:31;4132:5;4107:31;:::i;:::-;4157:5;-1:-1:-1;4214:2:1;4199:18;;4186:32;4227:30;4186:32;4227:30;:::i;:::-;4276:7;4266:17;;;3907:382;;;;;:::o;4294:388::-;4362:6;4370;4423:2;4411:9;4402:7;4398:23;4394:32;4391:52;;;4439:1;4436;4429:12;4391:52;4478:9;4465:23;4497:31;4522:5;4497:31;:::i;:::-;4547:5;-1:-1:-1;4604:2:1;4589:18;;4576:32;4617:33;4576:32;4617:33;:::i;4687:356::-;4889:2;4871:21;;;4908:18;;;4901:30;4967:34;4962:2;4947:18;;4940:62;5034:2;5019:18;;4687:356::o;5048:380::-;5127:1;5123:12;;;;5170;;;5191:61;;5245:4;5237:6;5233:17;5223:27;;5191:61;5298:2;5290:6;5287:14;5267:18;5264:38;5261:161;;5344:10;5339:3;5335:20;5332:1;5325:31;5379:4;5376:1;5369:15;5407:4;5404:1;5397:15;5261:161;;5048:380;;;:::o;5433:127::-;5494:10;5489:3;5485:20;5482:1;5475:31;5525:4;5522:1;5515:15;5549:4;5546:1;5539:15;5565:375;5653:1;5671:5;5685:249;5706:1;5696:8;5693:15;5685:249;;;5756:4;5751:3;5747:14;5741:4;5738:24;5735:50;;;5765:18;;:::i;:::-;5815:1;5805:8;5801:16;5798:49;;;5829:16;;;;5798:49;5912:1;5908:16;;;;;5868:15;;5685:249;;;5565:375;;;;;;:::o;5945:902::-;5994:5;6024:8;6014:80;;-1:-1:-1;6065:1:1;6079:5;;6014:80;6113:4;6103:76;;-1:-1:-1;6150:1:1;6164:5;;6103:76;6195:4;6213:1;6208:59;;;;6281:1;6276:174;;;;6188:262;;6208:59;6238:1;6229:10;;6252:5;;;6276:174;6313:3;6303:8;6300:17;6297:43;;;6320:18;;:::i;:::-;-1:-1:-1;;6376:1:1;6362:16;;6435:5;;6188:262;;6534:2;6524:8;6521:16;6515:3;6509:4;6506:13;6502:36;6496:2;6486:8;6483:16;6478:2;6472:4;6469:12;6465:35;6462:77;6459:203;;;-1:-1:-1;6571:19:1;;;6647:5;;6459:203;6694:42;-1:-1:-1;;6719:8:1;6713:4;6694:42;:::i;:::-;6772:6;6768:1;6764:6;6760:19;6751:7;6748:32;6745:58;;;6783:18;;:::i;:::-;6821:20;;5945:902;-1:-1:-1;;;5945:902:1:o;6852:140::-;6910:5;6939:47;6980:4;6970:8;6966:19;6960:4;6939:47;:::i;6997:168::-;7070:9;;;7101;;7118:15;;;7112:22;;7098:37;7088:71;;7139:18;;:::i;7449:245::-;7516:6;7569:2;7557:9;7548:7;7544:23;7540:32;7537:52;;;7585:1;7582;7575:12;7537:52;7617:9;7611:16;7636:28;7658:5;7636:28;:::i;8914:401::-;9116:2;9098:21;;;9155:2;9135:18;;;9128:30;9194:34;9189:2;9174:18;;9167:62;-1:-1:-1;;;9260:2:1;9245:18;;9238:35;9305:3;9290:19;;8914:401::o;9320:399::-;9522:2;9504:21;;;9561:2;9541:18;;;9534:30;9600:34;9595:2;9580:18;;9573:62;-1:-1:-1;;;9666:2:1;9651:18;;9644:33;9709:3;9694:19;;9320:399::o;10141:125::-;10206:9;;;10227:10;;;10224:36;;;10240:18;;:::i;10481:217::-;10521:1;10547;10537:132;;10591:10;10586:3;10582:20;10579:1;10572:31;10626:4;10623:1;10616:15;10654:4;10651:1;10644:15;10537:132;-1:-1:-1;10683:9:1;;10481:217::o;10703:128::-;10770:9;;;10791:11;;;10788:37;;;10805:18;;:::i;10968:127::-;11029:10;11024:3;11020:20;11017:1;11010:31;11060:4;11057:1;11050:15;11084:4;11081:1;11074:15;11100:251;11170:6;11223:2;11211:9;11202:7;11198:23;11194:32;11191:52;;;11239:1;11236;11229:12;11191:52;11271:9;11265:16;11290:31;11315:5;11290:31;:::i;11356:959::-;11618:4;11666:3;11655:9;11651:19;11697:6;11686:9;11679:25;11740:6;11735:2;11724:9;11720:18;11713:34;11783:3;11778:2;11767:9;11763:18;11756:31;11807:6;11842;11836:13;11873:6;11865;11858:22;11911:3;11900:9;11896:19;11889:26;;11950:2;11942:6;11938:15;11924:29;;11971:1;11981:195;11995:6;11992:1;11989:13;11981:195;;;12060:13;;-1:-1:-1;;;;;12056:39:1;12044:52;;12125:2;12151:15;;;;12116:12;;;;12092:1;12010:9;11981:195;;;-1:-1:-1;;;;;;;12232:32:1;;;;12227:2;12212:18;;12205:60;-1:-1:-1;;12296:3:1;12281:19;12274:35;12193:3;11356:959;-1:-1:-1;;;11356:959:1:o

Swarm Source

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