ETH Price: $3,385.39 (-1.79%)
Gas: 1 Gwei

Token

LOYAL by PPJC (LOYAL)
 

Overview

Max Total Supply

68,651,641,443.743689654635477451 LOYAL

Holders

729

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
246,599,288.772695788745175623 LOYAL

Value
$0.00
0x5fed97bbe88f5ba24f61ff0308c46c4a56ec900b
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:
LOYAL

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-05-29
*/

/**
 *Submitted for verification at Etherscan.io on 2023-05-11
*/

/*
       
print 
*/

// SPDX-License-Identifier: MIT
pragma solidity 0.8.17;

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

    function _msgData() internal view virtual returns (bytes memory) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

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

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }

    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}

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

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, IERC20, IERC20Metadata{
    using SafeMath for uint256;
    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;
    uint256 internal _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,
                "BEP20: 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,
                "BEP20: decreased allowance below zero"));
        return true;
    }

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

        _beforeTokenTransfer(sender, recipient, amount);

        _balances[sender] = _balances[sender].sub(amount,"BEP20: 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), "BEP20: 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 _approve(address owner, address spender, uint256 amount) internal virtual {
        require(owner != address(0), "BEP20: approve from the zero address");
        require(spender != address(0), "BEP20: approve to the zero address");

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual {}
}

abstract contract Ownable is Context {

    address private _owner;

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

interface IERC721 {


    function category() external view returns(uint256);

    function _owner() external view returns(address payable);

    function owner() external view returns(address);

    function nftOwner(uint256 _id) external view returns (address);

    function ownerOf(uint256 _id) external view returns (address);

    function balanceOf(address account) external view returns (uint256);

    function tokenOfOwnerByIndex(address owner, uint256 index) external view returns (uint256);

    function totalSupply() external view returns (uint256);

    function maxSupply() external view returns (uint256);

    function getMintPrice() external view returns(uint256);
    

    function safeBatchTransferFrom(
        address from,
        address to,
        uint256[] calldata ids,
        uint256[] calldata values,
        bytes calldata data
    ) external;

    function safeTransferFrom(
        address from,
        address to,
        uint256 id,
        uint256 value,
        bytes calldata data
    ) external;

    function transferFrom(
        address from,
        address to,
        uint256 tokenId
    ) external;
}

contract LOYAL is ERC20, Ownable { 
    using SafeMath for uint256;

    address public DEAD = 0x000000000000000000000000000000000000dEaD;
    IERC20 private $psyop = IERC20(0xaa07810aE08575921c476Ff088bc949da43e4964);
    IERC721 private $PPJC = IERC721(0xEF22676fb3506b8d139F7552A1b30d172cA21410);

    
    bool public tradingEnabled = false;
    bool public psyopHoldersEnabled = true;

    uint256 public MIN_PSYOPS = 69000000000000000000000000;
    uint256 public MIN_PPJC = 1;

    
    mapping(address => bool) private canTransferBeforeTradingIsEnabled;
    mapping(address => bool) private isWhiteListed;

    uint256 public launchtimestamp; 

    event SetPreSaleWallet(address wallet);
    event TradingEnabled();
    event Airdrop(address holder, uint256 amount);

    constructor() ERC20("LOYAL by PPJC", "LOYAL") { 
        uint256 totalSupply = (69_000_000_000) * (10**18); // TOTAL SUPPLY IS SET HERE
        _mint(owner(), totalSupply); // only time internal mint function is ever called is to create supply
        canTransferBeforeTradingIsEnabled[owner()] = true;
        canTransferBeforeTradingIsEnabled[address(this)] = true;
    }

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

    receive() external payable {}

    function enableTrading() external onlyOwner {
        require(!tradingEnabled);

        tradingEnabled = true;
        launchtimestamp = block.timestamp;
        emit TradingEnabled();
    }

    function psyopHoldersOnlyDisable(bool status) external onlyOwner {
        require(!tradingEnabled, "LOYAL: Trading has not yet been enabled");          
        psyopHoldersEnabled = status;
    }

    function setCanTransferBefore(address wallet, bool enable) external onlyOwner {
        canTransferBeforeTradingIsEnabled[wallet] = enable;
    }

    function setLimits(uint256 minPsyop, uint256 minPPJC) external onlyOwner {
        MIN_PSYOPS = minPsyop;
        MIN_PPJC = minPPJC;
    }

    function setWhiteLists(address[] memory wallets, bool allowed) external onlyOwner {
        for(uint256 i; i < wallets.length; i++) {
            isWhiteListed[wallets[i]] = allowed;
        }
    }


    function Sweep() external onlyOwner {
        uint256 amountETH = address(this).balance;
        payable(msg.sender).transfer(amountETH);
    }


    function _transfer(address from, address to, uint256 amount) internal override {

        require(from != address(0), "IERC20: transfer from the zero address");
        require(to != address(0), "IERC20: transfer to the zero address");

 

        if(psyopHoldersEnabled) {
            if($psyop.balanceOf(to) >= MIN_PSYOPS || $PPJC.balanceOf(to) >= MIN_PPJC || isWhiteListed[to] == true || canTransferBeforeTradingIsEnabled[from]) {

            } else {
                require(tradingEnabled, "LOYAL: Trading has not yet been enabled");          
            }
        }
     
        if (amount == 0) {
            super._transfer(from, to, 0);
            return;
        } 

        if (to == DEAD) {
            super._transfer(from, to, amount);
            _totalSupply = _totalSupply.sub(amount);
            return;
        }

        super._transfer(from, to, amount);
    }


    function airdropToWallets(
        address[] memory airdropWallets,
        uint256[] memory amount
    ) external onlyOwner {
        require(airdropWallets.length == amount.length, "Arrays must be the same length");
        require(airdropWallets.length <= 200, "Wallets list length must be <= 200");
        for (uint256 i = 0; i < airdropWallets.length; i++) {
            address wallet = airdropWallets[i];
            uint256 airdropAmount = amount[i] * (10**18);
            super._transfer(msg.sender, wallet, airdropAmount);
        }
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"holder","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Airdrop","type":"event"},{"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":false,"internalType":"address","name":"wallet","type":"address"}],"name":"SetPreSaleWallet","type":"event"},{"anonymous":false,"inputs":[],"name":"TradingEnabled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DEAD","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MIN_PPJC","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MIN_PSYOPS","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"Sweep","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"airdropWallets","type":"address[]"},{"internalType":"uint256[]","name":"amount","type":"uint256[]"}],"name":"airdropToWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"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":[{"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":[],"name":"launchtimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"psyopHoldersEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"status","type":"bool"}],"name":"psyopHoldersOnlyDisable","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"},{"internalType":"bool","name":"enable","type":"bool"}],"name":"setCanTransferBefore","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"minPsyop","type":"uint256"},{"internalType":"uint256","name":"minPPJC","type":"uint256"}],"name":"setLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"wallets","type":"address[]"},{"internalType":"bool","name":"allowed","type":"bool"}],"name":"setWhiteLists","outputs":[],"stateMutability":"nonpayable","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"},{"stateMutability":"payable","type":"receive"}]

