ETH Price: $3,132.41 (+1.92%)

Token

VIXCO (VIX)
 

Overview

Max Total Supply

2,000,000,000 VIX

Holders

1,101 (0.00%)

Market

Price

$0.01 @ 0.000002 ETH (+1.12%)

Onchain Market Cap

$10,110,351.54

Circulating Supply Market Cap

$4,148,734.12

Other Info

Token Contract (WITH 18 Decimals)

Balance
200 VIX

Value
$1.01 ( ~0.000322435063507247 Eth) [0.0000%]
0x525276484f359619755663C8100dAbfcA00A60F5
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

VIXCO is a blockchain platform that connects merchants and consumers.

Market

Volume (24H):$238,562.38
Market Capitalization:$4,148,734.12
Circulating Supply:820,690,379.00 VIX
Market Data Source: Coinmarketcap

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
VIX

Compiler Version
v0.8.5+commit.a4f2e591

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-02-10
*/

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

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

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

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 virtual returns (address) {
        return _owner;
    }

    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

interface 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 {
    mapping(address => uint256) internal _balances;

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

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

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

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

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

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

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

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

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

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

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
    unchecked {
        _approve(sender, _msgSender(), currentAllowance - amount);
    }

        return true;
    }

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

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
    unchecked {
        _approve(_msgSender(), spender, currentAllowance - subtractedValue);
    }

        return true;
    }

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

        _beforeTokenTransfer(sender, recipient, amount);

        uint256 senderBalance = _balances[sender];
        require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");
    unchecked {
        _balances[sender] = senderBalance - amount;
    }
        _balances[recipient] += amount;

        emit Transfer(sender, recipient, amount);
    }

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

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

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

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

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

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
    unchecked {
        _balances[account] = accountBalance - amount;
    }
        _totalSupply -= amount;

        emit Transfer(account, address(0), amount);
    }

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

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

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

abstract contract ERC20Burnable is Context, ERC20, Ownable {
    function burn(uint256 amount) public virtual {
        _burn(_msgSender(), amount);
    }

    function burnFrom(address account, uint256 amount) public virtual {
        uint256 currentAllowance = allowance(account, _msgSender());
        require(currentAllowance >= amount, "ERC20: burn amount exceeds allowance");
    unchecked {
        _approve(account, _msgSender(), currentAllowance - amount);
    }
        _burn(account, amount);
    }
}

abstract contract ERC20Lockable is ERC20, Ownable {
    struct LockInfo {
        uint256 _releaseTime;
        uint256 _amount;
    }

    mapping(address => LockInfo[]) internal _locks;
    mapping(address => uint256) internal _totalLocked;

    event Lock(address indexed from, uint256 amount, uint256 releaseTime);
    event Unlock(address indexed from, uint256 amount);

    modifier checkLock(address from, uint256 amount) {
        uint256 length = _locks[from].length;
        if (length > 0) {
            autoUnlock(from);
        }
        require(_balances[from] >= _totalLocked[from] + amount, "checkLock : balance exceed");
        _;
    }

    function _lock(address from, uint256 amount, uint256 releaseTime) internal returns (bool success)
    {
        require(
            _balances[from] >= amount + _totalLocked[from],
            "lock : locked total should be smaller than balance"
        );
        _totalLocked[from] = _totalLocked[from] + amount;
        _locks[from].push(LockInfo(releaseTime, amount));
        emit Lock(from, amount, releaseTime);
        success = true;
    }

    function _unlock(address from, uint256 index) internal returns (bool success) {
        LockInfo storage lock = _locks[from][index];
        _totalLocked[from] = _totalLocked[from] - lock._amount;
        emit Unlock(from, lock._amount);
        _locks[from][index] = _locks[from][_locks[from].length - 1];
        _locks[from].pop();
        success = true;
    }

    function lock(address recipient, uint256 amount, uint256 releaseTime) public onlyOwner returns (bool) {
        require(_balances[recipient] >= amount, "There is not enough balance of holder.");
        _lock(recipient, amount, releaseTime);

        return true;
    }

    function autoUnlock(address from) public returns (bool success) {
        for (uint256 i = 0; i < _locks[from].length; i++) {
            if (_locks[from][i]._releaseTime < block.timestamp) {
                _unlock(from, i);
            }
        }
        success = true;
    }

    function unlock(address from, uint256 idx) public onlyOwner returns (bool success) {
        require(_locks[from].length > idx, "There is not lock info.");
        _unlock(from, idx);
        success = true;
    }

    function releaseLock(address from) external onlyOwner returns (bool success){
        require(_locks[from].length > 0, "There is not lock info.");
        //        uint256 i = _locks[from].length - 1;
        //        _unlock(from, i);
        for (uint256 i = _locks[from].length; i > 0; i--) {
            _unlock(from, i - 1);
        }
        success = true;
    }

    function transferWithLock(address recipient, uint256 amount, uint256 releaseTime) external onlyOwner returns (bool success)
    {
        require(recipient != address(0));
        _transfer(msg.sender, recipient, amount);
        _lock(recipient, amount, releaseTime);
        success = true;
    }

    function lockInfo(address locked, uint256 index) public view returns (uint256 releaseTime, uint256 amount)
    {
        LockInfo memory lock = _locks[locked][index];
        releaseTime = lock._releaseTime;
        amount = lock._amount;
    }

    function totalLocked(address locked) public view returns (uint256 amount, uint256 length){
        amount = _totalLocked[locked];
        length = _locks[locked].length;
    }
}

contract VIX is ERC20, ERC20Burnable, ERC20Lockable {

    constructor() ERC20("VIXCO", "VIX") {
        _mint(msg.sender, 2000000000 * (10 ** decimals()));
    }

    function transfer(address to, uint256 amount) public checkLock(msg.sender, amount) override returns (bool) {
        return super.transfer(to, amount);
    }

    function transferFrom(address from, address to, uint256 amount) public checkLock(from, amount) override returns (bool) {
        return super.transferFrom(from, to, amount);
    }

    function balanceOf(address holder) public view override returns (uint256 balance) {
        uint256 totalBalance = super.balanceOf(holder);
        uint256 avaliableBalance = 0;
        (uint256 lockedBalance, uint256 lockedLength) = totalLocked(holder);
        require(totalBalance >= lockedBalance);

        if (lockedLength > 0) {
            for (uint i = 0; i < lockedLength; i++) {
                (uint256 releaseTime, uint256 amount) = lockInfo(holder, i);
                if (releaseTime <= block.timestamp) {
                    avaliableBalance += amount;
                }
            }
        }

        balance = totalBalance - lockedBalance + avaliableBalance;
    }

    function balanceOfTotal(address holder) public view returns (uint256 balance) {
        balance = super.balanceOf(holder);
    }

    function _beforeTokenTransfer(address from, address to, uint256 amount) internal override {
        super._beforeTokenTransfer(from, to, amount);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"releaseTime","type":"uint256"}],"name":"Lock","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Unlock","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"}],"name":"autoUnlock","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"}],"name":"balanceOfTotal","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnFrom","outputs":[],"stateMutability":"nonpayable","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":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"releaseTime","type":"uint256"}],"name":"lock","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"locked","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"lockInfo","outputs":[{"internalType":"uint256","name":"releaseTime","type":"uint256"},{"internalType":"uint256","name":"amount","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":[{"internalType":"address","name":"from","type":"address"}],"name":"releaseLock","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"locked","type":"address"}],"name":"totalLocked","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"length","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"releaseTime","type":"uint256"}],"name":"transferWithLock","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"idx","type":"uint256"}],"name":"unlock","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"}]

60806040523480156200001157600080fd5b506040518060400160405280600581526020017f564958434f0000000000000000000000000000000000000000000000000000008152506040518060400160405280600381526020017f564958000000000000000000000000000000000000000000000000000000000081525081600390805190602001906200009692919062000341565b508060049080519060200190620000af92919062000341565b5050506000620000c4620001a960201b60201c565b905080600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350620001a33362000178620001b160201b60201c565b600a62000186919062000531565b63773594006200019791906200066e565b620001ba60201b60201c565b620007b0565b600033905090565b60006012905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156200022d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620002249062000429565b60405180910390fd5b62000241600083836200031f60201b60201c565b806002600082825462000255919062000479565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254620002ac919062000479565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200031391906200044b565b60405180910390a35050565b620003378383836200033c60201b620016081760201c565b505050565b505050565b8280546200034f90620006e6565b90600052602060002090601f016020900481019282620003735760008555620003bf565b82601f106200038e57805160ff1916838001178555620003bf565b82800160010185558215620003bf579182015b82811115620003be578251825591602001919060010190620003a1565b5b509050620003ce9190620003d2565b5090565b5b80821115620003ed576000816000905550600101620003d3565b5090565b600062000400601f8362000468565b91506200040d8262000787565b602082019050919050565b6200042381620006cf565b82525050565b600060208201905081810360008301526200044481620003f1565b9050919050565b600060208201905062000462600083018462000418565b92915050565b600082825260208201905092915050565b60006200048682620006cf565b91506200049383620006cf565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115620004cb57620004ca6200071c565b5b828201905092915050565b6000808291508390505b600185111562000528578086048111156200050057620004ff6200071c565b5b6001851615620005105780820291505b808102905062000520856200077a565b9450620004e0565b94509492505050565b60006200053e82620006cf565b91506200054b83620006d9565b92506200057a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000582565b905092915050565b60008262000594576001905062000667565b81620005a4576000905062000667565b8160018114620005bd5760028114620005c857620005fe565b600191505062000667565b60ff841115620005dd57620005dc6200071c565b5b8360020a915084821115620005f757620005f66200071c565b5b5062000667565b5060208310610133831016604e8410600b8410161715620006385782820a9050838111156200063257620006316200071c565b5b62000667565b620006478484846001620004d6565b925090508184048111156200066157620006606200071c565b5b81810290505b9392505050565b60006200067b82620006cf565b91506200068883620006cf565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615620006c457620006c36200071c565b5b828202905092915050565b6000819050919050565b600060ff82169050919050565b60006002820490506001821680620006ff57607f821691505b602082108114156200071657620007156200074b565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60008160011c9050919050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b61315380620007c06000396000f3fe608060405234801561001057600080fd5b50600436106101585760003560e01c806395d89b41116100c3578063d8fb93371161007c578063d8fb933714610416578063dd62ed3e14610447578063de6baccb14610477578063e20bc67b146104a7578063e2ab691d146104d7578063f2fde38b1461050757610158565b806395d89b4114610307578063a457c2d714610325578063a9059cbb14610355578063b2520a7c14610385578063d1c46916146103b6578063d29dad83146103e657610158565b806342966c681161011557806342966c681461024757806370a0823114610263578063715018a61461029357806379cc67901461029d5780637eee288d146102b95780638da5cb5b146102e957610158565b806306fdde031461015d578063095ea7b31461017b57806318160ddd146101ab57806323b872dd146101c9578063313ce567146101f95780633950935114610217575b600080fd5b610165610523565b604051610172919061274b565b60405180910390f35b610195600480360381019061019091906123b0565b6105b5565b6040516101a29190612730565b60405180910390f35b6101b36105d3565b6040516101c0919061296d565b60405180910390f35b6101e360048036038101906101de919061235d565b6105dd565b6040516101f09190612730565b60405180910390f35b61020161071e565b60405161020e91906129b1565b60405180910390f35b610231600480360381019061022c91906123b0565b610727565b60405161023e9190612730565b60405180910390f35b610261600480360381019061025c9190612443565b6107d3565b005b61027d600480360381019061027891906122f0565b6107e7565b60405161028a919061296d565b60405180910390f35b61029b610887565b005b6102b760048036038101906102b291906123b0565b6109c4565b005b6102d360048036038101906102ce91906123b0565b610a3f565b6040516102e09190612730565b60405180910390f35b6102f1610b56565b6040516102fe9190612715565b60405180910390f35b61030f610b80565b60405161031c919061274b565b60405180910390f35b61033f600480360381019061033a91906123b0565b610c12565b60405161034c9190612730565b60405180910390f35b61036f600480360381019061036a91906123b0565b610cfd565b60405161037c9190612730565b60405180910390f35b61039f600480360381019061039a91906123b0565b610e3c565b6040516103ad929190612988565b60405180910390f35b6103d060048036038101906103cb91906122f0565b610ed7565b6040516103dd9190612730565b60405180910390f35b61040060048036038101906103fb91906122f0565b61105f565b60405161040d919061296d565b60405180910390f35b610430600480360381019061042b91906122f0565b611071565b60405161043e929190612988565b60405180910390f35b610461600480360381019061045c919061231d565b611100565b60405161046e919061296d565b60405180910390f35b610491600480360381019061048c91906123f0565b611187565b60405161049e9190612730565b60405180910390f35b6104c160048036038101906104bc91906122f0565b611261565b6040516104ce9190612730565b60405180910390f35b6104f160048036038101906104ec91906123f0565b611346565b6040516104fe9190612730565b60405180910390f35b610521600480360381019061051c91906122f0565b61145c565b005b60606003805461053290612b24565b80601f016020809104026020016040519081016040528092919081815260200182805461055e90612b24565b80156105ab5780601f10610580576101008083540402835291602001916105ab565b820191906000526020600020905b81548152906001019060200180831161058e57829003601f168201915b5050505050905090565b60006105c96105c261160d565b8484611615565b6001905092915050565b6000600254905090565b600083826000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490509050600081111561063c5761063a83611261565b505b81600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461068791906129e8565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610707576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106fe9061278d565b60405180910390fd5b6107128787876117e0565b93505050509392505050565b60006012905090565b60006107c961073461160d565b84846001600061074261160d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546107c491906129e8565b611615565b6001905092915050565b6107e46107de61160d565b826118d8565b50565b6000806107f383611aa3565b90506000808061080286611071565b915091508184101561081357600080fd5b60008111156108655760005b81811015610863576000806108348984610e3c565b9150915042821161084e57808661084b91906129e8565b95505b5050808061085b90612b56565b91505061081f565b505b8282856108729190612a3e565b61087c91906129e8565b945050505050919050565b61088f61160d565b73ffffffffffffffffffffffffffffffffffffffff166108ad610b56565b73ffffffffffffffffffffffffffffffffffffffff1614610903576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108fa906128ad565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60006109d7836109d261160d565b611100565b905081811015610a1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a13906128cd565b60405180910390fd5b610a3083610a2861160d565b848403611615565b610a3a83836118d8565b505050565b6000610a4961160d565b73ffffffffffffffffffffffffffffffffffffffff16610a67610b56565b73ffffffffffffffffffffffffffffffffffffffff1614610abd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ab4906128ad565b60405180910390fd5b81600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054905011610b41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b389061282d565b60405180910390fd5b610b4b8383611aeb565b506001905092915050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610b8f90612b24565b80601f0160208091040260200160405190810160405280929190818152602001828054610bbb90612b24565b8015610c085780601f10610bdd57610100808354040283529160200191610c08565b820191906000526020600020905b815481529060010190602001808311610beb57829003601f168201915b5050505050905090565b60008060016000610c2161160d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610cde576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd59061294d565b60405180910390fd5b610cf2610ce961160d565b85858403611615565b600191505092915050565b600033826000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054905090506000811115610d5c57610d5a83611261565b505b81600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610da791906129e8565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610e27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1e9061278d565b60405180910390fd5b610e318686611dd9565b935050505092915050565b6000806000600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208481548110610e9257610e91612c2c565b5b90600052602060002090600202016040518060400160405290816000820154815260200160018201548152505090508060000151925080602001519150509250929050565b6000610ee161160d565b73ffffffffffffffffffffffffffffffffffffffff16610eff610b56565b73ffffffffffffffffffffffffffffffffffffffff1614610f55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4c906128ad565b60405180910390fd5b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054905011610fda576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fd19061282d565b60405180910390fd5b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054905090505b6000811115611055576110418360018361103c9190612a3e565b611aeb565b50808061104d90612afa565b915050611022565b5060019050919050565b600061106a82611aa3565b9050919050565b600080600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549150600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490509050915091565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600061119161160d565b73ffffffffffffffffffffffffffffffffffffffff166111af610b56565b73ffffffffffffffffffffffffffffffffffffffff1614611205576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111fc906128ad565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141561123f57600080fd5b61124a338585611df7565b61125584848461206d565b50600190509392505050565b600080600090505b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054905081101561133c5742600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020828154811061130557611304612c2c565b5b9060005260206000209060020201600001541015611329576113278382611aeb565b505b808061133490612b56565b915050611269565b5060019050919050565b600061135061160d565b73ffffffffffffffffffffffffffffffffffffffff1661136e610b56565b73ffffffffffffffffffffffffffffffffffffffff16146113c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113bb906128ad565b60405180910390fd5b826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015611445576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143c9061286d565b60405180910390fd5b61145084848461206d565b50600190509392505050565b61146461160d565b73ffffffffffffffffffffffffffffffffffffffff16611482610b56565b73ffffffffffffffffffffffffffffffffffffffff16146114d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114cf906128ad565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611548576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161153f906127ed565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b505050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611685576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167c9061292d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156116f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ec9061280d565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516117d3919061296d565b60405180910390a3505050565b60006117ed848484611df7565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061183861160d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156118b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118af9061288d565b60405180910390fd5b6118cc856118c461160d565b858403611615565b60019150509392505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611948576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193f906128ed565b60405180910390fd5b611954826000836122b6565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156119da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119d1906127ad565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508160026000828254611a319190612a3e565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611a96919061296d565b60405180910390a3505050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600080600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208381548110611b3f57611b3e612c2c565b5b906000526020600020906002020190508060010154600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611b9e9190612a3e565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff167f6381d9813cabeb57471b5a7e05078e64845ccdb563146a6911d536f24ce960f18260010154604051611c2b919061296d565b60405180910390a2600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050611cc19190612a3e565b81548110611cd257611cd1612c2c565b5b9060005260206000209060020201600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208481548110611d3157611d30612c2c565b5b90600052602060002090600202016000820154816000015560018201548160010155905050600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805480611da557611da4612bfd565b5b6001900381819060005260206000209060020201600080820160009055600182016000905550509055600191505092915050565b6000611ded611de661160d565b8484611df7565b6001905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611e67576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e5e9061290d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611ed7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ece9061276d565b60405180910390fd5b611ee28383836122b6565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611f68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f5f9061284d565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611ffb91906129e8565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161205f919061296d565b60405180910390a350505050565b6000600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836120ba91906129e8565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561213a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612131906127cd565b60405180910390fd5b82600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461218591906129e8565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060400160405280848152602001858152509080600181540180825580915050600190039060005260206000209060020201600090919091909150600082015181600001556020820151816001015550508373ffffffffffffffffffffffffffffffffffffffff167f49eaf4942f1237055eb4cfa5f31c9dfe50d5b4ade01e021f7de8be2fbbde557b84846040516122a3929190612988565b60405180910390a2600190509392505050565b6122c1838383611608565b505050565b6000813590506122d5816130ef565b92915050565b6000813590506122ea81613106565b92915050565b60006020828403121561230657612305612c5b565b5b6000612314848285016122c6565b91505092915050565b6000806040838503121561233457612333612c5b565b5b6000612342858286016122c6565b9250506020612353858286016122c6565b9150509250929050565b60008060006060848603121561237657612375612c5b565b5b6000612384868287016122c6565b9350506020612395868287016122c6565b92505060406123a6868287016122db565b9150509250925092565b600080604083850312156123c7576123c6612c5b565b5b60006123d5858286016122c6565b92505060206123e6858286016122db565b9150509250929050565b60008060006060848603121561240957612408612c5b565b5b6000612417868287016122c6565b9350506020612428868287016122db565b9250506040612439868287016122db565b9150509250925092565b60006020828403121561245957612458612c5b565b5b6000612467848285016122db565b91505092915050565b61247981612a72565b82525050565b61248881612a84565b82525050565b6000612499826129cc565b6124a381856129d7565b93506124b3818560208601612ac7565b6124bc81612c60565b840191505092915050565b60006124d46023836129d7565b91506124df82612c71565b604082019050919050565b60006124f7601a836129d7565b915061250282612cc0565b602082019050919050565b600061251a6022836129d7565b915061252582612ce9565b604082019050919050565b600061253d6032836129d7565b915061254882612d38565b604082019050919050565b60006125606026836129d7565b915061256b82612d87565b604082019050919050565b60006125836022836129d7565b915061258e82612dd6565b604082019050919050565b60006125a66017836129d7565b91506125b182612e25565b602082019050919050565b60006125c96026836129d7565b91506125d482612e4e565b604082019050919050565b60006125ec6026836129d7565b91506125f782612e9d565b604082019050919050565b600061260f6028836129d7565b915061261a82612eec565b604082019050919050565b60006126326020836129d7565b915061263d82612f3b565b602082019050919050565b60006126556024836129d7565b915061266082612f64565b604082019050919050565b60006126786021836129d7565b915061268382612fb3565b604082019050919050565b600061269b6025836129d7565b91506126a682613002565b604082019050919050565b60006126be6024836129d7565b91506126c982613051565b604082019050919050565b60006126e16025836129d7565b91506126ec826130a0565b604082019050919050565b61270081612ab0565b82525050565b61270f81612aba565b82525050565b600060208201905061272a6000830184612470565b92915050565b6000602082019050612745600083018461247f565b92915050565b60006020820190508181036000830152612765818461248e565b905092915050565b60006020820190508181036000830152612786816124c7565b9050919050565b600060208201905081810360008301526127a6816124ea565b9050919050565b600060208201905081810360008301526127c68161250d565b9050919050565b600060208201905081810360008301526127e681612530565b9050919050565b6000602082019050818103600083015261280681612553565b9050919050565b6000602082019050818103600083015261282681612576565b9050919050565b6000602082019050818103600083015261284681612599565b9050919050565b60006020820190508181036000830152612866816125bc565b9050919050565b60006020820190508181036000830152612886816125df565b9050919050565b600060208201905081810360008301526128a681612602565b9050919050565b600060208201905081810360008301526128c681612625565b9050919050565b600060208201905081810360008301526128e681612648565b9050919050565b600060208201905081810360008301526129068161266b565b9050919050565b600060208201905081810360008301526129268161268e565b9050919050565b60006020820190508181036000830152612946816126b1565b9050919050565b60006020820190508181036000830152612966816126d4565b9050919050565b600060208201905061298260008301846126f7565b92915050565b600060408201905061299d60008301856126f7565b6129aa60208301846126f7565b9392505050565b60006020820190506129c66000830184612706565b92915050565b600081519050919050565b600082825260208201905092915050565b60006129f382612ab0565b91506129fe83612ab0565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115612a3357612a32612b9f565b5b828201905092915050565b6000612a4982612ab0565b9150612a5483612ab0565b925082821015612a6757612a66612b9f565b5b828203905092915050565b6000612a7d82612a90565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b83811015612ae5578082015181840152602081019050612aca565b83811115612af4576000848401525b50505050565b6000612b0582612ab0565b91506000821415612b1957612b18612b9f565b5b600182039050919050565b60006002820490506001821680612b3c57607f821691505b60208210811415612b5057612b4f612bce565b5b50919050565b6000612b6182612ab0565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415612b9457612b93612b9f565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f636865636b4c6f636b203a2062616c616e636520657863656564000000000000600082015250565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b7f6c6f636b203a206c6f636b656420746f74616c2073686f756c6420626520736d60008201527f616c6c6572207468616e2062616c616e63650000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f5468657265206973206e6f74206c6f636b20696e666f2e000000000000000000600082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b7f5468657265206973206e6f7420656e6f7567682062616c616e6365206f66206860008201527f6f6c6465722e0000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f45524332303a206275726e20616d6f756e74206578636565647320616c6c6f7760008201527f616e636500000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6130f881612a72565b811461310357600080fd5b50565b61310f81612ab0565b811461311a57600080fd5b5056fea26469706673582212209b6aac36dd47e4b9e99a4e981c8b62324dae0f2754103733d6206ba5c2e90f0464736f6c63430008050033

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101585760003560e01c806395d89b41116100c3578063d8fb93371161007c578063d8fb933714610416578063dd62ed3e14610447578063de6baccb14610477578063e20bc67b146104a7578063e2ab691d146104d7578063f2fde38b1461050757610158565b806395d89b4114610307578063a457c2d714610325578063a9059cbb14610355578063b2520a7c14610385578063d1c46916146103b6578063d29dad83146103e657610158565b806342966c681161011557806342966c681461024757806370a0823114610263578063715018a61461029357806379cc67901461029d5780637eee288d146102b95780638da5cb5b146102e957610158565b806306fdde031461015d578063095ea7b31461017b57806318160ddd146101ab57806323b872dd146101c9578063313ce567146101f95780633950935114610217575b600080fd5b610165610523565b604051610172919061274b565b60405180910390f35b610195600480360381019061019091906123b0565b6105b5565b6040516101a29190612730565b60405180910390f35b6101b36105d3565b6040516101c0919061296d565b60405180910390f35b6101e360048036038101906101de919061235d565b6105dd565b6040516101f09190612730565b60405180910390f35b61020161071e565b60405161020e91906129b1565b60405180910390f35b610231600480360381019061022c91906123b0565b610727565b60405161023e9190612730565b60405180910390f35b610261600480360381019061025c9190612443565b6107d3565b005b61027d600480360381019061027891906122f0565b6107e7565b60405161028a919061296d565b60405180910390f35b61029b610887565b005b6102b760048036038101906102b291906123b0565b6109c4565b005b6102d360048036038101906102ce91906123b0565b610a3f565b6040516102e09190612730565b60405180910390f35b6102f1610b56565b6040516102fe9190612715565b60405180910390f35b61030f610b80565b60405161031c919061274b565b60405180910390f35b61033f600480360381019061033a91906123b0565b610c12565b60405161034c9190612730565b60405180910390f35b61036f600480360381019061036a91906123b0565b610cfd565b60405161037c9190612730565b60405180910390f35b61039f600480360381019061039a91906123b0565b610e3c565b6040516103ad929190612988565b60405180910390f35b6103d060048036038101906103cb91906122f0565b610ed7565b6040516103dd9190612730565b60405180910390f35b61040060048036038101906103fb91906122f0565b61105f565b60405161040d919061296d565b60405180910390f35b610430600480360381019061042b91906122f0565b611071565b60405161043e929190612988565b60405180910390f35b610461600480360381019061045c919061231d565b611100565b60405161046e919061296d565b60405180910390f35b610491600480360381019061048c91906123f0565b611187565b60405161049e9190612730565b60405180910390f35b6104c160048036038101906104bc91906122f0565b611261565b6040516104ce9190612730565b60405180910390f35b6104f160048036038101906104ec91906123f0565b611346565b6040516104fe9190612730565b60405180910390f35b610521600480360381019061051c91906122f0565b61145c565b005b60606003805461053290612b24565b80601f016020809104026020016040519081016040528092919081815260200182805461055e90612b24565b80156105ab5780601f10610580576101008083540402835291602001916105ab565b820191906000526020600020905b81548152906001019060200180831161058e57829003601f168201915b5050505050905090565b60006105c96105c261160d565b8484611615565b6001905092915050565b6000600254905090565b600083826000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490509050600081111561063c5761063a83611261565b505b81600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461068791906129e8565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610707576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106fe9061278d565b60405180910390fd5b6107128787876117e0565b93505050509392505050565b60006012905090565b60006107c961073461160d565b84846001600061074261160d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546107c491906129e8565b611615565b6001905092915050565b6107e46107de61160d565b826118d8565b50565b6000806107f383611aa3565b90506000808061080286611071565b915091508184101561081357600080fd5b60008111156108655760005b81811015610863576000806108348984610e3c565b9150915042821161084e57808661084b91906129e8565b95505b5050808061085b90612b56565b91505061081f565b505b8282856108729190612a3e565b61087c91906129e8565b945050505050919050565b61088f61160d565b73ffffffffffffffffffffffffffffffffffffffff166108ad610b56565b73ffffffffffffffffffffffffffffffffffffffff1614610903576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108fa906128ad565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60006109d7836109d261160d565b611100565b905081811015610a1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a13906128cd565b60405180910390fd5b610a3083610a2861160d565b848403611615565b610a3a83836118d8565b505050565b6000610a4961160d565b73ffffffffffffffffffffffffffffffffffffffff16610a67610b56565b73ffffffffffffffffffffffffffffffffffffffff1614610abd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ab4906128ad565b60405180910390fd5b81600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054905011610b41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b389061282d565b60405180910390fd5b610b4b8383611aeb565b506001905092915050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610b8f90612b24565b80601f0160208091040260200160405190810160405280929190818152602001828054610bbb90612b24565b8015610c085780601f10610bdd57610100808354040283529160200191610c08565b820191906000526020600020905b815481529060010190602001808311610beb57829003601f168201915b5050505050905090565b60008060016000610c2161160d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610cde576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd59061294d565b60405180910390fd5b610cf2610ce961160d565b85858403611615565b600191505092915050565b600033826000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054905090506000811115610d5c57610d5a83611261565b505b81600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610da791906129e8565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610e27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1e9061278d565b60405180910390fd5b610e318686611dd9565b935050505092915050565b6000806000600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208481548110610e9257610e91612c2c565b5b90600052602060002090600202016040518060400160405290816000820154815260200160018201548152505090508060000151925080602001519150509250929050565b6000610ee161160d565b73ffffffffffffffffffffffffffffffffffffffff16610eff610b56565b73ffffffffffffffffffffffffffffffffffffffff1614610f55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4c906128ad565b60405180910390fd5b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054905011610fda576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fd19061282d565b60405180910390fd5b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054905090505b6000811115611055576110418360018361103c9190612a3e565b611aeb565b50808061104d90612afa565b915050611022565b5060019050919050565b600061106a82611aa3565b9050919050565b600080600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549150600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490509050915091565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600061119161160d565b73ffffffffffffffffffffffffffffffffffffffff166111af610b56565b73ffffffffffffffffffffffffffffffffffffffff1614611205576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111fc906128ad565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141561123f57600080fd5b61124a338585611df7565b61125584848461206d565b50600190509392505050565b600080600090505b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054905081101561133c5742600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020828154811061130557611304612c2c565b5b9060005260206000209060020201600001541015611329576113278382611aeb565b505b808061133490612b56565b915050611269565b5060019050919050565b600061135061160d565b73ffffffffffffffffffffffffffffffffffffffff1661136e610b56565b73ffffffffffffffffffffffffffffffffffffffff16146113c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113bb906128ad565b60405180910390fd5b826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015611445576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143c9061286d565b60405180910390fd5b61145084848461206d565b50600190509392505050565b61146461160d565b73ffffffffffffffffffffffffffffffffffffffff16611482610b56565b73ffffffffffffffffffffffffffffffffffffffff16146114d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114cf906128ad565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611548576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161153f906127ed565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b505050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611685576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167c9061292d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156116f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ec9061280d565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516117d3919061296d565b60405180910390a3505050565b60006117ed848484611df7565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061183861160d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156118b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118af9061288d565b60405180910390fd5b6118cc856118c461160d565b858403611615565b60019150509392505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611948576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193f906128ed565b60405180910390fd5b611954826000836122b6565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156119da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119d1906127ad565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508160026000828254611a319190612a3e565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611a96919061296d565b60405180910390a3505050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600080600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208381548110611b3f57611b3e612c2c565b5b906000526020600020906002020190508060010154600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611b9e9190612a3e565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff167f6381d9813cabeb57471b5a7e05078e64845ccdb563146a6911d536f24ce960f18260010154604051611c2b919061296d565b60405180910390a2600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050611cc19190612a3e565b81548110611cd257611cd1612c2c565b5b9060005260206000209060020201600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208481548110611d3157611d30612c2c565b5b90600052602060002090600202016000820154816000015560018201548160010155905050600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805480611da557611da4612bfd565b5b6001900381819060005260206000209060020201600080820160009055600182016000905550509055600191505092915050565b6000611ded611de661160d565b8484611df7565b6001905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611e67576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e5e9061290d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611ed7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ece9061276d565b60405180910390fd5b611ee28383836122b6565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611f68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f5f9061284d565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611ffb91906129e8565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161205f919061296d565b60405180910390a350505050565b6000600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836120ba91906129e8565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561213a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612131906127cd565b60405180910390fd5b82600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461218591906129e8565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060400160405280848152602001858152509080600181540180825580915050600190039060005260206000209060020201600090919091909150600082015181600001556020820151816001015550508373ffffffffffffffffffffffffffffffffffffffff167f49eaf4942f1237055eb4cfa5f31c9dfe50d5b4ade01e021f7de8be2fbbde557b84846040516122a3929190612988565b60405180910390a2600190509392505050565b6122c1838383611608565b505050565b6000813590506122d5816130ef565b92915050565b6000813590506122ea81613106565b92915050565b60006020828403121561230657612305612c5b565b5b6000612314848285016122c6565b91505092915050565b6000806040838503121561233457612333612c5b565b5b6000612342858286016122c6565b9250506020612353858286016122c6565b9150509250929050565b60008060006060848603121561237657612375612c5b565b5b6000612384868287016122c6565b9350506020612395868287016122c6565b92505060406123a6868287016122db565b9150509250925092565b600080604083850312156123c7576123c6612c5b565b5b60006123d5858286016122c6565b92505060206123e6858286016122db565b9150509250929050565b60008060006060848603121561240957612408612c5b565b5b6000612417868287016122c6565b9350506020612428868287016122db565b9250506040612439868287016122db565b9150509250925092565b60006020828403121561245957612458612c5b565b5b6000612467848285016122db565b91505092915050565b61247981612a72565b82525050565b61248881612a84565b82525050565b6000612499826129cc565b6124a381856129d7565b93506124b3818560208601612ac7565b6124bc81612c60565b840191505092915050565b60006124d46023836129d7565b91506124df82612c71565b604082019050919050565b60006124f7601a836129d7565b915061250282612cc0565b602082019050919050565b600061251a6022836129d7565b915061252582612ce9565b604082019050919050565b600061253d6032836129d7565b915061254882612d38565b604082019050919050565b60006125606026836129d7565b915061256b82612d87565b604082019050919050565b60006125836022836129d7565b915061258e82612dd6565b604082019050919050565b60006125a66017836129d7565b91506125b182612e25565b602082019050919050565b60006125c96026836129d7565b91506125d482612e4e565b604082019050919050565b60006125ec6026836129d7565b91506125f782612e9d565b604082019050919050565b600061260f6028836129d7565b915061261a82612eec565b604082019050919050565b60006126326020836129d7565b915061263d82612f3b565b602082019050919050565b60006126556024836129d7565b915061266082612f64565b604082019050919050565b60006126786021836129d7565b915061268382612fb3565b604082019050919050565b600061269b6025836129d7565b91506126a682613002565b604082019050919050565b60006126be6024836129d7565b91506126c982613051565b604082019050919050565b60006126e16025836129d7565b91506126ec826130a0565b604082019050919050565b61270081612ab0565b82525050565b61270f81612aba565b82525050565b600060208201905061272a6000830184612470565b92915050565b6000602082019050612745600083018461247f565b92915050565b60006020820190508181036000830152612765818461248e565b905092915050565b60006020820190508181036000830152612786816124c7565b9050919050565b600060208201905081810360008301526127a6816124ea565b9050919050565b600060208201905081810360008301526127c68161250d565b9050919050565b600060208201905081810360008301526127e681612530565b9050919050565b6000602082019050818103600083015261280681612553565b9050919050565b6000602082019050818103600083015261282681612576565b9050919050565b6000602082019050818103600083015261284681612599565b9050919050565b60006020820190508181036000830152612866816125bc565b9050919050565b60006020820190508181036000830152612886816125df565b9050919050565b600060208201905081810360008301526128a681612602565b9050919050565b600060208201905081810360008301526128c681612625565b9050919050565b600060208201905081810360008301526128e681612648565b9050919050565b600060208201905081810360008301526129068161266b565b9050919050565b600060208201905081810360008301526129268161268e565b9050919050565b60006020820190508181036000830152612946816126b1565b9050919050565b60006020820190508181036000830152612966816126d4565b9050919050565b600060208201905061298260008301846126f7565b92915050565b600060408201905061299d60008301856126f7565b6129aa60208301846126f7565b9392505050565b60006020820190506129c66000830184612706565b92915050565b600081519050919050565b600082825260208201905092915050565b60006129f382612ab0565b91506129fe83612ab0565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115612a3357612a32612b9f565b5b828201905092915050565b6000612a4982612ab0565b9150612a5483612ab0565b925082821015612a6757612a66612b9f565b5b828203905092915050565b6000612a7d82612a90565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b83811015612ae5578082015181840152602081019050612aca565b83811115612af4576000848401525b50505050565b6000612b0582612ab0565b91506000821415612b1957612b18612b9f565b5b600182039050919050565b60006002820490506001821680612b3c57607f821691505b60208210811415612b5057612b4f612bce565b5b50919050565b6000612b6182612ab0565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415612b9457612b93612b9f565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f636865636b4c6f636b203a2062616c616e636520657863656564000000000000600082015250565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b7f6c6f636b203a206c6f636b656420746f74616c2073686f756c6420626520736d60008201527f616c6c6572207468616e2062616c616e63650000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f5468657265206973206e6f74206c6f636b20696e666f2e000000000000000000600082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b7f5468657265206973206e6f7420656e6f7567682062616c616e6365206f66206860008201527f6f6c6465722e0000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f45524332303a206275726e20616d6f756e74206578636565647320616c6c6f7760008201527f616e636500000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6130f881612a72565b811461310357600080fd5b50565b61310f81612ab0565b811461311a57600080fd5b5056fea26469706673582212209b6aac36dd47e4b9e99a4e981c8b62324dae0f2754103733d6206ba5c2e90f0464736f6c63430008050033