608060405261dead600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073aa07810ae08575921c476ff088bc949da43e4964600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073ef22676fb3506b8d139f7552a1b30d172ca21410600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600860146101000a81548160ff0219169083151502179055506001600860156101000a81548160ff0219169083151502179055506a3913517ebd3c0c650000006009556001600a553480156200014857600080fd5b506040518060400160405280600d81526020017f4c4f59414c2062792050504a43000000000000000000000000000000000000008152506040518060400160405280600581526020017f4c4f59414c0000000000000000000000000000000000000000000000000000008152508160039081620001c6919062000846565b508060049081620001d8919062000846565b5050506000620001ed6200038460201b60201c565b905080600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35060006bdef376571332906a880000009050620002be620002b16200038c60201b60201c565b82620003b660201b60201c565b6001600b6000620002d46200038c60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505062000aba565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000428576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200041f906200098e565b60405180910390fd5b6200043c600083836200056460201b60201c565b62000458816002546200056960201b620016001790919060201c565b600281905550620004b6816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546200056960201b620016001790919060201c565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620005589190620009c1565b60405180910390a35050565b505050565b60008082846200057a919062000a0d565b905083811015620005c2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620005b99062000a98565b60405180910390fd5b8091505092915050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200064e57607f821691505b60208210810362000664576200066362000606565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620006ce7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826200068f565b620006da86836200068f565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000727620007216200071b84620006f2565b620006fc565b620006f2565b9050919050565b6000819050919050565b620007438362000706565b6200075b62000752826200072e565b8484546200069c565b825550505050565b600090565b6200077262000763565b6200077f81848462000738565b505050565b5b81811015620007a7576200079b60008262000768565b60018101905062000785565b5050565b601f821115620007f657620007c0816200066a565b620007cb846200067f565b81016020851015620007db578190505b620007f3620007ea856200067f565b83018262000784565b50505b505050565b600082821c905092915050565b60006200081b60001984600802620007fb565b1980831691505092915050565b600062000836838362000808565b9150826002028217905092915050565b6200085182620005cc565b67ffffffffffffffff8111156200086d576200086c620005d7565b5b62000879825462000635565b62000886828285620007ab565b600060209050601f831160018114620008be5760008415620008a9578287015190505b620008b5858262000828565b86555062000925565b601f198416620008ce866200066a565b60005b82811015620008f857848901518255600182019150602085019450602081019050620008d1565b8683101562000918578489015162000914601f89168262000808565b8355505b6001600288020188555050505b505050505050565b600082825260208201905092915050565b7f42455032303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000976601f836200092d565b915062000983826200093e565b602082019050919050565b60006020820190508181036000830152620009a98162000967565b9050919050565b620009bb81620006f2565b82525050565b6000602082019050620009d86000830184620009b0565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000a1a82620006f2565b915062000a2783620006f2565b925082820190508082111562000a425762000a41620009de565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600062000a80601b836200092d565b915062000a8d8262000a48565b602082019050919050565b6000602082019050818103600083015262000ab38162000a71565b9050919050565b612f338062000aca6000396000f3fe6080604052600436106101a05760003560e01c8063715018a6116100ec578063a457c2d71161008a578063c4590d3f11610064578063c4590d3f146105b3578063d45beb06146105dc578063dd62ed3e14610605578063f2fde38b14610642576101a7565b8063a457c2d71461050e578063a9059cbb1461054b578063b9241ab814610588576101a7565b80638a8c523c116100c65780638a8c523c146104765780638c3c82b21461048d5780638da5cb5b146104b857806395d89b41146104e3576101a7565b8063715018a61461040b5780637e85a37f146104225780637fdde05c1461044d576101a7565b806323b872dd116101595780633d4b9d14116101335780633d4b9d14146103635780634ada218b1461038c5780637088fb7f146103b757806370a08231146103ce576101a7565b806323b872dd146102be578063313ce567146102fb5780633950935114610326576101a7565b806303fd2a45146101ac57806306fdde03146101d75780630924c95014610202578063095ea7b31461022d57806318160ddd1461026a5780632307b44114610295576101a7565b366101a757005b600080fd5b3480156101b857600080fd5b506101c161066b565b6040516101ce9190611fa0565b60405180910390f35b3480156101e357600080fd5b506101ec610691565b6040516101f9919061204b565b60405180910390f35b34801561020e57600080fd5b50610217610723565b6040516102249190612088565b60405180910390f35b34801561023957600080fd5b50610254600480360381019061024f9190612119565b610736565b6040516102619190612088565b60405180910390f35b34801561027657600080fd5b5061027f610754565b60405161028c9190612168565b60405180910390f35b3480156102a157600080fd5b506102bc60048036038101906102b7919061238e565b61075e565b005b3480156102ca57600080fd5b506102e560048036038101906102e09190612406565b610900565b6040516102f29190612088565b60405180910390f35b34801561030757600080fd5b506103106109d9565b60405161031d9190612475565b60405180910390f35b34801561033257600080fd5b5061034d60048036038101906103489190612119565b6109e2565b60405161035a9190612088565b60405180910390f35b34801561036f57600080fd5b5061038a600480360381019061038591906124bc565b610a95565b005b34801561039857600080fd5b506103a1610bc1565b6040516103ae9190612088565b60405180910390f35b3480156103c357600080fd5b506103cc610bd4565b005b3480156103da57600080fd5b506103f560048036038101906103f09190612518565b610cba565b6040516104029190612168565b60405180910390f35b34801561041757600080fd5b50610420610d02565b005b34801561042e57600080fd5b50610437610e5a565b6040516104449190612168565b60405180910390f35b34801561045957600080fd5b50610474600480360381019061046f9190612545565b610e60565b005b34801561048257600080fd5b5061048b610f52565b005b34801561049957600080fd5b506104a2611053565b6040516104af9190612168565b60405180910390f35b3480156104c457600080fd5b506104cd611059565b6040516104da9190611fa0565b60405180910390f35b3480156104ef57600080fd5b506104f8611083565b604051610505919061204b565b60405180910390f35b34801561051a57600080fd5b5061053560048036038101906105309190612119565b611115565b6040516105429190612088565b60405180910390f35b34801561055757600080fd5b50610572600480360381019061056d9190612119565b6111e2565b60405161057f9190612088565b60405180910390f35b34801561059457600080fd5b5061059d611200565b6040516105aa9190612168565b60405180910390f35b3480156105bf57600080fd5b506105da60048036038101906105d59190612585565b611206565b005b3480156105e857600080fd5b5061060360048036038101906105fe91906125c5565b6112af565b005b34801561061157600080fd5b5061062c600480360381019061062791906125f2565b6113b3565b6040516106399190612168565b60405180910390f35b34801561064e57600080fd5b5061066960048036038101906106649190612518565b61143a565b005b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6060600380546106a090612661565b80601f01602080910402602001604051908101604052809291908181526020018280546106cc90612661565b80156107195780601f106106ee57610100808354040283529160200191610719565b820191906000526020600020905b8154815290600101906020018083116106fc57829003601f168201915b5050505050905090565b600860159054906101000a900460ff1681565b600061074a61074361165e565b8484611666565b6001905092915050565b6000600254905090565b61076661165e565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107ec906126de565b60405180910390fd5b8051825114610839576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108309061274a565b60405180910390fd5b60c88251111561087e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610875906127dc565b60405180910390fd5b60005b82518110156108fb57600083828151811061089f5761089e6127fc565b5b602002602001015190506000670de0b6b3a76400008484815181106108c7576108c66127fc565b5b60200260200101516108d9919061285a565b90506108e633838361182f565b505080806108f39061289c565b915050610881565b505050565b600061090d848484611ac2565b6109ce8461091961165e565b6109c985604051806060016040528060288152602001612e8b60289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061097f61165e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611eac9092919063ffffffff16565b611666565b600190509392505050565b60006012905090565b6000610a8b6109ef61165e565b84610a868560016000610a0061165e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461160090919063ffffffff16565b611666565b6001905092915050565b610a9d61165e565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b2c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b23906126de565b60405180910390fd5b60005b8251811015610bbc5781600c6000858481518110610b5057610b4f6127fc565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610bb49061289c565b915050610b2f565b505050565b600860149054906101000a900460ff1681565b610bdc61165e565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c6b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c62906126de565b60405180910390fd5b60004790503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610cb6573d6000803e3d6000fd5b5050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610d0a61165e565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d90906126de565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600a5481565b610e6861165e565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ef7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eee906126de565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b610f5a61165e565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fe9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe0906126de565b60405180910390fd5b600860149054906101000a900460ff161561100357600080fd5b6001600860146101000a81548160ff02191690831515021790555042600d819055507f799663458a5ef2936f7fa0c99b3336c69c25890f82974f04e811e5bb359186c760405160405180910390a1565b600d5481565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606004805461109290612661565b80601f01602080910402602001604051908101604052809291908181526020018280546110be90612661565b801561110b5780601f106110e05761010080835404028352916020019161110b565b820191906000526020600020905b8154815290600101906020018083116110ee57829003601f168201915b5050505050905090565b60006111d861112261165e565b846111d385604051806060016040528060258152602001612ed9602591396001600061114c61165e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611eac9092919063ffffffff16565b611666565b6001905092915050565b60006111f66111ef61165e565b8484611ac2565b6001905092915050565b60095481565b61120e61165e565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461129d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611294906126de565b60405180910390fd5b8160098190555080600a819055505050565b6112b761165e565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611346576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161133d906126de565b60405180910390fd5b600860149054906101000a900460ff1615611396576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161138d90612956565b60405180910390fd5b80600860156101000a81548160ff02191690831515021790555050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61144261165e565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114c8906126de565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611540576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611537906129e8565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600080828461160f9190612a08565b905083811015611654576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164b90612a88565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036116d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116cc90612b1a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611744576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161173b90612bac565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516118229190612168565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361189e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161189590612c3e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361190d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161190490612cd0565b60405180910390fd5b611918838383611f10565b61198381604051806060016040528060268152602001612eb3602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611eac9092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611a16816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461160090919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611ab59190612168565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611b31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b2890612d62565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611ba0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9790612df4565b60405180910390fd5b600860159054906101000a900460ff1615611e0257600954600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231846040518263ffffffff1660e01b8152600401611c139190611fa0565b602060405180830381865afa158015611c30573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c549190612e29565b101580611cfe5750600a54600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231846040518263ffffffff1660e01b8152600401611cba9190611fa0565b602060405180830381865afa158015611cd7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cfb9190612e29565b10155b80611d59575060011515600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515145b80611dad5750600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611e0157600860149054906101000a900460ff16611e00576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611df790612956565b60405180910390fd5b5b5b60008103611e1b57611e168383600061182f565b611ea7565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611e9b57611e7b83838361182f565b611e9081600254611f1590919063ffffffff16565b600281905550611ea7565b611ea683838361182f565b5b505050565b6000838311158290611ef4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eeb919061204b565b60405180910390fd5b5060008385611f039190612e56565b9050809150509392505050565b505050565b6000611f5783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611eac565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611f8a82611f5f565b9050919050565b611f9a81611f7f565b82525050565b6000602082019050611fb56000830184611f91565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611ff5578082015181840152602081019050611fda565b60008484015250505050565b6000601f19601f8301169050919050565b600061201d82611fbb565b6120278185611fc6565b9350612037818560208601611fd7565b61204081612001565b840191505092915050565b600060208201905081810360008301526120658184612012565b905092915050565b60008115159050919050565b6120828161206d565b82525050565b600060208201905061209d6000830184612079565b92915050565b6000604051905090565b600080fd5b600080fd5b6120c081611f7f565b81146120cb57600080fd5b50565b6000813590506120dd816120b7565b92915050565b6000819050919050565b6120f6816120e3565b811461210157600080fd5b50565b600081359050612113816120ed565b92915050565b600080604083850312156121305761212f6120ad565b5b600061213e858286016120ce565b925050602061214f85828601612104565b9150509250929050565b612162816120e3565b82525050565b600060208201905061217d6000830184612159565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6121c082612001565b810181811067ffffffffffffffff821117156121df576121de612188565b5b80604052505050565b60006121f26120a3565b90506121fe82826121b7565b919050565b600067ffffffffffffffff82111561221e5761221d612188565b5b602082029050602081019050919050565b600080fd5b600061224761224284612203565b6121e8565b9050808382526020820190506020840283018581111561226a5761226961222f565b5b835b81811015612293578061227f88826120ce565b84526020840193505060208101905061226c565b5050509392505050565b600082601f8301126122b2576122b1612183565b5b81356122c2848260208601612234565b91505092915050565b600067ffffffffffffffff8211156122e6576122e5612188565b5b602082029050602081019050919050565b600061230a612305846122cb565b6121e8565b9050808382526020820190506020840283018581111561232d5761232c61222f565b5b835b8181101561235657806123428882612104565b84526020840193505060208101905061232f565b5050509392505050565b600082601f83011261237557612374612183565b5b81356123858482602086016122f7565b91505092915050565b600080604083850312156123a5576123a46120ad565b5b600083013567ffffffffffffffff8111156123c3576123c26120b2565b5b6123cf8582860161229d565b925050602083013567ffffffffffffffff8111156123f0576123ef6120b2565b5b6123fc85828601612360565b9150509250929050565b60008060006060848603121561241f5761241e6120ad565b5b600061242d868287016120ce565b935050602061243e868287016120ce565b925050604061244f86828701612104565b9150509250925092565b600060ff82169050919050565b61246f81612459565b82525050565b600060208201905061248a6000830184612466565b92915050565b6124998161206d565b81146124a457600080fd5b50565b6000813590506124b681612490565b92915050565b600080604083850312156124d3576124d26120ad565b5b600083013567ffffffffffffffff8111156124f1576124f06120b2565b5b6124fd8582860161229d565b925050602061250e858286016124a7565b9150509250929050565b60006020828403121561252e5761252d6120ad565b5b600061253c848285016120ce565b91505092915050565b6000806040838503121561255c5761255b6120ad565b5b600061256a858286016120ce565b925050602061257b858286016124a7565b9150509250929050565b6000806040838503121561259c5761259b6120ad565b5b60006125aa85828601612104565b92505060206125bb85828601612104565b9150509250929050565b6000602082840312156125db576125da6120ad565b5b60006125e9848285016124a7565b91505092915050565b60008060408385031215612609576126086120ad565b5b6000612617858286016120ce565b9250506020612628858286016120ce565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061267957607f821691505b60208210810361268c5761268b612632565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006126c8602083611fc6565b91506126d382612692565b602082019050919050565b600060208201905081810360008301526126f7816126bb565b9050919050565b7f417272617973206d757374206265207468652073616d65206c656e6774680000600082015250565b6000612734601e83611fc6565b915061273f826126fe565b602082019050919050565b6000602082019050818103600083015261276381612727565b9050919050565b7f57616c6c657473206c697374206c656e677468206d757374206265203c3d203260008201527f3030000000000000000000000000000000000000000000000000000000000000602082015250565b60006127c6602283611fc6565b91506127d18261276a565b604082019050919050565b600060208201905081810360008301526127f5816127b9565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612865826120e3565b9150612870836120e3565b925082820261287e816120e3565b915082820484148315176128955761289461282b565b5b5092915050565b60006128a7826120e3565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036128d9576128d861282b565b5b600182019050919050565b7f4c4f59414c3a2054726164696e6720686173206e6f7420796574206265656e2060008201527f656e61626c656400000000000000000000000000000000000000000000000000602082015250565b6000612940602783611fc6565b915061294b826128e4565b604082019050919050565b6000602082019050818103600083015261296f81612933565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006129d2602683611fc6565b91506129dd82612976565b604082019050919050565b60006020820190508181036000830152612a01816129c5565b9050919050565b6000612a13826120e3565b9150612a1e836120e3565b9250828201905080821115612a3657612a3561282b565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000612a72601b83611fc6565b9150612a7d82612a3c565b602082019050919050565b60006020820190508181036000830152612aa181612a65565b9050919050565b7f42455032303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612b04602483611fc6565b9150612b0f82612aa8565b604082019050919050565b60006020820190508181036000830152612b3381612af7565b9050919050565b7f42455032303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612b96602283611fc6565b9150612ba182612b3a565b604082019050919050565b60006020820190508181036000830152612bc581612b89565b9050919050565b7f42455032303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612c28602583611fc6565b9150612c3382612bcc565b604082019050919050565b60006020820190508181036000830152612c5781612c1b565b9050919050565b7f42455032303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612cba602383611fc6565b9150612cc582612c5e565b604082019050919050565b60006020820190508181036000830152612ce981612cad565b9050919050565b7f4945524332303a207472616e736665722066726f6d20746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000612d4c602683611fc6565b9150612d5782612cf0565b604082019050919050565b60006020820190508181036000830152612d7b81612d3f565b9050919050565b7f4945524332303a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612dde602483611fc6565b9150612de982612d82565b604082019050919050565b60006020820190508181036000830152612e0d81612dd1565b9050919050565b600081519050612e23816120ed565b92915050565b600060208284031215612e3f57612e3e6120ad565b5b6000612e4d84828501612e14565b91505092915050565b6000612e61826120e3565b9150612e6c836120e3565b9250828203905081811115612e8457612e8361282b565b5b9291505056fe42455032303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636542455032303a207472616e7366657220616d6f756e7420657863656564732062616c616e636542455032303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212205fd7921708c6325422702ed84ce1ffcdb7b138eedb67d2bfb78288429d0a401164736f6c63430008110033