Deployed Bytecode Sourcemap

10983:1532:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2714:100;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3628:169;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3035:108;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11324:181;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2934:93;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4293:215;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7053:91;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11513:700;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1000:148;;;:::i;:::-;;7152:356;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9617:217;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;777:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2822:104;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4516:401;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11157:159;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10541:249;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;9842:379;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12221:130;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10798:178;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;3469:151;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10229:304;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9323:286;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9041:274;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1156:244;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2714:100;2768:13;2801:5;2794:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2714:100;:::o;3628:169::-;3711:4;3728:39;3737:12;:10;:12::i;:::-;3751:7;3760:6;3728:8;:39::i;:::-;3785:4;3778:11;;3628:169;;;;:::o;3035:108::-;3096:7;3123:12;;3116:19;;3035:108;:::o;11324:181::-;11437:4;11405;11411:6;7967:14;7984:6;:12;7991:4;7984:12;;;;;;;;;;;;;;;:19;;;;7967:36;;8027:1;8018:6;:10;8014:59;;;8045:16;8056:4;8045:10;:16::i;:::-;;8014:59;8131:6;8110:12;:18;8123:4;8110:18;;;;;;;;;;;;;;;;:27;;;;:::i;:::-;8091:9;:15;8101:4;8091:15;;;;;;;;;;;;;;;;:46;;8083:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;11461:36:::1;11480:4;11486:2;11490:6;11461:18;:36::i;:::-;11454:43;;7956:232:::0;11324:181;;;;;;;:::o;2934:93::-;2992:5;3017:2;3010:9;;2934:93;:::o;4293:215::-;4381:4;4398:80;4407:12;:10;:12::i;:::-;4421:7;4467:10;4430:11;:25;4442:12;:10;:12::i;:::-;4430:25;;;;;;;;;;;;;;;:34;4456:7;4430:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;4398:8;:80::i;:::-;4496:4;4489:11;;4293:215;;;;:::o;7053:91::-;7109:27;7115:12;:10;:12::i;:::-;7129:6;7109:5;:27::i;:::-;7053:91;:::o;11513:700::-;11578:15;11606:20;11629:23;11645:6;11629:15;:23::i;:::-;11606:46;;11663:24;11703:21;11726:20;11750:19;11762:6;11750:11;:19::i;:::-;11702:67;;;;11804:13;11788:12;:29;;11780:38;;;;;;11850:1;11835:12;:16;11831:305;;;11873:6;11868:257;11889:12;11885:1;:16;11868:257;;;11928:19;11949:14;11967:19;11976:6;11984:1;11967:8;:19::i;:::-;11927:59;;;;12024:15;12009:11;:30;12005:105;;12084:6;12064:26;;;;;:::i;:::-;;;12005:105;11908:217;;11903:3;;;;;:::i;:::-;;;;11868:257;;;;11831:305;12189:16;12173:13;12158:12;:28;;;;:::i;:::-;:47;;;;:::i;:::-;12148:57;;11595:618;;;;11513:700;;;:::o;1000:148::-;923:12;:10;:12::i;:::-;912:23;;:7;:5;:7::i;:::-;:23;;;904:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1107:1:::1;1070:40;;1091:6;;;;;;;;;;;1070:40;;;;;;;;;;;;1138:1;1121:6;;:19;;;;;;;;;;;;;;;;;;1000:148::o:0;7152:356::-;7229:24;7256:32;7266:7;7275:12;:10;:12::i;:::-;7256:9;:32::i;:::-;7229:59;;7327:6;7307:16;:26;;7299:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;7402:58;7411:7;7420:12;:10;:12::i;:::-;7453:6;7434:16;:25;7402:8;:58::i;:::-;7478:22;7484:7;7493:6;7478:5;:22::i;:::-;7218:290;7152:356;;:::o;9617:217::-;9686:12;923;:10;:12::i;:::-;912:23;;:7;:5;:7::i;:::-;:23;;;904:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9741:3:::1;9719:6;:12;9726:4;9719:12;;;;;;;;;;;;;;;:19;;;;:25;9711:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;9783:18;9791:4;9797:3;9783:7;:18::i;:::-;;9822:4;9812:14;;9617:217:::0;;;;:::o;777:87::-;823:7;850:6;;;;;;;;;;;843:13;;777:87;:::o;2822:104::-;2878:13;2911:7;2904:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2822:104;:::o;4516:401::-;4609:4;4626:24;4653:11;:25;4665:12;:10;:12::i;:::-;4653:25;;;;;;;;;;;;;;;:34;4679:7;4653:34;;;;;;;;;;;;;;;;4626:61;;4726:15;4706:16;:35;;4698:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;4811:67;4820:12;:10;:12::i;:::-;4834:7;4862:15;4843:16;:34;4811:8;:67::i;:::-;4905:4;4898:11;;;4516:401;;;;:::o;11157:159::-;11258:4;11220:10;11232:6;7967:14;7984:6;:12;7991:4;7984:12;;;;;;;;;;;;;;;:19;;;;7967:36;;8027:1;8018:6;:10;8014:59;;;8045:16;8056:4;8045:10;:16::i;:::-;;8014:59;8131:6;8110:12;:18;8123:4;8110:18;;;;;;;;;;;;;;;;:27;;;;:::i;:::-;8091:9;:15;8101:4;8091:15;;;;;;;;;;;;;;;;:46;;8083:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;11282:26:::1;11297:2;11301:6;11282:14;:26::i;:::-;11275:33;;7956:232:::0;11157:159;;;;;;:::o;10541:249::-;10611:19;10632:14;10664:20;10687:6;:14;10694:6;10687:14;;;;;;;;;;;;;;;10702:5;10687:21;;;;;;;;:::i;:::-;;;;;;;;;;;;10664:44;;;;;;;;;;;;;;;;;;;;;;;;;;;10733:4;:17;;;10719:31;;10770:4;:12;;;10761:21;;10653:137;10541:249;;;;;:::o;9842:379::-;9905:12;923;:10;:12::i;:::-;912:23;;:7;:5;:7::i;:::-;:23;;;904:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9959:1:::1;9937:6;:12;9944:4;9937:12;;;;;;;;;;;;;;;:19;;;;:23;9929:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;10097:9;10109:6;:12;10116:4;10109:12;;;;;;;;;;;;;;;:19;;;;10097:31;;10092:97;10134:1;10130;:5;10092:97;;;10157:20;10165:4;10175:1;10171;:5;;;;:::i;:::-;10157:7;:20::i;:::-;;10137:3;;;;;:::i;:::-;;;;10092:97;;;;10209:4;10199:14;;9842:379:::0;;;:::o;12221:130::-;12282:15;12320:23;12336:6;12320:15;:23::i;:::-;12310:33;;12221:130;;;:::o;10798:178::-;10856:14;10872;10907:12;:20;10920:6;10907:20;;;;;;;;;;;;;;;;10898:29;;10947:6;:14;10954:6;10947:14;;;;;;;;;;;;;;;:21;;;;10938:30;;10798:178;;;:::o;3469:151::-;3558:7;3585:11;:18;3597:5;3585:18;;;;;;;;;;;;;;;:27;3604:7;3585:27;;;;;;;;;;;;;;;;3578:34;;3469:151;;;;:::o;10229:304::-;10339:12;923;:10;:12::i;:::-;912:23;;:7;:5;:7::i;:::-;:23;;;904:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10398:1:::1;10377:23;;:9;:23;;;;10369:32;;;::::0;::::1;;10412:40;10422:10;10434:9;10445:6;10412:9;:40::i;:::-;10463:37;10469:9;10480:6;10488:11;10463:5;:37::i;:::-;;10521:4;10511:14;;10229:304:::0;;;;;:::o;9323:286::-;9373:12;9403:9;9415:1;9403:13;;9398:179;9422:6;:12;9429:4;9422:12;;;;;;;;;;;;;;;:19;;;;9418:1;:23;9398:179;;;9498:15;9467:6;:12;9474:4;9467:12;;;;;;;;;;;;;;;9480:1;9467:15;;;;;;;;:::i;:::-;;;;;;;;;;;;:28;;;:46;9463:103;;;9534:16;9542:4;9548:1;9534:7;:16::i;:::-;;9463:103;9443:3;;;;;:::i;:::-;;;;9398:179;;;;9597:4;9587:14;;9323:286;;;:::o;9041:274::-;9137:4;923:12;:10;:12::i;:::-;912:23;;:7;:5;:7::i;:::-;:23;;;904:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9186:6:::1;9162:9;:20:::0;9172:9:::1;9162:20;;;;;;;;;;;;;;;;:30;;9154:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;9246:37;9252:9;9263:6;9271:11;9246:5;:37::i;:::-;;9303:4;9296:11;;9041:274:::0;;;;;:::o;1156:244::-;923:12;:10;:12::i;:::-;912:23;;:7;:5;:7::i;:::-;:23;;;904:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1265:1:::1;1245:22;;:8;:22;;;;1237:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;1355:8;1326:38;;1347:6;;;;;;;;;;;1326:38;;;;;;;;;;;;1384:8;1375:6;;:17;;;;;;;;;;;;;;;;;;1156:244:::0;:::o;6855:125::-;;;;:::o;92:98::-;145:7;172:10;165:17;;92:98;:::o;6467:380::-;6620:1;6603:19;;:5;:19;;;;6595:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6701:1;6682:21;;:7;:21;;;;6674:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6785:6;6755:11;:18;6767:5;6755:18;;;;;;;;;;;;;;;:27;6774:7;6755:27;;;;;;;;;;;;;;;:36;;;;6823:7;6807:32;;6816:5;6807:32;;;6832:6;6807:32;;;;;;:::i;:::-;;;;;;;;6467:380;;;:::o;3805:480::-;3945:4;3962:36;3972:6;3980:9;3991:6;3962:9;:36::i;:::-;4011:24;4038:11;:19;4050:6;4038:19;;;;;;;;;;;;;;;:33;4058:12;:10;:12::i;:::-;4038:33;;;;;;;;;;;;;;;;4011:60;;4110:6;4090:16;:26;;4082:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;4189:57;4198:6;4206:12;:10;:12::i;:::-;4239:6;4220:16;:25;4189:8;:57::i;:::-;4273:4;4266:11;;;3805:480;;;;;:::o;5941:518::-;6044:1;6025:21;;:7;:21;;;;6017:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6097:49;6118:7;6135:1;6139:6;6097:20;:49::i;:::-;6159:22;6184:9;:18;6194:7;6184:18;;;;;;;;;;;;;;;;6159:43;;6239:6;6221:14;:24;;6213:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;6350:6;6333:14;:23;6312:9;:18;6322:7;6312:18;;;;;;;;;;;;;;;:44;;;;6390:6;6374:12;;:22;;;;;;;:::i;:::-;;;;;;;;6440:1;6414:37;;6423:7;6414:37;;;6444:6;6414:37;;;;;;:::i;:::-;;;;;;;;6006:453;5941:518;;:::o;3151:127::-;3225:7;3252:9;:18;3262:7;3252:18;;;;;;;;;;;;;;;;3245:25;;3151:127;;;:::o;8662:371::-;8726:12;8751:21;8775:6;:12;8782:4;8775:12;;;;;;;;;;;;;;;8788:5;8775:19;;;;;;;;:::i;:::-;;;;;;;;;;;;8751:43;;8847:4;:12;;;8826;:18;8839:4;8826:18;;;;;;;;;;;;;;;;:33;;;;:::i;:::-;8805:12;:18;8818:4;8805:18;;;;;;;;;;;;;;;:54;;;;8882:4;8875:26;;;8888:4;:12;;;8875:26;;;;;;:::i;:::-;;;;;;;;8934:6;:12;8941:4;8934:12;;;;;;;;;;;;;;;8969:1;8947:6;:12;8954:4;8947:12;;;;;;;;;;;;;;;:19;;;;:23;;;;:::i;:::-;8934:37;;;;;;;;:::i;:::-;;;;;;;;;;;;8912:6;:12;8919:4;8912:12;;;;;;;;;;;;;;;8925:5;8912:19;;;;;;;;:::i;:::-;;;;;;;;;;;;:59;;;;;;;;;;;;;;;;;;;8982:6;:12;8989:4;8982:12;;;;;;;;;;;;;;;:18;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9021:4;9011:14;;8740:293;8662:371;;;;:::o;3286:175::-;3372:4;3389:42;3399:12;:10;:12::i;:::-;3413:9;3424:6;3389:9;:42::i;:::-;3449:4;3442:11;;3286:175;;;;:::o;4925:662::-;5083:1;5065:20;;:6;:20;;;;5057:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;5167:1;5146:23;;:9;:23;;;;5138:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;5222:47;5243:6;5251:9;5262:6;5222:20;:47::i;:::-;5282:21;5306:9;:17;5316:6;5306:17;;;;;;;;;;;;;;;;5282:41;;5359:6;5342:13;:23;;5334:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;5472:6;5456:13;:22;5436:9;:17;5446:6;5436:17;;;;;;;;;;;;;;;:42;;;;5520:6;5496:9;:20;5506:9;5496:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;5561:9;5544:35;;5553:6;5544:35;;;5572:6;5544:35;;;;;;:::i;:::-;;;;;;;;5046:541;4925:662;;;:::o;8196:458::-;8280:12;8360;:18;8373:4;8360:18;;;;;;;;;;;;;;;;8351:6;:27;;;;:::i;:::-;8332:9;:15;8342:4;8332:15;;;;;;;;;;;;;;;;:46;;8310:146;;;;;;;;;;;;:::i;:::-;;;;;;;;;8509:6;8488:12;:18;8501:4;8488:18;;;;;;;;;;;;;;;;:27;;;;:::i;:::-;8467:12;:18;8480:4;8467:18;;;;;;;;;;;;;;;:48;;;;8526:6;:12;8533:4;8526:12;;;;;;;;;;;;;;;8544:29;;;;;;;;8553:11;8544:29;;;;8566:6;8544:29;;;8526:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8595:4;8590:31;;;8601:6;8609:11;8590:31;;;;;;;:::i;:::-;;;;;;;;8642:4;8632:14;;8196:458;;;;;:::o;12359:153::-;12460:44;12487:4;12493:2;12497:6;12460:26;:44::i;:::-;12359:153;;;:::o;7:139:1:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;152:139::-;198:5;236:6;223:20;214:29;;252:33;279:5;252:33;:::i;:::-;204:87;;;;:::o;297:329::-;356:6;405:2;393:9;384:7;380:23;376:32;373:2;;;411:79;;:::i;:::-;373:2;531:1;556:53;601:7;592:6;581:9;577:22;556:53;:::i;:::-;546:63;;502:117;363:263;;;;:::o;632:474::-;700:6;708;757:2;745:9;736:7;732:23;728:32;725:2;;;763:79;;:::i;:::-;725:2;883:1;908:53;953:7;944:6;933:9;929:22;908:53;:::i;:::-;898:63;;854:117;1010:2;1036:53;1081:7;1072:6;1061:9;1057:22;1036:53;:::i;:::-;1026:63;;981:118;715:391;;;;;:::o;1112:619::-;1189:6;1197;1205;1254:2;1242:9;1233:7;1229:23;1225:32;1222:2;;;1260:79;;:::i;:::-;1222:2;1380:1;1405:53;1450:7;1441:6;1430:9;1426:22;1405:53;:::i;:::-;1395:63;;1351:117;1507:2;1533:53;1578:7;1569:6;1558:9;1554:22;1533:53;:::i;:::-;1523:63;;1478:118;1635:2;1661:53;1706:7;1697:6;1686:9;1682:22;1661:53;:::i;:::-;1651:63;;1606:118;1212:519;;;;;:::o;1737:474::-;1805:6;1813;1862:2;1850:9;1841:7;1837:23;1833:32;1830:2;;;1868:79;;:::i;:::-;1830:2;1988:1;2013:53;2058:7;2049:6;2038:9;2034:22;2013:53;:::i;:::-;2003:63;;1959:117;2115:2;2141:53;2186:7;2177:6;2166:9;2162:22;2141:53;:::i;:::-;2131:63;;2086:118;1820:391;;;;;:::o;2217:619::-;2294:6;2302;2310;2359:2;2347:9;2338:7;2334:23;2330:32;2327:2;;;2365:79;;:::i;:::-;2327:2;2485:1;2510:53;2555:7;2546:6;2535:9;2531:22;2510:53;:::i;:::-;2500:63;;2456:117;2612:2;2638:53;2683:7;2674:6;2663:9;2659:22;2638:53;:::i;:::-;2628:63;;2583:118;2740:2;2766:53;2811:7;2802:6;2791:9;2787:22;2766:53;:::i;:::-;2756:63;;2711:118;2317:519;;;;;:::o;2842:329::-;2901:6;2950:2;2938:9;2929:7;2925:23;2921:32;2918:2;;;2956:79;;:::i;:::-;2918:2;3076:1;3101:53;3146:7;3137:6;3126:9;3122:22;3101:53;:::i;:::-;3091:63;;3047:117;2908:263;;;;:::o;3177:118::-;3264:24;3282:5;3264:24;:::i;:::-;3259:3;3252:37;3242:53;;:::o;3301:109::-;3382:21;3397:5;3382:21;:::i;:::-;3377:3;3370:34;3360:50;;:::o;3416:364::-;3504:3;3532:39;3565:5;3532:39;:::i;:::-;3587:71;3651:6;3646:3;3587:71;:::i;:::-;3580:78;;3667:52;3712:6;3707:3;3700:4;3693:5;3689:16;3667:52;:::i;:::-;3744:29;3766:6;3744:29;:::i;:::-;3739:3;3735:39;3728:46;;3508:272;;;;;:::o;3786:366::-;3928:3;3949:67;4013:2;4008:3;3949:67;:::i;:::-;3942:74;;4025:93;4114:3;4025:93;:::i;:::-;4143:2;4138:3;4134:12;4127:19;;3932:220;;;:::o;4158:366::-;4300:3;4321:67;4385:2;4380:3;4321:67;:::i;:::-;4314:74;;4397:93;4486:3;4397:93;:::i;:::-;4515:2;4510:3;4506:12;4499:19;;4304:220;;;:::o;4530:366::-;4672:3;4693:67;4757:2;4752:3;4693:67;:::i;:::-;4686:74;;4769:93;4858:3;4769:93;:::i;:::-;4887:2;4882:3;4878:12;4871:19;;4676:220;;;:::o;4902:366::-;5044:3;5065:67;5129:2;5124:3;5065:67;:::i;:::-;5058:74;;5141:93;5230:3;5141:93;:::i;:::-;5259:2;5254:3;5250:12;5243:19;;5048:220;;;:::o;5274:366::-;5416:3;5437:67;5501:2;5496:3;5437:67;:::i;:::-;5430:74;;5513:93;5602:3;5513:93;:::i;:::-;5631:2;5626:3;5622:12;5615:19;;5420:220;;;:::o;5646:366::-;5788:3;5809:67;5873:2;5868:3;5809:67;:::i;:::-;5802:74;;5885:93;5974:3;5885:93;:::i;:::-;6003:2;5998:3;5994:12;5987:19;;5792:220;;;:::o;6018:366::-;6160:3;6181:67;6245:2;6240:3;6181:67;:::i;:::-;6174:74;;6257:93;6346:3;6257:93;:::i;:::-;6375:2;6370:3;6366:12;6359:19;;6164:220;;;:::o;6390:366::-;6532:3;6553:67;6617:2;6612:3;6553:67;:::i;:::-;6546:74;;6629:93;6718:3;6629:93;:::i;:::-;6747:2;6742:3;6738:12;6731:19;;6536:220;;;:::o;6762:366::-;6904:3;6925:67;6989:2;6984:3;6925:67;:::i;:::-;6918:74;;7001:93;7090:3;7001:93;:::i;:::-;7119:2;7114:3;7110:12;7103:19;;6908:220;;;:::o;7134:366::-;7276:3;7297:67;7361:2;7356:3;7297:67;:::i;:::-;7290:74;;7373:93;7462:3;7373:93;:::i;:::-;7491:2;7486:3;7482:12;7475:19;;7280:220;;;:::o;7506:366::-;7648:3;7669:67;7733:2;7728:3;7669:67;:::i;:::-;7662:74;;7745:93;7834:3;7745:93;:::i;:::-;7863:2;7858:3;7854:12;7847:19;;7652:220;;;:::o;7878:366::-;8020:3;8041:67;8105:2;8100:3;8041:67;:::i;:::-;8034:74;;8117:93;8206:3;8117:93;:::i;:::-;8235:2;8230:3;8226:12;8219:19;;8024:220;;;:::o;8250:366::-;8392:3;8413:67;8477:2;8472:3;8413:67;:::i;:::-;8406:74;;8489:93;8578:3;8489:93;:::i;:::-;8607:2;8602:3;8598:12;8591:19;;8396:220;;;:::o;8622:366::-;8764:3;8785:67;8849:2;8844:3;8785:67;:::i;:::-;8778:74;;8861:93;8950:3;8861:93;:::i;:::-;8979:2;8974:3;8970:12;8963:19;;8768:220;;;:::o;8994:366::-;9136:3;9157:67;9221:2;9216:3;9157:67;:::i;:::-;9150:74;;9233:93;9322:3;9233:93;:::i;:::-;9351:2;9346:3;9342:12;9335:19;;9140:220;;;:::o;9366:366::-;9508:3;9529:67;9593:2;9588:3;9529:67;:::i;:::-;9522:74;;9605:93;9694:3;9605:93;:::i;:::-;9723:2;9718:3;9714:12;9707:19;;9512:220;;;:::o;9738:118::-;9825:24;9843:5;9825:24;:::i;:::-;9820:3;9813:37;9803:53;;:::o;9862:112::-;9945:22;9961:5;9945:22;:::i;:::-;9940:3;9933:35;9923:51;;:::o;9980:222::-;10073:4;10111:2;10100:9;10096:18;10088:26;;10124:71;10192:1;10181:9;10177:17;10168:6;10124:71;:::i;:::-;10078:124;;;;:::o;10208:210::-;10295:4;10333:2;10322:9;10318:18;10310:26;;10346:65;10408:1;10397:9;10393:17;10384:6;10346:65;:::i;:::-;10300:118;;;;:::o;10424:313::-;10537:4;10575:2;10564:9;10560:18;10552:26;;10624:9;10618:4;10614:20;10610:1;10599:9;10595:17;10588:47;10652:78;10725:4;10716:6;10652:78;:::i;:::-;10644:86;;10542:195;;;;:::o;10743:419::-;10909:4;10947:2;10936:9;10932:18;10924:26;;10996:9;10990:4;10986:20;10982:1;10971:9;10967:17;10960:47;11024:131;11150:4;11024:131;:::i;:::-;11016:139;;10914:248;;;:::o;11168:419::-;11334:4;11372:2;11361:9;11357:18;11349:26;;11421:9;11415:4;11411:20;11407:1;11396:9;11392:17;11385:47;11449:131;11575:4;11449:131;:::i;:::-;11441:139;;11339:248;;;:::o;11593:419::-;11759:4;11797:2;11786:9;11782:18;11774:26;;11846:9;11840:4;11836:20;11832:1;11821:9;11817:17;11810:47;11874:131;12000:4;11874:131;:::i;:::-;11866:139;;11764:248;;;:::o;12018:419::-;12184:4;12222:2;12211:9;12207:18;12199:26;;12271:9;12265:4;12261:20;12257:1;12246:9;12242:17;12235:47;12299:131;12425:4;12299:131;:::i;:::-;12291:139;;12189:248;;;:::o;12443:419::-;12609:4;12647:2;12636:9;12632:18;12624:26;;12696:9;12690:4;12686:20;12682:1;12671:9;12667:17;12660:47;12724:131;12850:4;12724:131;:::i;:::-;12716:139;;12614:248;;;:::o;12868:419::-;13034:4;13072:2;13061:9;13057:18;13049:26;;13121:9;13115:4;13111:20;13107:1;13096:9;13092:17;13085:47;13149:131;13275:4;13149:131;:::i;:::-;13141:139;;13039:248;;;:::o;13293:419::-;13459:4;13497:2;13486:9;13482:18;13474:26;;13546:9;13540:4;13536:20;13532:1;13521:9;13517:17;13510:47;13574:131;13700:4;13574:131;:::i;:::-;13566:139;;13464:248;;;:::o;13718:419::-;13884:4;13922:2;13911:9;13907:18;13899:26;;13971:9;13965:4;13961:20;13957:1;13946:9;13942:17;13935:47;13999:131;14125:4;13999:131;:::i;:::-;13991:139;;13889:248;;;:::o;14143:419::-;14309:4;14347:2;14336:9;14332:18;14324:26;;14396:9;14390:4;14386:20;14382:1;14371:9;14367:17;14360:47;14424:131;14550:4;14424:131;:::i;:::-;14416:139;;14314:248;;;:::o;14568:419::-;14734:4;14772:2;14761:9;14757:18;14749:26;;14821:9;14815:4;14811:20;14807:1;14796:9;14792:17;14785:47;14849:131;14975:4;14849:131;:::i;:::-;14841:139;;14739:248;;;:::o;14993:419::-;15159:4;15197:2;15186:9;15182:18;15174:26;;15246:9;15240:4;15236:20;15232:1;15221:9;15217:17;15210:47;15274:131;15400:4;15274:131;:::i;:::-;15266:139;;15164:248;;;:::o;15418:419::-;15584:4;15622:2;15611:9;15607:18;15599:26;;15671:9;15665:4;15661:20;15657:1;15646:9;15642:17;15635:47;15699:131;15825:4;15699:131;:::i;:::-;15691:139;;15589:248;;;:::o;15843:419::-;16009:4;16047:2;16036:9;16032:18;16024:26;;16096:9;16090:4;16086:20;16082:1;16071:9;16067:17;16060:47;16124:131;16250:4;16124:131;:::i;:::-;16116:139;;16014:248;;;:::o;16268:419::-;16434:4;16472:2;16461:9;16457:18;16449:26;;16521:9;16515:4;16511:20;16507:1;16496:9;16492:17;16485:47;16549:131;16675:4;16549:131;:::i;:::-;16541:139;;16439:248;;;:::o;16693:419::-;16859:4;16897:2;16886:9;16882:18;16874:26;;16946:9;16940:4;16936:20;16932:1;16921:9;16917:17;16910:47;16974:131;17100:4;16974:131;:::i;:::-;16966:139;;16864:248;;;:::o;17118:419::-;17284:4;17322:2;17311:9;17307:18;17299:26;;17371:9;17365:4;17361:20;17357:1;17346:9;17342:17;17335:47;17399:131;17525:4;17399:131;:::i;:::-;17391:139;;17289:248;;;:::o;17543:222::-;17636:4;17674:2;17663:9;17659:18;17651:26;;17687:71;17755:1;17744:9;17740:17;17731:6;17687:71;:::i;:::-;17641:124;;;;:::o;17771:332::-;17892:4;17930:2;17919:9;17915:18;17907:26;;17943:71;18011:1;18000:9;17996:17;17987:6;17943:71;:::i;:::-;18024:72;18092:2;18081:9;18077:18;18068:6;18024:72;:::i;:::-;17897:206;;;;;:::o;18109:214::-;18198:4;18236:2;18225:9;18221:18;18213:26;;18249:67;18313:1;18302:9;18298:17;18289:6;18249:67;:::i;:::-;18203:120;;;;:::o;18410:99::-;18462:6;18496:5;18490:12;18480:22;;18469:40;;;:::o;18515:169::-;18599:11;18633:6;18628:3;18621:19;18673:4;18668:3;18664:14;18649:29;;18611:73;;;;:::o;18690:305::-;18730:3;18749:20;18767:1;18749:20;:::i;:::-;18744:25;;18783:20;18801:1;18783:20;:::i;:::-;18778:25;;18937:1;18869:66;18865:74;18862:1;18859:81;18856:2;;;18943:18;;:::i;:::-;18856:2;18987:1;18984;18980:9;18973:16;;18734:261;;;;:::o;19001:191::-;19041:4;19061:20;19079:1;19061:20;:::i;:::-;19056:25;;19095:20;19113:1;19095:20;:::i;:::-;19090:25;;19134:1;19131;19128:8;19125:2;;;19139:18;;:::i;:::-;19125:2;19184:1;19181;19177:9;19169:17;;19046:146;;;;:::o;19198:96::-;19235:7;19264:24;19282:5;19264:24;:::i;:::-;19253:35;;19243:51;;;:::o;19300:90::-;19334:7;19377:5;19370:13;19363:21;19352:32;;19342:48;;;:::o;19396:126::-;19433:7;19473:42;19466:5;19462:54;19451:65;;19441:81;;;:::o;19528:77::-;19565:7;19594:5;19583:16;;19573:32;;;:::o;19611:86::-;19646:7;19686:4;19679:5;19675:16;19664:27;;19654:43;;;:::o;19703:307::-;19771:1;19781:113;19795:6;19792:1;19789:13;19781:113;;;19880:1;19875:3;19871:11;19865:18;19861:1;19856:3;19852:11;19845:39;19817:2;19814:1;19810:10;19805:15;;19781:113;;;19912:6;19909:1;19906:13;19903:2;;;19992:1;19983:6;19978:3;19974:16;19967:27;19903:2;19752:258;;;;:::o;20016:171::-;20055:3;20078:24;20096:5;20078:24;:::i;:::-;20069:33;;20124:4;20117:5;20114:15;20111:2;;;20132:18;;:::i;:::-;20111:2;20179:1;20172:5;20168:13;20161:20;;20059:128;;;:::o;20193:320::-;20237:6;20274:1;20268:4;20264:12;20254:22;;20321:1;20315:4;20311:12;20342:18;20332:2;;20398:4;20390:6;20386:17;20376:27;;20332:2;20460;20452:6;20449:14;20429:18;20426:38;20423:2;;;20479:18;;:::i;:::-;20423:2;20244:269;;;;:::o;20519:233::-;20558:3;20581:24;20599:5;20581:24;:::i;:::-;20572:33;;20627:66;20620:5;20617:77;20614:2;;;20697:18;;:::i;:::-;20614:2;20744:1;20737:5;20733:13;20726:20;;20562:190;;;:::o;20758:180::-;20806:77;20803:1;20796:88;20903:4;20900:1;20893:15;20927:4;20924:1;20917:15;20944:180;20992:77;20989:1;20982:88;21089:4;21086:1;21079:15;21113:4;21110:1;21103:15;21130:180;21178:77;21175:1;21168:88;21275:4;21272:1;21265:15;21299:4;21296:1;21289:15;21316:180;21364:77;21361:1;21354:88;21461:4;21458:1;21451:15;21485:4;21482:1;21475:15;21625:117;21734:1;21731;21724:12;21748:102;21789:6;21840:2;21836:7;21831:2;21824:5;21820:14;21816:28;21806:38;;21796:54;;;:::o;21856:222::-;21996:34;21992:1;21984:6;21980:14;21973:58;22065:5;22060:2;22052:6;22048:15;22041:30;21962:116;:::o;22084:176::-;22224:28;22220:1;22212:6;22208:14;22201:52;22190:70;:::o;22266:221::-;22406:34;22402:1;22394:6;22390:14;22383:58;22475:4;22470:2;22462:6;22458:15;22451:29;22372:115;:::o;22493:237::-;22633:34;22629:1;22621:6;22617:14;22610:58;22702:20;22697:2;22689:6;22685:15;22678:45;22599:131;:::o;22736:225::-;22876:34;22872:1;22864:6;22860:14;22853:58;22945:8;22940:2;22932:6;22928:15;22921:33;22842:119;:::o;22967:221::-;23107:34;23103:1;23095:6;23091:14;23084:58;23176:4;23171:2;23163:6;23159:15;23152:29;23073:115;:::o;23194:173::-;23334:25;23330:1;23322:6;23318:14;23311:49;23300:67;:::o;23373:225::-;23513:34;23509:1;23501:6;23497:14;23490:58;23582:8;23577:2;23569:6;23565:15;23558:33;23479:119;:::o;23604:225::-;23744:34;23740:1;23732:6;23728:14;23721:58;23813:8;23808:2;23800:6;23796:15;23789:33;23710:119;:::o;23835:227::-;23975:34;23971:1;23963:6;23959:14;23952:58;24044:10;24039:2;24031:6;24027:15;24020:35;23941:121;:::o;24068:182::-;24208:34;24204:1;24196:6;24192:14;24185:58;24174:76;:::o;24256:223::-;24396:34;24392:1;24384:6;24380:14;24373:58;24465:6;24460:2;24452:6;24448:15;24441:31;24362:117;:::o;24485:220::-;24625:34;24621:1;24613:6;24609:14;24602:58;24694:3;24689:2;24681:6;24677:15;24670:28;24591:114;:::o;24711:224::-;24851:34;24847:1;24839:6;24835:14;24828:58;24920:7;24915:2;24907:6;24903:15;24896:32;24817:118;:::o;24941:223::-;25081:34;25077:1;25069:6;25065:14;25058:58;25150:6;25145:2;25137:6;25133:15;25126:31;25047:117;:::o;25170:224::-;25310:34;25306:1;25298:6;25294:14;25287:58;25379:7;25374:2;25366:6;25362:15;25355:32;25276:118;:::o;25400:122::-;25473:24;25491:5;25473:24;:::i;:::-;25466:5;25463:35;25453:2;;25512:1;25509;25502:12;25453:2;25443:79;:::o;25528:122::-;25601:24;25619:5;25601:24;:::i;:::-;25594:5;25591:35;25581:2;;25640:1;25637;25630:12;25581:2;25571:79;:::o

Swarm Source

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