Deployed Bytecode

0x6080604052600436106101a05760003560e01c8063715018a6116100ec578063a457c2d71161008a578063c4590d3f11610064578063c4590d3f146105b3578063d45beb06146105dc578063dd62ed3e14610605578063f2fde38b14610642576101a7565b8063a457c2d71461050e578063a9059cbb1461054b578063b9241ab814610588576101a7565b80638a8c523c116100c65780638a8c523c146104765780638c3c82b21461048d5780638da5cb5b146104b857806395d89b41146104e3576101a7565b8063715018a61461040b5780637e85a37f146104225780637fdde05c1461044d576101a7565b806323b872dd116101595780633d4b9d14116101335780633d4b9d14146103635780634ada218b1461038c5780637088fb7f146103b757806370a08231146103ce576101a7565b806323b872dd146102be578063313ce567146102fb5780633950935114610326576101a7565b806303fd2a45146101ac57806306fdde03146101d75780630924c95014610202578063095ea7b31461022d57806318160ddd1461026a5780632307b44114610295576101a7565b366101a757005b600080fd5b3480156101b857600080fd5b506101c161066b565b6040516101ce9190611fa0565b60405180910390f35b3480156101e357600080fd5b506101ec610691565b6040516101f9919061204b565b60405180910390f35b34801561020e57600080fd5b50610217610723565b6040516102249190612088565b60405180910390f35b34801561023957600080fd5b50610254600480360381019061024f9190612119565b610736565b6040516102619190612088565b60405180910390f35b34801561027657600080fd5b5061027f610754565b60405161028c9190612168565b60405180910390f35b3480156102a157600080fd5b506102bc60048036038101906102b7919061238e565b61075e565b005b3480156102ca57600080fd5b506102e560048036038101906102e09190612406565b610900565b6040516102f29190612088565b60405180910390f35b34801561030757600080fd5b506103106109d9565b60405161031d9190612475565b60405180910390f35b34801561033257600080fd5b5061034d60048036038101906103489190612119565b6109e2565b60405161035a9190612088565b60405180910390f35b34801561036f57600080fd5b5061038a600480360381019061038591906124bc565b610a95565b005b34801561039857600080fd5b506103a1610bc1565b6040516103ae9190612088565b60405180910390f35b3480156103c357600080fd5b506103cc610bd4565b005b3480156103da57600080fd5b506103f560048036038101906103f09190612518565b610cba565b6040516104029190612168565b60405180910390f35b34801561041757600080fd5b50610420610d02565b005b34801561042e57600080fd5b50610437610e5a565b6040516104449190612168565b60405180910390f35b34801561045957600080fd5b50610474600480360381019061046f9190612545565b610e60565b005b34801561048257600080fd5b5061048b610f52565b005b34801561049957600080fd5b506104a2611053565b6040516104af9190612168565b60405180910390f35b3480156104c457600080fd5b506104cd611059565b6040516104da9190611fa0565b60405180910390f35b3480156104ef57600080fd5b506104f8611083565b604051610505919061204b565b60405180910390f35b34801561051a57600080fd5b5061053560048036038101906105309190612119565b611115565b6040516105429190612088565b60405180910390f35b34801561055757600080fd5b50610572600480360381019061056d9190612119565b6111e2565b60405161057f9190612088565b60405180910390f35b34801561059457600080fd5b5061059d611200565b6040516105aa9190612168565b60405180910390f35b3480156105bf57600080fd5b506105da60048036038101906105d59190612585565b611206565b005b3480156105e857600080fd5b5061060360048036038101906105fe91906125c5565b6112af565b005b34801561061157600080fd5b5061062c600480360381019061062791906125f2565b6113b3565b6040516106399190612168565b60405180910390f35b34801561064e57600080fd5b5061066960048036038101906106649190612518565b61143a565b005b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6060600380546106a090612661565b80601f01602080910402602001604051908101604052809291908181526020018280546106cc90612661565b80156107195780601f106106ee57610100808354040283529160200191610719565b820191906000526020600020905b8154815290600101906020018083116106fc57829003601f168201915b5050505050905090565b600860159054906101000a900460ff1681565b600061074a61074361165e565b8484611666565b6001905092915050565b6000600254905090565b61076661165e565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107ec906126de565b60405180910390fd5b8051825114610839576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108309061274a565b60405180910390fd5b60c88251111561087e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610875906127dc565b60405180910390fd5b60005b82518110156108fb57600083828151811061089f5761089e6127fc565b5b602002602001015190506000670de0b6b3a76400008484815181106108c7576108c66127fc565b5b60200260200101516108d9919061285a565b90506108e633838361182f565b505080806108f39061289c565b915050610881565b505050565b600061090d848484611ac2565b6109ce8461091961165e565b6109c985604051806060016040528060288152602001612e8b60289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061097f61165e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611eac9092919063ffffffff16565b611666565b600190509392505050565b60006012905090565b6000610a8b6109ef61165e565b84610a868560016000610a0061165e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461160090919063ffffffff16565b611666565b6001905092915050565b610a9d61165e565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b2c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b23906126de565b60405180910390fd5b60005b8251811015610bbc5781600c6000858481518110610b5057610b4f6127fc565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610bb49061289c565b915050610b2f565b505050565b600860149054906101000a900460ff1681565b610bdc61165e565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c6b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c62906126de565b60405180910390fd5b60004790503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610cb6573d6000803e3d6000fd5b5050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610d0a61165e565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d90906126de565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600a5481565b610e6861165e565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ef7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eee906126de565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b610f5a61165e565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fe9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe0906126de565b60405180910390fd5b600860149054906101000a900460ff161561100357600080fd5b6001600860146101000a81548160ff02191690831515021790555042600d819055507f799663458a5ef2936f7fa0c99b3336c69c25890f82974f04e811e5bb359186c760405160405180910390a1565b600d5481565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606004805461109290612661565b80601f01602080910402602001604051908101604052809291908181526020018280546110be90612661565b801561110b5780601f106110e05761010080835404028352916020019161110b565b820191906000526020600020905b8154815290600101906020018083116110ee57829003601f168201915b5050505050905090565b60006111d861112261165e565b846111d385604051806060016040528060258152602001612ed9602591396001600061114c61165e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611eac9092919063ffffffff16565b611666565b6001905092915050565b60006111f66111ef61165e565b8484611ac2565b6001905092915050565b60095481565b61120e61165e565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461129d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611294906126de565b60405180910390fd5b8160098190555080600a819055505050565b6112b761165e565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611346576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161133d906126de565b60405180910390fd5b600860149054906101000a900460ff1615611396576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161138d90612956565b60405180910390fd5b80600860156101000a81548160ff02191690831515021790555050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61144261165e565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114c8906126de565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611540576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611537906129e8565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600080828461160f9190612a08565b905083811015611654576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164b90612a88565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036116d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116cc90612b1a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611744576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161173b90612bac565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516118229190612168565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361189e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161189590612c3e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361190d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161190490612cd0565b60405180910390fd5b611918838383611f10565b61198381604051806060016040528060268152602001612eb3602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611eac9092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611a16816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461160090919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611ab59190612168565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611b31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b2890612d62565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611ba0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9790612df4565b60405180910390fd5b600860159054906101000a900460ff1615611e0257600954600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231846040518263ffffffff1660e01b8152600401611c139190611fa0565b602060405180830381865afa158015611c30573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c549190612e29565b101580611cfe5750600a54600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231846040518263ffffffff1660e01b8152600401611cba9190611fa0565b602060405180830381865afa158015611cd7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cfb9190612e29565b10155b80611d59575060011515600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515145b80611dad5750600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611e0157600860149054906101000a900460ff16611e00576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611df790612956565b60405180910390fd5b5b5b60008103611e1b57611e168383600061182f565b611ea7565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611e9b57611e7b83838361182f565b611e9081600254611f1590919063ffffffff16565b600281905550611ea7565b611ea683838361182f565b5b505050565b6000838311158290611ef4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eeb919061204b565b60405180910390fd5b5060008385611f039190612e56565b9050809150509392505050565b505050565b6000611f5783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611eac565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611f8a82611f5f565b9050919050565b611f9a81611f7f565b82525050565b6000602082019050611fb56000830184611f91565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611ff5578082015181840152602081019050611fda565b60008484015250505050565b6000601f19601f8301169050919050565b600061201d82611fbb565b6120278185611fc6565b9350612037818560208601611fd7565b61204081612001565b840191505092915050565b600060208201905081810360008301526120658184612012565b905092915050565b60008115159050919050565b6120828161206d565b82525050565b600060208201905061209d6000830184612079565b92915050565b6000604051905090565b600080fd5b600080fd5b6120c081611f7f565b81146120cb57600080fd5b50565b6000813590506120dd816120b7565b92915050565b6000819050919050565b6120f6816120e3565b811461210157600080fd5b50565b600081359050612113816120ed565b92915050565b600080604083850312156121305761212f6120ad565b5b600061213e858286016120ce565b925050602061214f85828601612104565b9150509250929050565b612162816120e3565b82525050565b600060208201905061217d6000830184612159565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6121c082612001565b810181811067ffffffffffffffff821117156121df576121de612188565b5b80604052505050565b60006121f26120a3565b90506121fe82826121b7565b919050565b600067ffffffffffffffff82111561221e5761221d612188565b5b602082029050602081019050919050565b600080fd5b600061224761224284612203565b6121e8565b9050808382526020820190506020840283018581111561226a5761226961222f565b5b835b81811015612293578061227f88826120ce565b84526020840193505060208101905061226c565b5050509392505050565b600082601f8301126122b2576122b1612183565b5b81356122c2848260208601612234565b91505092915050565b600067ffffffffffffffff8211156122e6576122e5612188565b5b602082029050602081019050919050565b600061230a612305846122cb565b6121e8565b9050808382526020820190506020840283018581111561232d5761232c61222f565b5b835b8181101561235657806123428882612104565b84526020840193505060208101905061232f565b5050509392505050565b600082601f83011261237557612374612183565b5b81356123858482602086016122f7565b91505092915050565b600080604083850312156123a5576123a46120ad565b5b600083013567ffffffffffffffff8111156123c3576123c26120b2565b5b6123cf8582860161229d565b925050602083013567ffffffffffffffff8111156123f0576123ef6120b2565b5b6123fc85828601612360565b9150509250929050565b60008060006060848603121561241f5761241e6120ad565b5b600061242d868287016120ce565b935050602061243e868287016120ce565b925050604061244f86828701612104565b9150509250925092565b600060ff82169050919050565b61246f81612459565b82525050565b600060208201905061248a6000830184612466565b92915050565b6124998161206d565b81146124a457600080fd5b50565b6000813590506124b681612490565b92915050565b600080604083850312156124d3576124d26120ad565b5b600083013567ffffffffffffffff8111156124f1576124f06120b2565b5b6124fd8582860161229d565b925050602061250e858286016124a7565b9150509250929050565b60006020828403121561252e5761252d6120ad565b5b600061253c848285016120ce565b91505092915050565b6000806040838503121561255c5761255b6120ad565b5b600061256a858286016120ce565b925050602061257b858286016124a7565b9150509250929050565b6000806040838503121561259c5761259b6120ad565b5b60006125aa85828601612104565b92505060206125bb85828601612104565b9150509250929050565b6000602082840312156125db576125da6120ad565b5b60006125e9848285016124a7565b91505092915050565b60008060408385031215612609576126086120ad565b5b6000612617858286016120ce565b9250506020612628858286016120ce565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061267957607f821691505b60208210810361268c5761268b612632565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006126c8602083611fc6565b91506126d382612692565b602082019050919050565b600060208201905081810360008301526126f7816126bb565b9050919050565b7f417272617973206d757374206265207468652073616d65206c656e6774680000600082015250565b6000612734601e83611fc6565b915061273f826126fe565b602082019050919050565b6000602082019050818103600083015261276381612727565b9050919050565b7f57616c6c657473206c697374206c656e677468206d757374206265203c3d203260008201527f3030000000000000000000000000000000000000000000000000000000000000602082015250565b60006127c6602283611fc6565b91506127d18261276a565b604082019050919050565b600060208201905081810360008301526127f5816127b9565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612865826120e3565b9150612870836120e3565b925082820261287e816120e3565b915082820484148315176128955761289461282b565b5b5092915050565b60006128a7826120e3565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036128d9576128d861282b565b5b600182019050919050565b7f4c4f59414c3a2054726164696e6720686173206e6f7420796574206265656e2060008201527f656e61626c656400000000000000000000000000000000000000000000000000602082015250565b6000612940602783611fc6565b915061294b826128e4565b604082019050919050565b6000602082019050818103600083015261296f81612933565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006129d2602683611fc6565b91506129dd82612976565b604082019050919050565b60006020820190508181036000830152612a01816129c5565b9050919050565b6000612a13826120e3565b9150612a1e836120e3565b9250828201905080821115612a3657612a3561282b565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000612a72601b83611fc6565b9150612a7d82612a3c565b602082019050919050565b60006020820190508181036000830152612aa181612a65565b9050919050565b7f42455032303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612b04602483611fc6565b9150612b0f82612aa8565b604082019050919050565b60006020820190508181036000830152612b3381612af7565b9050919050565b7f42455032303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612b96602283611fc6565b9150612ba182612b3a565b604082019050919050565b60006020820190508181036000830152612bc581612b89565b9050919050565b7f42455032303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612c28602583611fc6565b9150612c3382612bcc565b604082019050919050565b60006020820190508181036000830152612c5781612c1b565b9050919050565b7f42455032303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612cba602383611fc6565b9150612cc582612c5e565b604082019050919050565b60006020820190508181036000830152612ce981612cad565b9050919050565b7f4945524332303a207472616e736665722066726f6d20746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000612d4c602683611fc6565b9150612d5782612cf0565b604082019050919050565b60006020820190508181036000830152612d7b81612d3f565b9050919050565b7f4945524332303a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612dde602483611fc6565b9150612de982612d82565b604082019050919050565b60006020820190508181036000830152612e0d81612dd1565b9050919050565b600081519050612e23816120ed565b92915050565b600060208284031215612e3f57612e3e6120ad565b5b6000612e4d84828501612e14565b91505092915050565b6000612e61826120e3565b9150612e6c836120e3565b9250828203905081811115612e8457612e8361282b565b5b9291505056fe42455032303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636542455032303a207472616e7366657220616d6f756e7420657863656564732062616c616e636542455032303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212205fd7921708c6325422702ed84ce1ffcdb7b138eedb67d2bfb78288429d0a401164736f6c63430008110033

Deployed Bytecode Sourcemap

8831:3902:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8907:64;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3332:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9190:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4246:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3653:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12169:561;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4423:345;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10022:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4776:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10878:202;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9149:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11090:146;;;;;;;;;;;;;:::i;:::-;;3769:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7224:148;;;;;;;;;;;;;:::i;:::-;;9298:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10573:147;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10160:197;;;;;;;;;;;;;:::i;:::-;;9468:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7010:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3440:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5002:286;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3904:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9237:54;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10728:142;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10365:200;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4087:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7380:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8907:64;;;;;;;;;;;;;:::o;3332:100::-;3386:13;3419:5;3412:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3332:100;:::o;9190:38::-;;;;;;;;;;;;;:::o;4246:169::-;4329:4;4346:39;4355:12;:10;:12::i;:::-;4369:7;4378:6;4346:8;:39::i;:::-;4403:4;4396:11;;4246:169;;;;:::o;3653:108::-;3714:7;3741:12;;3734:19;;3653:108;:::o;12169:561::-;7147:12;:10;:12::i;:::-;7137:22;;:6;;;;;;;;;;;:22;;;7129:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12341:6:::1;:13;12316:14;:21;:38;12308:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;12433:3;12408:14;:21;:28;;12400:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;12491:9;12486:237;12510:14;:21;12506:1;:25;12486:237;;;12553:14;12570;12585:1;12570:17;;;;;;;;:::i;:::-;;;;;;;;12553:34;;12602:21;12639:6;12626;12633:1;12626:9;;;;;;;;:::i;:::-;;;;;;;;:20;;;;:::i;:::-;12602:44;;12661:50;12677:10;12689:6;12697:13;12661:15;:50::i;:::-;12538:185;;12533:3;;;;;:::i;:::-;;;;12486:237;;;;12169:561:::0;;:::o;4423:345::-;4536:4;4553:36;4563:6;4571:9;4582:6;4553:9;:36::i;:::-;4600:138;4609:6;4617:12;:10;:12::i;:::-;4631:106;4669:6;4631:106;;;;;;;;;;;;;;;;;:11;:19;4643:6;4631:19;;;;;;;;;;;;;;;:33;4651:12;:10;:12::i;:::-;4631:33;;;;;;;;;;;;;;;;:37;;:106;;;;;:::i;:::-;4600:8;:138::i;:::-;4756:4;4749:11;;4423:345;;;;;:::o;10022:93::-;10080:5;10105:2;10098:9;;10022:93;:::o;4776:218::-;4864:4;4881:83;4890:12;:10;:12::i;:::-;4904:7;4913:50;4952:10;4913:11;:25;4925:12;:10;:12::i;:::-;4913:25;;;;;;;;;;;;;;;:34;4939:7;4913:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;4881:8;:83::i;:::-;4982:4;4975:11;;4776:218;;;;:::o;10878:202::-;7147:12;:10;:12::i;:::-;7137:22;;:6;;;;;;;;;;;:22;;;7129:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10975:9:::1;10971:102;10990:7;:14;10986:1;:18;10971:102;;;11054:7;11026:13;:25;11040:7;11048:1;11040:10;;;;;;;;:::i;:::-;;;;;;;;11026:25;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;11006:3;;;;;:::i;:::-;;;;10971:102;;;;10878:202:::0;;:::o;9149:34::-;;;;;;;;;;;;;:::o;11090:146::-;7147:12;:10;:12::i;:::-;7137:22;;:6;;;;;;;;;;;:22;;;7129:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11137:17:::1;11157:21;11137:41;;11197:10;11189:28;;:39;11218:9;11189:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;11126:110;11090:146::o:0;3769:127::-;3843:7;3870:9;:18;3880:7;3870:18;;;;;;;;;;;;;;;;3863:25;;3769:127;;;:::o;7224:148::-;7147:12;:10;:12::i;:::-;7137:22;;:6;;;;;;;;;;;:22;;;7129:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;7331:1:::1;7294:40;;7315:6;;;;;;;;;;;7294:40;;;;;;;;;;;;7362:1;7345:6;;:19;;;;;;;;;;;;;;;;;;7224:148::o:0;9298:27::-;;;;:::o;10573:147::-;7147:12;:10;:12::i;:::-;7137:22;;:6;;;;;;;;;;;:22;;;7129:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10706:6:::1;10662:33;:41;10696:6;10662:41;;;;;;;;;;;;;;;;:50;;;;;;;;;;;;;;;;;;10573:147:::0;;:::o;10160:197::-;7147:12;:10;:12::i;:::-;7137:22;;:6;;;;;;;;;;;:22;;;7129:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10224:14:::1;;;;;;;;;;;10223:15;10215:24;;;::::0;::::1;;10269:4;10252:14;;:21;;;;;;;;;;;;;;;;;;10302:15;10284;:33;;;;10333:16;;;;;;;;;;10160:197::o:0;9468:30::-;;;;:::o;7010:79::-;7048:7;7075:6;;;;;;;;;;;7068:13;;7010:79;:::o;3440:104::-;3496:13;3529:7;3522:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3440:104;:::o;5002:286::-;5095:4;5112:146;5121:12;:10;:12::i;:::-;5135:7;5144:113;5183:15;5144:113;;;;;;;;;;;;;;;;;:11;:25;5156:12;:10;:12::i;:::-;5144:25;;;;;;;;;;;;;;;:34;5170:7;5144:34;;;;;;;;;;;;;;;;:38;;:113;;;;;:::i;:::-;5112:8;:146::i;:::-;5276:4;5269:11;;5002:286;;;;:::o;3904:175::-;3990:4;4007:42;4017:12;:10;:12::i;:::-;4031:9;4042:6;4007:9;:42::i;:::-;4067:4;4060:11;;3904:175;;;;:::o;9237:54::-;;;;:::o;10728:142::-;7147:12;:10;:12::i;:::-;7137:22;;:6;;;;;;;;;;;:22;;;7129:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10825:8:::1;10812:10;:21;;;;10855:7;10844:8;:18;;;;10728:142:::0;;:::o;10365:200::-;7147:12;:10;:12::i;:::-;7137:22;;:6;;;;;;;;;;;:22;;;7129:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10450:14:::1;;;;;;;;;;;10449:15;10441:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10551:6;10529:19;;:28;;;;;;;;;;;;;;;;;;10365:200:::0;:::o;4087:151::-;4176:7;4203:11;:18;4215:5;4203:18;;;;;;;;;;;;;;;:27;4222:7;4203:27;;;;;;;;;;;;;;;;4196:34;;4087:151;;;;:::o;7380:244::-;7147:12;:10;:12::i;:::-;7137:22;;:6;;;;;;;;;;;:22;;;7129:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;7489:1:::1;7469:22;;:8;:22;;::::0;7461:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;7579:8;7550:38;;7571:6;;;;;;;;;;;7550:38;;;;;;;;;;;;7608:8;7599:6;;:17;;;;;;;;;;;;;;;;;;7380:244:::0;:::o;567:179::-;625:7;645:9;661:1;657;:5;;;;:::i;:::-;645:17;;686:1;681;:6;;673:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;737:1;730:8;;;567:179;;;;:::o;191:98::-;244:7;271:10;264:17;;191:98;:::o;6228:346::-;6347:1;6330:19;;:5;:19;;;6322:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6428:1;6409:21;;:7;:21;;;6401:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6512:6;6482:11;:18;6494:5;6482:18;;;;;;;;;;;;;;;:27;6501:7;6482:27;;;;;;;;;;;;;;;:36;;;;6550:7;6534:32;;6543:5;6534:32;;;6559:6;6534:32;;;;;;:::i;:::-;;;;;;;;6228:346;;;:::o;5296:538::-;5420:1;5402:20;;:6;:20;;;5394:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;5504:1;5483:23;;:9;:23;;;5475:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;5559:47;5580:6;5588:9;5599:6;5559:20;:47::i;:::-;5639:70;5661:6;5639:70;;;;;;;;;;;;;;;;;:9;:17;5649:6;5639:17;;;;;;;;;;;;;;;;:21;;:70;;;;;:::i;:::-;5619:9;:17;5629:6;5619:17;;;;;;;;;;;;;;;:90;;;;5743:32;5768:6;5743:9;:20;5753:9;5743:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;5720:9;:20;5730:9;5720:20;;;;;;;;;;;;;;;:55;;;;5808:9;5791:35;;5800:6;5791:35;;;5819:6;5791:35;;;;;;:::i;:::-;;;;;;;;5296:538;;;:::o;11246:913::-;11362:1;11346:18;;:4;:18;;;11338:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;11440:1;11426:16;;:2;:16;;;11418:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;11504:19;;;;;;;;;;;11501:331;;;11567:10;;11543:6;;;;;;;;;;;:16;;;11560:2;11543:20;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:34;;:69;;;;11604:8;;11581:5;;;;;;;;;;;:15;;;11597:2;11581:19;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:31;;11543:69;:98;;;;11637:4;11616:25;;:13;:17;11630:2;11616:17;;;;;;;;;;;;;;;;;;;;;;;;;:25;;;11543:98;:141;;;;11645:33;:39;11679:4;11645:39;;;;;;;;;;;;;;;;;;;;;;;;;11543:141;11540:281;;11737:14;;;;;;;;;;;11729:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;11540:281;11501:331;11863:1;11853:6;:11;11849:93;;11881:28;11897:4;11903:2;11907:1;11881:15;:28::i;:::-;11924:7;;11849:93;11965:4;;;;;;;;;;;11959:10;;:2;:10;;;11955:151;;11986:33;12002:4;12008:2;12012:6;11986:15;:33::i;:::-;12049:24;12066:6;12049:12;;:16;;:24;;;;:::i;:::-;12034:12;:39;;;;12088:7;;11955:151;12118:33;12134:4;12140:2;12144:6;12118:15;:33::i;:::-;11246:913;;;;:::o;898:190::-;984:7;1017:1;1012;:6;;1020:12;1004:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1044:9;1060:1;1056;:5;;;;:::i;:::-;1044:17;;1079:1;1072:8;;;898:190;;;;;:::o;6582:91::-;;;;:::o;754:136::-;812:7;839:43;843:1;846;839:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;832:50;;754:136;;;;:::o;7:126:1:-;44:7;84:42;77:5;73:54;62:65;;7:126;;;:::o;139:96::-;176:7;205:24;223:5;205:24;:::i;:::-;194:35;;139:96;;;:::o;241:118::-;328:24;346:5;328:24;:::i;:::-;323:3;316:37;241:118;;:::o;365:222::-;458:4;496:2;485:9;481:18;473:26;;509:71;577:1;566:9;562:17;553:6;509:71;:::i;:::-;365:222;;;;:::o;593:99::-;645:6;679:5;673:12;663:22;;593:99;;;:::o;698:169::-;782:11;816:6;811:3;804:19;856:4;851:3;847:14;832:29;;698:169;;;;:::o;873:246::-;954:1;964:113;978:6;975:1;972:13;964:113;;;1063:1;1058:3;1054:11;1048:18;1044:1;1039:3;1035:11;1028:39;1000:2;997:1;993:10;988:15;;964:113;;;1111:1;1102:6;1097:3;1093:16;1086:27;935:184;873:246;;;:::o;1125:102::-;1166:6;1217:2;1213:7;1208:2;1201:5;1197:14;1193:28;1183:38;;1125:102;;;:::o;1233:377::-;1321:3;1349:39;1382:5;1349:39;:::i;:::-;1404:71;1468:6;1463:3;1404:71;:::i;:::-;1397:78;;1484:65;1542:6;1537:3;1530:4;1523:5;1519:16;1484:65;:::i;:::-;1574:29;1596:6;1574:29;:::i;:::-;1569:3;1565:39;1558:46;;1325:285;1233:377;;;;:::o;1616:313::-;1729:4;1767:2;1756:9;1752:18;1744:26;;1816:9;1810:4;1806:20;1802:1;1791:9;1787:17;1780:47;1844:78;1917:4;1908:6;1844:78;:::i;:::-;1836:86;;1616:313;;;;:::o;1935:90::-;1969:7;2012:5;2005:13;1998:21;1987:32;;1935:90;;;:::o;2031:109::-;2112:21;2127:5;2112:21;:::i;:::-;2107:3;2100:34;2031:109;;:::o;2146:210::-;2233:4;2271:2;2260:9;2256:18;2248:26;;2284:65;2346:1;2335:9;2331:17;2322:6;2284:65;:::i;:::-;2146:210;;;;:::o;2362:75::-;2395:6;2428:2;2422:9;2412:19;;2362:75;:::o;2443:117::-;2552:1;2549;2542:12;2566:117;2675:1;2672;2665:12;2689:122;2762:24;2780:5;2762:24;:::i;:::-;2755:5;2752:35;2742:63;;2801:1;2798;2791:12;2742:63;2689:122;:::o;2817:139::-;2863:5;2901:6;2888:20;2879:29;;2917:33;2944:5;2917:33;:::i;:::-;2817:139;;;;:::o;2962:77::-;2999:7;3028:5;3017:16;;2962:77;;;:::o;3045:122::-;3118:24;3136:5;3118:24;:::i;:::-;3111:5;3108:35;3098:63;;3157:1;3154;3147:12;3098:63;3045:122;:::o;3173:139::-;3219:5;3257:6;3244:20;3235:29;;3273:33;3300:5;3273:33;:::i;:::-;3173:139;;;;:::o;3318:474::-;3386:6;3394;3443:2;3431:9;3422:7;3418:23;3414:32;3411:119;;;3449:79;;:::i;:::-;3411:119;3569:1;3594:53;3639:7;3630:6;3619:9;3615:22;3594:53;:::i;:::-;3584:63;;3540:117;3696:2;3722:53;3767:7;3758:6;3747:9;3743:22;3722:53;:::i;:::-;3712:63;;3667:118;3318:474;;;;;:::o;3798:118::-;3885:24;3903:5;3885:24;:::i;:::-;3880:3;3873:37;3798:118;;:::o;3922:222::-;4015:4;4053:2;4042:9;4038:18;4030:26;;4066:71;4134:1;4123:9;4119:17;4110:6;4066:71;:::i;:::-;3922:222;;;;:::o;4150:117::-;4259:1;4256;4249:12;4273:180;4321:77;4318:1;4311:88;4418:4;4415:1;4408:15;4442:4;4439:1;4432:15;4459:281;4542:27;4564:4;4542:27;:::i;:::-;4534:6;4530:40;4672:6;4660:10;4657:22;4636:18;4624:10;4621:34;4618:62;4615:88;;;4683:18;;:::i;:::-;4615:88;4723:10;4719:2;4712:22;4502:238;4459:281;;:::o;4746:129::-;4780:6;4807:20;;:::i;:::-;4797:30;;4836:33;4864:4;4856:6;4836:33;:::i;:::-;4746:129;;;:::o;4881:311::-;4958:4;5048:18;5040:6;5037:30;5034:56;;;5070:18;;:::i;:::-;5034:56;5120:4;5112:6;5108:17;5100:25;;5180:4;5174;5170:15;5162:23;;4881:311;;;:::o;5198:117::-;5307:1;5304;5297:12;5338:710;5434:5;5459:81;5475:64;5532:6;5475:64;:::i;:::-;5459:81;:::i;:::-;5450:90;;5560:5;5589:6;5582:5;5575:21;5623:4;5616:5;5612:16;5605:23;;5676:4;5668:6;5664:17;5656:6;5652:30;5705:3;5697:6;5694:15;5691:122;;;5724:79;;:::i;:::-;5691:122;5839:6;5822:220;5856:6;5851:3;5848:15;5822:220;;;5931:3;5960:37;5993:3;5981:10;5960:37;:::i;:::-;5955:3;5948:50;6027:4;6022:3;6018:14;6011:21;;5898:144;5882:4;5877:3;5873:14;5866:21;;5822:220;;;5826:21;5440:608;;5338:710;;;;;:::o;6071:370::-;6142:5;6191:3;6184:4;6176:6;6172:17;6168:27;6158:122;;6199:79;;:::i;:::-;6158:122;6316:6;6303:20;6341:94;6431:3;6423:6;6416:4;6408:6;6404:17;6341:94;:::i;:::-;6332:103;;6148:293;6071:370;;;;:::o;6447:311::-;6524:4;6614:18;6606:6;6603:30;6600:56;;;6636:18;;:::i;:::-;6600:56;6686:4;6678:6;6674:17;6666:25;;6746:4;6740;6736:15;6728:23;;6447:311;;;:::o;6781:710::-;6877:5;6902:81;6918:64;6975:6;6918:64;:::i;:::-;6902:81;:::i;:::-;6893:90;;7003:5;7032:6;7025:5;7018:21;7066:4;7059:5;7055:16;7048:23;;7119:4;7111:6;7107:17;7099:6;7095:30;7148:3;7140:6;7137:15;7134:122;;;7167:79;;:::i;:::-;7134:122;7282:6;7265:220;7299:6;7294:3;7291:15;7265:220;;;7374:3;7403:37;7436:3;7424:10;7403:37;:::i;:::-;7398:3;7391:50;7470:4;7465:3;7461:14;7454:21;;7341:144;7325:4;7320:3;7316:14;7309:21;;7265:220;;;7269:21;6883:608;;6781:710;;;;;:::o;7514:370::-;7585:5;7634:3;7627:4;7619:6;7615:17;7611:27;7601:122;;7642:79;;:::i;:::-;7601:122;7759:6;7746:20;7784:94;7874:3;7866:6;7859:4;7851:6;7847:17;7784:94;:::i;:::-;7775:103;;7591:293;7514:370;;;;:::o;7890:894::-;8008:6;8016;8065:2;8053:9;8044:7;8040:23;8036:32;8033:119;;;8071:79;;:::i;:::-;8033:119;8219:1;8208:9;8204:17;8191:31;8249:18;8241:6;8238:30;8235:117;;;8271:79;;:::i;:::-;8235:117;8376:78;8446:7;8437:6;8426:9;8422:22;8376:78;:::i;:::-;8366:88;;8162:302;8531:2;8520:9;8516:18;8503:32;8562:18;8554:6;8551:30;8548:117;;;8584:79;;:::i;:::-;8548:117;8689:78;8759:7;8750:6;8739:9;8735:22;8689:78;:::i;:::-;8679:88;;8474:303;7890:894;;;;;:::o;8790:619::-;8867:6;8875;8883;8932:2;8920:9;8911:7;8907:23;8903:32;8900:119;;;8938:79;;:::i;:::-;8900:119;9058:1;9083:53;9128:7;9119:6;9108:9;9104:22;9083:53;:::i;:::-;9073:63;;9029:117;9185:2;9211:53;9256:7;9247:6;9236:9;9232:22;9211:53;:::i;:::-;9201:63;;9156:118;9313:2;9339:53;9384:7;9375:6;9364:9;9360:22;9339:53;:::i;:::-;9329:63;;9284:118;8790:619;;;;;:::o;9415:86::-;9450:7;9490:4;9483:5;9479:16;9468:27;;9415:86;;;:::o;9507:112::-;9590:22;9606:5;9590:22;:::i;:::-;9585:3;9578:35;9507:112;;:::o;9625:214::-;9714:4;9752:2;9741:9;9737:18;9729:26;;9765:67;9829:1;9818:9;9814:17;9805:6;9765:67;:::i;:::-;9625:214;;;;:::o;9845:116::-;9915:21;9930:5;9915:21;:::i;:::-;9908:5;9905:32;9895:60;;9951:1;9948;9941:12;9895:60;9845:116;:::o;9967:133::-;10010:5;10048:6;10035:20;10026:29;;10064:30;10088:5;10064:30;:::i;:::-;9967:133;;;;:::o;10106:678::-;10196:6;10204;10253:2;10241:9;10232:7;10228:23;10224:32;10221:119;;;10259:79;;:::i;:::-;10221:119;10407:1;10396:9;10392:17;10379:31;10437:18;10429:6;10426:30;10423:117;;;10459:79;;:::i;:::-;10423:117;10564:78;10634:7;10625:6;10614:9;10610:22;10564:78;:::i;:::-;10554:88;;10350:302;10691:2;10717:50;10759:7;10750:6;10739:9;10735:22;10717:50;:::i;:::-;10707:60;;10662:115;10106:678;;;;;:::o;10790:329::-;10849:6;10898:2;10886:9;10877:7;10873:23;10869:32;10866:119;;;10904:79;;:::i;:::-;10866:119;11024:1;11049:53;11094:7;11085:6;11074:9;11070:22;11049:53;:::i;:::-;11039:63;;10995:117;10790:329;;;;:::o;11125:468::-;11190:6;11198;11247:2;11235:9;11226:7;11222:23;11218:32;11215:119;;;11253:79;;:::i;:::-;11215:119;11373:1;11398:53;11443:7;11434:6;11423:9;11419:22;11398:53;:::i;:::-;11388:63;;11344:117;11500:2;11526:50;11568:7;11559:6;11548:9;11544:22;11526:50;:::i;:::-;11516:60;;11471:115;11125:468;;;;;:::o;11599:474::-;11667:6;11675;11724:2;11712:9;11703:7;11699:23;11695:32;11692:119;;;11730:79;;:::i;:::-;11692:119;11850:1;11875:53;11920:7;11911:6;11900:9;11896:22;11875:53;:::i;:::-;11865:63;;11821:117;11977:2;12003:53;12048:7;12039:6;12028:9;12024:22;12003:53;:::i;:::-;11993:63;;11948:118;11599:474;;;;;:::o;12079:323::-;12135:6;12184:2;12172:9;12163:7;12159:23;12155:32;12152:119;;;12190:79;;:::i;:::-;12152:119;12310:1;12335:50;12377:7;12368:6;12357:9;12353:22;12335:50;:::i;:::-;12325:60;;12281:114;12079:323;;;;:::o;12408:474::-;12476:6;12484;12533:2;12521:9;12512:7;12508:23;12504:32;12501:119;;;12539:79;;:::i;:::-;12501:119;12659:1;12684:53;12729:7;12720:6;12709:9;12705:22;12684:53;:::i;:::-;12674:63;;12630:117;12786:2;12812:53;12857:7;12848:6;12837:9;12833:22;12812:53;:::i;:::-;12802:63;;12757:118;12408:474;;;;;:::o;12888:180::-;12936:77;12933:1;12926:88;13033:4;13030:1;13023:15;13057:4;13054:1;13047:15;13074:320;13118:6;13155:1;13149:4;13145:12;13135:22;;13202:1;13196:4;13192:12;13223:18;13213:81;;13279:4;13271:6;13267:17;13257:27;;13213:81;13341:2;13333:6;13330:14;13310:18;13307:38;13304:84;;13360:18;;:::i;:::-;13304:84;13125:269;13074:320;;;:::o;13400:182::-;13540:34;13536:1;13528:6;13524:14;13517:58;13400:182;:::o;13588:366::-;13730:3;13751:67;13815:2;13810:3;13751:67;:::i;:::-;13744:74;;13827:93;13916:3;13827:93;:::i;:::-;13945:2;13940:3;13936:12;13929:19;;13588:366;;;:::o;13960:419::-;14126:4;14164:2;14153:9;14149:18;14141:26;;14213:9;14207:4;14203:20;14199:1;14188:9;14184:17;14177:47;14241:131;14367:4;14241:131;:::i;:::-;14233:139;;13960:419;;;:::o;14385:180::-;14525:32;14521:1;14513:6;14509:14;14502:56;14385:180;:::o;14571:366::-;14713:3;14734:67;14798:2;14793:3;14734:67;:::i;:::-;14727:74;;14810:93;14899:3;14810:93;:::i;:::-;14928:2;14923:3;14919:12;14912:19;;14571:366;;;:::o;14943:419::-;15109:4;15147:2;15136:9;15132:18;15124:26;;15196:9;15190:4;15186:20;15182:1;15171:9;15167:17;15160:47;15224:131;15350:4;15224:131;:::i;:::-;15216:139;;14943:419;;;:::o;15368:221::-;15508:34;15504:1;15496:6;15492:14;15485:58;15577:4;15572:2;15564:6;15560:15;15553:29;15368:221;:::o;15595:366::-;15737:3;15758:67;15822:2;15817:3;15758:67;:::i;:::-;15751:74;;15834:93;15923:3;15834:93;:::i;:::-;15952:2;15947:3;15943:12;15936:19;;15595:366;;;:::o;15967:419::-;16133:4;16171:2;16160:9;16156:18;16148:26;;16220:9;16214:4;16210:20;16206:1;16195:9;16191:17;16184:47;16248:131;16374:4;16248:131;:::i;:::-;16240:139;;15967:419;;;:::o;16392:180::-;16440:77;16437:1;16430:88;16537:4;16534:1;16527:15;16561:4;16558:1;16551:15;16578:180;16626:77;16623:1;16616:88;16723:4;16720:1;16713:15;16747:4;16744:1;16737:15;16764:410;16804:7;16827:20;16845:1;16827:20;:::i;:::-;16822:25;;16861:20;16879:1;16861:20;:::i;:::-;16856:25;;16916:1;16913;16909:9;16938:30;16956:11;16938:30;:::i;:::-;16927:41;;17117:1;17108:7;17104:15;17101:1;17098:22;17078:1;17071:9;17051:83;17028:139;;17147:18;;:::i;:::-;17028:139;16812:362;16764:410;;;;:::o;17180:233::-;17219:3;17242:24;17260:5;17242:24;:::i;:::-;17233:33;;17288:66;17281:5;17278:77;17275:103;;17358:18;;:::i;:::-;17275:103;17405:1;17398:5;17394:13;17387:20;;17180:233;;;:::o;17419:226::-;17559:34;17555:1;17547:6;17543:14;17536:58;17628:9;17623:2;17615:6;17611:15;17604:34;17419:226;:::o;17651:366::-;17793:3;17814:67;17878:2;17873:3;17814:67;:::i;:::-;17807:74;;17890:93;17979:3;17890:93;:::i;:::-;18008:2;18003:3;17999:12;17992:19;;17651:366;;;:::o;18023:419::-;18189:4;18227:2;18216:9;18212:18;18204:26;;18276:9;18270:4;18266:20;18262:1;18251:9;18247:17;18240:47;18304:131;18430:4;18304:131;:::i;:::-;18296:139;;18023:419;;;:::o;18448:225::-;18588:34;18584:1;18576:6;18572:14;18565:58;18657:8;18652:2;18644:6;18640:15;18633:33;18448:225;:::o;18679:366::-;18821:3;18842:67;18906:2;18901:3;18842:67;:::i;:::-;18835:74;;18918:93;19007:3;18918:93;:::i;:::-;19036:2;19031:3;19027:12;19020:19;;18679:366;;;:::o;19051:419::-;19217:4;19255:2;19244:9;19240:18;19232:26;;19304:9;19298:4;19294:20;19290:1;19279:9;19275:17;19268:47;19332:131;19458:4;19332:131;:::i;:::-;19324:139;;19051:419;;;:::o;19476:191::-;19516:3;19535:20;19553:1;19535:20;:::i;:::-;19530:25;;19569:20;19587:1;19569:20;:::i;:::-;19564:25;;19612:1;19609;19605:9;19598:16;;19633:3;19630:1;19627:10;19624:36;;;19640:18;;:::i;:::-;19624:36;19476:191;;;;:::o;19673:177::-;19813:29;19809:1;19801:6;19797:14;19790:53;19673:177;:::o;19856:366::-;19998:3;20019:67;20083:2;20078:3;20019:67;:::i;:::-;20012:74;;20095:93;20184:3;20095:93;:::i;:::-;20213:2;20208:3;20204:12;20197:19;;19856:366;;;:::o;20228:419::-;20394:4;20432:2;20421:9;20417:18;20409:26;;20481:9;20475:4;20471:20;20467:1;20456:9;20452:17;20445:47;20509:131;20635:4;20509:131;:::i;:::-;20501:139;;20228:419;;;:::o;20653:223::-;20793:34;20789:1;20781:6;20777:14;20770:58;20862:6;20857:2;20849:6;20845:15;20838:31;20653:223;:::o;20882:366::-;21024:3;21045:67;21109:2;21104:3;21045:67;:::i;:::-;21038:74;;21121:93;21210:3;21121:93;:::i;:::-;21239:2;21234:3;21230:12;21223:19;;20882:366;;;:::o;21254:419::-;21420:4;21458:2;21447:9;21443:18;21435:26;;21507:9;21501:4;21497:20;21493:1;21482:9;21478:17;21471:47;21535:131;21661:4;21535:131;:::i;:::-;21527:139;;21254:419;;;:::o;21679:221::-;21819:34;21815:1;21807:6;21803:14;21796:58;21888:4;21883:2;21875:6;21871:15;21864:29;21679:221;:::o;21906:366::-;22048:3;22069:67;22133:2;22128:3;22069:67;:::i;:::-;22062:74;;22145:93;22234:3;22145:93;:::i;:::-;22263:2;22258:3;22254:12;22247:19;;21906:366;;;:::o;22278:419::-;22444:4;22482:2;22471:9;22467:18;22459:26;;22531:9;22525:4;22521:20;22517:1;22506:9;22502:17;22495:47;22559:131;22685:4;22559:131;:::i;:::-;22551:139;;22278:419;;;:::o;22703:224::-;22843:34;22839:1;22831:6;22827:14;22820:58;22912:7;22907:2;22899:6;22895:15;22888:32;22703:224;:::o;22933:366::-;23075:3;23096:67;23160:2;23155:3;23096:67;:::i;:::-;23089:74;;23172:93;23261:3;23172:93;:::i;:::-;23290:2;23285:3;23281:12;23274:19;;22933:366;;;:::o;23305:419::-;23471:4;23509:2;23498:9;23494:18;23486:26;;23558:9;23552:4;23548:20;23544:1;23533:9;23529:17;23522:47;23586:131;23712:4;23586:131;:::i;:::-;23578:139;;23305:419;;;:::o;23730:222::-;23870:34;23866:1;23858:6;23854:14;23847:58;23939:5;23934:2;23926:6;23922:15;23915:30;23730:222;:::o;23958:366::-;24100:3;24121:67;24185:2;24180:3;24121:67;:::i;:::-;24114:74;;24197:93;24286:3;24197:93;:::i;:::-;24315:2;24310:3;24306:12;24299:19;;23958:366;;;:::o;24330:419::-;24496:4;24534:2;24523:9;24519:18;24511:26;;24583:9;24577:4;24573:20;24569:1;24558:9;24554:17;24547:47;24611:131;24737:4;24611:131;:::i;:::-;24603:139;;24330:419;;;:::o;24755:225::-;24895:34;24891:1;24883:6;24879:14;24872:58;24964:8;24959:2;24951:6;24947:15;24940:33;24755:225;:::o;24986:366::-;25128:3;25149:67;25213:2;25208:3;25149:67;:::i;:::-;25142:74;;25225:93;25314:3;25225:93;:::i;:::-;25343:2;25338:3;25334:12;25327:19;;24986:366;;;:::o;25358:419::-;25524:4;25562:2;25551:9;25547:18;25539:26;;25611:9;25605:4;25601:20;25597:1;25586:9;25582:17;25575:47;25639:131;25765:4;25639:131;:::i;:::-;25631:139;;25358:419;;;:::o;25783:223::-;25923:34;25919:1;25911:6;25907:14;25900:58;25992:6;25987:2;25979:6;25975:15;25968:31;25783:223;:::o;26012:366::-;26154:3;26175:67;26239:2;26234:3;26175:67;:::i;:::-;26168:74;;26251:93;26340:3;26251:93;:::i;:::-;26369:2;26364:3;26360:12;26353:19;;26012:366;;;:::o;26384:419::-;26550:4;26588:2;26577:9;26573:18;26565:26;;26637:9;26631:4;26627:20;26623:1;26612:9;26608:17;26601:47;26665:131;26791:4;26665:131;:::i;:::-;26657:139;;26384:419;;;:::o;26809:143::-;26866:5;26897:6;26891:13;26882:22;;26913:33;26940:5;26913:33;:::i;:::-;26809:143;;;;:::o;26958:351::-;27028:6;27077:2;27065:9;27056:7;27052:23;27048:32;27045:119;;;27083:79;;:::i;:::-;27045:119;27203:1;27228:64;27284:7;27275:6;27264:9;27260:22;27228:64;:::i;:::-;27218:74;;27174:128;26958:351;;;;:::o;27315:194::-;27355:4;27375:20;27393:1;27375:20;:::i;:::-;27370:25;;27409:20;27427:1;27409:20;:::i;:::-;27404:25;;27453:1;27450;27446:9;27438:17;;27477:1;27471:4;27468:11;27465:37;;;27482:18;;:::i;:::-;27465:37;27315:194;;;;:::o

Swarm Source

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