ETH Price: $3,247.66 (-0.38%)
Gas: 3 Gwei

Token

BorProtocol (BRP)
 

Overview

Max Total Supply

10,000,000 BRP

Holders

56

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0.362027257347745386 BRP

Value
$0.00
0xecae434b7f63b8c2f2993d24c05a41774407c800
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
BRP

Compiler Version
v0.8.0+commit.c7dfd78e

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-04-12
*/

//SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

interface IERC20 {
    function totalSupply() external view returns (uint);
    function balanceOf(address account) external view returns (uint);
    function transfer(address recipient, uint amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint);
    function approve(address spender, uint amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint value);
    event Approval(address indexed owner, address indexed spender, uint value);
}
library SafeMath {
    function add(uint a, uint b) internal pure returns (uint) {
        uint c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }
    function sub(uint a, uint b) internal pure returns (uint) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }
    function sub(uint a, uint b, string memory errorMessage) internal pure returns (uint) {
        require(b <= a, errorMessage);
        uint c = a - b;

        return c;
    }
    function mul(uint a, uint b) internal pure returns (uint) {
        if (a == 0) {
            return 0;
        }

        uint c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }
    function div(uint a, uint b) internal pure returns (uint) {
        return div(a, b, "SafeMath: division by zero");
    }
    function div(uint a, uint b, string memory errorMessage) internal pure returns (uint) {
        // Solidity only automatically asserts when dividing by 0
        require(b > 0, errorMessage);
        uint c = a / b;

        return c;
    }
}

contract Context {
    constructor () public { }
    // solhint-disable-previous-line no-empty-blocks

    function _msgSender() internal view returns (address) {
        return msg.sender;
    }
}
abstract contract Ownable is Context {
    address private _owner;

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

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor () internal {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view virtual returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}
contract ERC20 is Context, Ownable, IERC20 {
    using SafeMath for uint;

    mapping (address => uint) internal _balances;

    mapping (address => mapping (address => uint)) internal _allowances;

    uint internal _totalSupply;
   
    
    function totalSupply() public view override returns (uint) {
        return _totalSupply;
    }
    function balanceOf(address account) public view override returns (uint) {
        return _balances[account];
    }
    function transfer(address recipient, uint amount) public override  returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }
    function allowance(address owner, address spender) public view override returns (uint) {
        return _allowances[owner][spender];
    }
    function approve(address spender, uint amount) public override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }
    function transferFrom(address sender, address recipient, uint amount) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
        return true;
    }
    function increaseAllowance(address spender, uint addedValue) public returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));
        return true;
    }
    function decreaseAllowance(address spender, uint subtractedValue) public returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
        return true;
    }
    function _transfer(address sender, address recipient, uint amount) internal {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
    }
   
 
    function _approve(address owner, address spender, uint amount) internal {
        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);
    }
    
}

contract ERC20Detailed is ERC20 {
    string private _name;
    string private _symbol;
    uint8 private _decimals;

    constructor (string memory name, string memory symbol, uint8 decimals) public {
        _name = name;
        _symbol = symbol;
        _decimals = decimals;
        
    }
    function name() public view returns (string memory) {
        return _name;
    }
    function symbol() public view returns (string memory) {
        return _symbol;
    }
    function decimals() public view returns (uint8) {
        return _decimals;
    }
}



library Address {
    function isContract(address account) internal view returns (bool) {
        bytes32 codehash;
        bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
        // solhint-disable-next-line no-inline-assembly
        assembly { codehash := extcodehash(account) }
        return (codehash != 0x0 && codehash != accountHash);
    }
}

library SafeERC20 {
    using SafeMath for uint;
    using Address for address;

    function safeTransfer(IERC20 token, address to, uint value) internal {
        callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value));
    }

    function safeTransferFrom(IERC20 token, address from, address to, uint value) internal {
        callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value));
    }

    function safeApprove(IERC20 token, address spender, uint value) internal {
        require((value == 0) || (token.allowance(address(this), spender) == 0),
            "SafeERC20: approve from non-zero to non-zero allowance"
        );
        callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value));
    }
    function callOptionalReturn(IERC20 token, bytes memory data) private {
        require(address(token).isContract(), "SafeERC20: call to non-contract");

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = address(token).call(data);
        require(success, "SafeERC20: low-level call failed");

        if (returndata.length > 0) { // Return data is optional
            // solhint-disable-next-line max-line-length
            require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed");
        }
    }
}
library EnumerableSet {
 
    struct Set {
        // Storage of set values
        bytes32[] _values;

        mapping (bytes32 => uint256) _indexes;
    }

    function _add(Set storage set, bytes32 value) private returns (bool) {
        if (!_contains(set, value)) {
            set._values.push(value);
          
            set._indexes[value] = set._values.length;
            return true;
        } else {
            return false;
        }
    }

    function _remove(Set storage set, bytes32 value) private returns (bool) {
        // We read and store the value's index to prevent multiple reads from the same storage slot
        uint256 valueIndex = set._indexes[value];

        if (valueIndex != 0) { // Equivalent to contains(set, value)
        
            uint256 toDeleteIndex = valueIndex - 1;
            uint256 lastIndex = set._values.length - 1;

            bytes32 lastvalue = set._values[lastIndex];

            // Move the last value to the index where the value to delete is
            set._values[toDeleteIndex] = lastvalue;
            // Update the index for the moved value
            set._indexes[lastvalue] = toDeleteIndex + 1; // All indexes are 1-based

            // Delete the slot where the moved value was stored
            set._values.pop();

            // Delete the index for the deleted slot
            delete set._indexes[value];

            return true;
        } else {
            return false;
        }
    }

  
    function _contains(Set storage set, bytes32 value) private view returns (bool) {
        return set._indexes[value] != 0;
    }
    function _length(Set storage set) private view returns (uint256) {
        return set._values.length;
    }

 
    function _at(Set storage set, uint256 index) private view returns (bytes32) {
        require(set._values.length > index, "EnumerableSet: index out of bounds");
        return set._values[index];
    }

    struct Bytes32Set {
        Set _inner;
    }

    function add(Bytes32Set storage set, bytes32 value) internal returns (bool) {
        return _add(set._inner, value);
    }

    function remove(Bytes32Set storage set, bytes32 value) internal returns (bool) {
        return _remove(set._inner, value);
    }

    function contains(Bytes32Set storage set, bytes32 value) internal view returns (bool) {
        return _contains(set._inner, value);
    }

    function length(Bytes32Set storage set) internal view returns (uint256) {
        return _length(set._inner);
    }

    function at(Bytes32Set storage set, uint256 index) internal view returns (bytes32) {
        return _at(set._inner, index);
    }

    // AddressSet

    struct AddressSet {
        Set _inner;
    }

    function add(AddressSet storage set, address value) internal returns (bool) {
        return _add(set._inner, bytes32(uint256(uint160(value))));
    }

    function remove(AddressSet storage set, address value) internal returns (bool) {
        return _remove(set._inner, bytes32(uint256(uint160(value))));
    }

    function contains(AddressSet storage set, address value) internal view returns (bool) {
        return _contains(set._inner, bytes32(uint256(uint160(value))));
    }

    function length(AddressSet storage set) internal view returns (uint256) {
        return _length(set._inner);
    }

    function at(AddressSet storage set, uint256 index) internal view returns (address) {
        return address(uint160(uint256(_at(set._inner, index))));
    }

    struct UintSet {
        Set _inner;
    }

    function add(UintSet storage set, uint256 value) internal returns (bool) {
        return _add(set._inner, bytes32(value));
    }

    function remove(UintSet storage set, uint256 value) internal returns (bool) {
        return _remove(set._inner, bytes32(value));
    }

    function contains(UintSet storage set, uint256 value) internal view returns (bool) {
        return _contains(set._inner, bytes32(value));
    }

    
    function length(UintSet storage set) internal view returns (uint256) {
        return _length(set._inner);
    }

    function at(UintSet storage set, uint256 index) internal view returns (uint256) {
        return uint256(_at(set._inner, index));
    }
}


abstract contract AccessControl is Context {
    using EnumerableSet for EnumerableSet.AddressSet;
    using Address for address;

    struct RoleData {
        EnumerableSet.AddressSet members;
        bytes32 adminRole;
    }

    mapping (bytes32 => RoleData) private _roles;

    bytes32 public constant DEFAULT_ADMIN_ROLE = 0x00;

    event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole);

   
    event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender);

   
    event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender);

    function hasRole(bytes32 role, address account) public view returns (bool) {
        return _roles[role].members.contains(account);
    }

    
    function getRoleMemberCount(bytes32 role) public view returns (uint256) {
        return _roles[role].members.length();
    }

    
    function getRoleMember(bytes32 role, uint256 index) public view returns (address) {
        return _roles[role].members.at(index);
    }

   
    function getRoleAdmin(bytes32 role) public view returns (bytes32) {
        return _roles[role].adminRole;
    }

    
    function grantRole(bytes32 role, address account) public virtual {
        require(hasRole(_roles[role].adminRole, _msgSender()), "AccessControl: sender must be an admin to grant");

        _grantRole(role, account);
    }

    
    function revokeRole(bytes32 role, address account) public virtual {
        require(hasRole(_roles[role].adminRole, _msgSender()), "AccessControl: sender must be an admin to revoke");

        _revokeRole(role, account);
    }

    
    function renounceRole(bytes32 role, address account) public virtual {
        require(account == _msgSender(), "AccessControl: can only renounce roles for self");

        _revokeRole(role, account);
    }

    
    function _setRoleAdmin(bytes32 role, bytes32 adminRole) public virtual {
        emit RoleAdminChanged(role, _roles[role].adminRole, adminRole);
        _roles[role].adminRole = adminRole;
    }
    function _setupRole(bytes32 role, address account) internal virtual {
        _grantRole(role, account);
    }

    function _grantRole(bytes32 role, address account) private {
        if (_roles[role].members.add(account)) {
            emit RoleGranted(role, account, _msgSender());
        }
    }

    function _revokeRole(bytes32 role, address account) private {
        if (_roles[role].members.remove(account)) {
            emit RoleRevoked(role, account, _msgSender());
        }
    }
}

contract BRP is ERC20, ERC20Detailed, AccessControl {
   
    constructor() public ERC20Detailed("BorProtocol", "BRP",18) {
       _setupRole(DEFAULT_ADMIN_ROLE, msg.sender);
       _totalSupply = 10000000 *(10**uint256(18));
    
	   _balances[msg.sender] = _totalSupply;
    }

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"bytes32","name":"adminRole","type":"bytes32"}],"name":"_setRoleAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"getRoleMember","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleMemberCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60806040523480156200001157600080fd5b506040518060400160405280600b81526020016a109bdc941c9bdd1bd8dbdb60aa1b8152506040518060400160405280600381526020016204252560ec1b81525060126000620000666200013860201b60201c565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3508251620000c59060049060208601906200024e565b508151620000db9060059060208501906200024e565b506006805460ff191660ff92909216919091179055506200010090506000336200013c565b6200010e6012600a62000341565b6200011d90629896806200042b565b600381905533600090815260016020526040902055620004a0565b3390565b6200014882826200014c565b5050565b6000828152600760209081526040909120620001739183906200084d620001c7821b17901c565b1562000148576200018362000138565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000620001de836001600160a01b038416620001e7565b90505b92915050565b6000620001f5838362000236565b6200022d57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155620001e1565b506000620001e1565b60009081526001919091016020526040902054151590565b8280546200025c906200044d565b90600052602060002090601f016020900481019282620002805760008555620002cb565b82601f106200029b57805160ff1916838001178555620002cb565b82800160010185558215620002cb579182015b82811115620002cb578251825591602001919060010190620002ae565b50620002d9929150620002dd565b5090565b5b80821115620002d95760008155600101620002de565b80825b600180861162000308575062000338565b8187048211156200031d576200031d6200048a565b808616156200032b57918102915b9490941c938002620002f7565b94509492505050565b6000620001de60001984846000826200035d5750600162000424565b816200036c5750600062000424565b81600181146200038557600281146200039057620003c4565b600191505062000424565b60ff841115620003a457620003a46200048a565b6001841b915084821115620003bd57620003bd6200048a565b5062000424565b5060208310610133831016604e8410600b8410161715620003fc575081810a83811115620003f657620003f66200048a565b62000424565b6200040b8484846001620002f4565b8086048211156200042057620004206200048a565b0290505b9392505050565b60008160001904831182151516156200044857620004486200048a565b500290565b6002810460018216806200046257607f821691505b602082108114156200048457634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b61134080620004b06000396000f3fe608060405234801561001057600080fd5b506004361061014d5760003560e01c80637612997d116100c3578063a457c2d71161007c578063a457c2d714610294578063a9059cbb146102a7578063ca15c873146102ba578063d547741f146102cd578063dd62ed3e146102e0578063f2fde38b146102f35761014d565b80637612997d146102365780638da5cb5b146102495780639010d07c1461025e57806391d148541461027157806395d89b4114610284578063a217fddf1461028c5761014d565b80632f2ff15d116101155780632f2ff15d146101cb578063313ce567146101e057806336568abe146101f5578063395093511461020857806370a082311461021b578063715018a61461022e5761014d565b806306fdde0314610152578063095ea7b31461017057806318160ddd1461019057806323b872dd146101a5578063248a9ca3146101b8575b600080fd5b61015a610306565b6040516101679190610ec6565b60405180910390f35b61018361017e366004610e1a565b610398565b6040516101679190610eb2565b6101986103b6565b6040516101679190610ebd565b6101836101b3366004610ddf565b6103bc565b6101986101c6366004610e43565b610443565b6101de6101d9366004610e5b565b61045b565b005b6101e86104ac565b6040516101679190611209565b6101de610203366004610e5b565b6104b5565b610183610216366004610e1a565b6104f7565b610198610229366004610d93565b610545565b6101de610560565b6101de610244366004610e7d565b6105e9565b61025161063b565b6040516101679190610e9e565b61025161026c366004610e7d565b61064a565b61018361027f366004610e5b565b610669565b61015a610681565b610198610690565b6101836102a2366004610e1a565b610695565b6101836102b5366004610e1a565b6106fd565b6101986102c8366004610e43565b610711565b6101de6102db366004610e5b565b610728565b6101986102ee366004610dad565b610762565b6101de610301366004610d93565b61078d565b60606004805461031590611246565b80601f016020809104026020016040519081016040528092919081815260200182805461034190611246565b801561038e5780601f106103635761010080835404028352916020019161038e565b820191906000526020600020905b81548152906001019060200180831161037157829003601f168201915b5050505050905090565b60006103ac6103a5610862565b8484610866565b5060015b92915050565b60035490565b60006103c984848461091a565b610439846103d5610862565b610434856040518060600160405280602881526020016112be602891396001600160a01b038a16600090815260026020526040812090610413610862565b6001600160a01b031681526020810191909152604001600020549190610a24565b610866565b5060019392505050565b6000818152600760205260409020600201545b919050565b6000828152600760205260409020600201546104799061027f610862565b61049e5760405162461bcd60e51b815260040161049590610f9e565b60405180910390fd5b6104a88282610a5e565b5050565b60065460ff1690565b6104bd610862565b6001600160a01b0316816001600160a01b0316146104ed5760405162461bcd60e51b8152600401610495906111ba565b6104a88282610ac7565b60006103ac610504610862565b846104348560026000610515610862565b6001600160a01b03908116825260208083019390935260409182016000908120918c168152925290205490610b30565b6001600160a01b031660009081526001602052604090205490565b610568610862565b6001600160a01b031661057961063b565b6001600160a01b03161461059f5760405162461bcd60e51b8152600401610495906110fc565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b600082815260076020526040808220600201549051839285917fbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff9190a460009182526007602052604090912060020155565b6000546001600160a01b031690565b60008281526007602052604081206106629083610b5f565b9392505050565b60008281526007602052604081206106629083610b6b565b60606005805461031590611246565b600081565b60006103ac6106a2610862565b84610434856040518060600160405280602581526020016112e660259139600260006106cc610862565b6001600160a01b03908116825260208083019390935260409182016000908120918d16815292529020549190610a24565b60006103ac61070a610862565b848461091a565b60008181526007602052604081206103b090610b80565b6000828152600760205260409020600201546107469061027f610862565b6104ed5760405162461bcd60e51b8152600401610495906110ac565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b610795610862565b6001600160a01b03166107a661063b565b6001600160a01b0316146107cc5760405162461bcd60e51b8152600401610495906110fc565b6001600160a01b0381166107f25760405162461bcd60e51b815260040161049590610fed565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000610662836001600160a01b038416610b8b565b3390565b6001600160a01b03831661088c5760405162461bcd60e51b815260040161049590611176565b6001600160a01b0382166108b25760405162461bcd60e51b815260040161049590611033565b6001600160a01b0380841660008181526002602090815260408083209487168084529490915290819020849055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259061090d908590610ebd565b60405180910390a3505050565b6001600160a01b0383166109405760405162461bcd60e51b815260040161049590611131565b6001600160a01b0382166109665760405162461bcd60e51b815260040161049590610f5b565b6109a381604051806060016040528060268152602001611298602691396001600160a01b0386166000908152600160205260409020549190610a24565b6001600160a01b0380851660009081526001602052604080822093909355908416815220546109d29082610b30565b6001600160a01b0380841660008181526001602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061090d908590610ebd565b60008184841115610a485760405162461bcd60e51b81526004016104959190610ec6565b506000610a55848661122f565b95945050505050565b6000828152600760205260409020610a76908261084d565b156104a857610a83610862565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000828152600760205260409020610adf9082610bd5565b156104a857610aec610862565b6001600160a01b0316816001600160a01b0316837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45050565b600080610b3d8385611217565b9050838110156106625760405162461bcd60e51b815260040161049590611075565b60006106628383610bea565b6000610662836001600160a01b038416610c43565b60006103b082610c5b565b6000610b978383610c43565b610bcd575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556103b0565b5060006103b0565b6000610662836001600160a01b038416610c5f565b81546000908210610c0d5760405162461bcd60e51b815260040161049590610f19565b826000018281548110610c3057634e487b7160e01b600052603260045260246000fd5b9060005260206000200154905092915050565b60009081526001919091016020526040902054151590565b5490565b60008181526001830160205260408120548015610d72576000610c8360018361122f565b8554909150600090610c979060019061122f565b90506000866000018281548110610cbe57634e487b7160e01b600052603260045260246000fd5b9060005260206000200154905080876000018481548110610cef57634e487b7160e01b600052603260045260246000fd5b600091825260209091200155610d06836001611217565b60008281526001890160205260409020558654879080610d3657634e487b7160e01b600052603160045260246000fd5b600190038181906000526020600020016000905590558660010160008781526020019081526020016000206000905560019450505050506103b0565b60009150506103b0565b80356001600160a01b038116811461045657600080fd5b600060208284031215610da4578081fd5b61066282610d7c565b60008060408385031215610dbf578081fd5b610dc883610d7c565b9150610dd660208401610d7c565b90509250929050565b600080600060608486031215610df3578081fd5b610dfc84610d7c565b9250610e0a60208501610d7c565b9150604084013590509250925092565b60008060408385031215610e2c578182fd5b610e3583610d7c565b946020939093013593505050565b600060208284031215610e54578081fd5b5035919050565b60008060408385031215610e6d578182fd5b82359150610dd660208401610d7c565b60008060408385031215610e8f578182fd5b50508035926020909101359150565b6001600160a01b0391909116815260200190565b901515815260200190565b90815260200190565b6000602080835283518082850152825b81811015610ef257858101830151858201604001528201610ed6565b81811115610f035783604083870101525b50601f01601f1916929092016040019392505050565b60208082526022908201527f456e756d657261626c655365743a20696e646578206f7574206f6620626f756e604082015261647360f01b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b6020808252602f908201527f416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e60408201526e0818591b5a5b881d1bc819dc985b9d608a1b606082015260800190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b60208082526022908201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604082015261737360f01b606082015260800190565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b60208082526030908201527f416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e60408201526f2061646d696e20746f207265766f6b6560801b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526024908201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646040820152637265737360e01b606082015260800190565b6020808252602f908201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560408201526e103937b632b9903337b91039b2b63360891b606082015260800190565b60ff91909116815260200190565b6000821982111561122a5761122a611281565b500190565b60008282101561124157611241611281565b500390565b60028104600182168061125a57607f821691505b6020821081141561127b57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fdfe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220fcca952d771f5fdbfaf8a915f5260fd4dd1cdbe54595eda9b61a5790a77e864764736f6c63430008000033

Deployed Bytecode

0x608060405234801561001057600080fd5b506004361061014d5760003560e01c80637612997d116100c3578063a457c2d71161007c578063a457c2d714610294578063a9059cbb146102a7578063ca15c873146102ba578063d547741f146102cd578063dd62ed3e146102e0578063f2fde38b146102f35761014d565b80637612997d146102365780638da5cb5b146102495780639010d07c1461025e57806391d148541461027157806395d89b4114610284578063a217fddf1461028c5761014d565b80632f2ff15d116101155780632f2ff15d146101cb578063313ce567146101e057806336568abe146101f5578063395093511461020857806370a082311461021b578063715018a61461022e5761014d565b806306fdde0314610152578063095ea7b31461017057806318160ddd1461019057806323b872dd146101a5578063248a9ca3146101b8575b600080fd5b61015a610306565b6040516101679190610ec6565b60405180910390f35b61018361017e366004610e1a565b610398565b6040516101679190610eb2565b6101986103b6565b6040516101679190610ebd565b6101836101b3366004610ddf565b6103bc565b6101986101c6366004610e43565b610443565b6101de6101d9366004610e5b565b61045b565b005b6101e86104ac565b6040516101679190611209565b6101de610203366004610e5b565b6104b5565b610183610216366004610e1a565b6104f7565b610198610229366004610d93565b610545565b6101de610560565b6101de610244366004610e7d565b6105e9565b61025161063b565b6040516101679190610e9e565b61025161026c366004610e7d565b61064a565b61018361027f366004610e5b565b610669565b61015a610681565b610198610690565b6101836102a2366004610e1a565b610695565b6101836102b5366004610e1a565b6106fd565b6101986102c8366004610e43565b610711565b6101de6102db366004610e5b565b610728565b6101986102ee366004610dad565b610762565b6101de610301366004610d93565b61078d565b60606004805461031590611246565b80601f016020809104026020016040519081016040528092919081815260200182805461034190611246565b801561038e5780601f106103635761010080835404028352916020019161038e565b820191906000526020600020905b81548152906001019060200180831161037157829003601f168201915b5050505050905090565b60006103ac6103a5610862565b8484610866565b5060015b92915050565b60035490565b60006103c984848461091a565b610439846103d5610862565b610434856040518060600160405280602881526020016112be602891396001600160a01b038a16600090815260026020526040812090610413610862565b6001600160a01b031681526020810191909152604001600020549190610a24565b610866565b5060019392505050565b6000818152600760205260409020600201545b919050565b6000828152600760205260409020600201546104799061027f610862565b61049e5760405162461bcd60e51b815260040161049590610f9e565b60405180910390fd5b6104a88282610a5e565b5050565b60065460ff1690565b6104bd610862565b6001600160a01b0316816001600160a01b0316146104ed5760405162461bcd60e51b8152600401610495906111ba565b6104a88282610ac7565b60006103ac610504610862565b846104348560026000610515610862565b6001600160a01b03908116825260208083019390935260409182016000908120918c168152925290205490610b30565b6001600160a01b031660009081526001602052604090205490565b610568610862565b6001600160a01b031661057961063b565b6001600160a01b03161461059f5760405162461bcd60e51b8152600401610495906110fc565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b600082815260076020526040808220600201549051839285917fbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff9190a460009182526007602052604090912060020155565b6000546001600160a01b031690565b60008281526007602052604081206106629083610b5f565b9392505050565b60008281526007602052604081206106629083610b6b565b60606005805461031590611246565b600081565b60006103ac6106a2610862565b84610434856040518060600160405280602581526020016112e660259139600260006106cc610862565b6001600160a01b03908116825260208083019390935260409182016000908120918d16815292529020549190610a24565b60006103ac61070a610862565b848461091a565b60008181526007602052604081206103b090610b80565b6000828152600760205260409020600201546107469061027f610862565b6104ed5760405162461bcd60e51b8152600401610495906110ac565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b610795610862565b6001600160a01b03166107a661063b565b6001600160a01b0316146107cc5760405162461bcd60e51b8152600401610495906110fc565b6001600160a01b0381166107f25760405162461bcd60e51b815260040161049590610fed565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000610662836001600160a01b038416610b8b565b3390565b6001600160a01b03831661088c5760405162461bcd60e51b815260040161049590611176565b6001600160a01b0382166108b25760405162461bcd60e51b815260040161049590611033565b6001600160a01b0380841660008181526002602090815260408083209487168084529490915290819020849055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259061090d908590610ebd565b60405180910390a3505050565b6001600160a01b0383166109405760405162461bcd60e51b815260040161049590611131565b6001600160a01b0382166109665760405162461bcd60e51b815260040161049590610f5b565b6109a381604051806060016040528060268152602001611298602691396001600160a01b0386166000908152600160205260409020549190610a24565b6001600160a01b0380851660009081526001602052604080822093909355908416815220546109d29082610b30565b6001600160a01b0380841660008181526001602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061090d908590610ebd565b60008184841115610a485760405162461bcd60e51b81526004016104959190610ec6565b506000610a55848661122f565b95945050505050565b6000828152600760205260409020610a76908261084d565b156104a857610a83610862565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000828152600760205260409020610adf9082610bd5565b156104a857610aec610862565b6001600160a01b0316816001600160a01b0316837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45050565b600080610b3d8385611217565b9050838110156106625760405162461bcd60e51b815260040161049590611075565b60006106628383610bea565b6000610662836001600160a01b038416610c43565b60006103b082610c5b565b6000610b978383610c43565b610bcd575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556103b0565b5060006103b0565b6000610662836001600160a01b038416610c5f565b81546000908210610c0d5760405162461bcd60e51b815260040161049590610f19565b826000018281548110610c3057634e487b7160e01b600052603260045260246000fd5b9060005260206000200154905092915050565b60009081526001919091016020526040902054151590565b5490565b60008181526001830160205260408120548015610d72576000610c8360018361122f565b8554909150600090610c979060019061122f565b90506000866000018281548110610cbe57634e487b7160e01b600052603260045260246000fd5b9060005260206000200154905080876000018481548110610cef57634e487b7160e01b600052603260045260246000fd5b600091825260209091200155610d06836001611217565b60008281526001890160205260409020558654879080610d3657634e487b7160e01b600052603160045260246000fd5b600190038181906000526020600020016000905590558660010160008781526020019081526020016000206000905560019450505050506103b0565b60009150506103b0565b80356001600160a01b038116811461045657600080fd5b600060208284031215610da4578081fd5b61066282610d7c565b60008060408385031215610dbf578081fd5b610dc883610d7c565b9150610dd660208401610d7c565b90509250929050565b600080600060608486031215610df3578081fd5b610dfc84610d7c565b9250610e0a60208501610d7c565b9150604084013590509250925092565b60008060408385031215610e2c578182fd5b610e3583610d7c565b946020939093013593505050565b600060208284031215610e54578081fd5b5035919050565b60008060408385031215610e6d578182fd5b82359150610dd660208401610d7c565b60008060408385031215610e8f578182fd5b50508035926020909101359150565b6001600160a01b0391909116815260200190565b901515815260200190565b90815260200190565b6000602080835283518082850152825b81811015610ef257858101830151858201604001528201610ed6565b81811115610f035783604083870101525b50601f01601f1916929092016040019392505050565b60208082526022908201527f456e756d657261626c655365743a20696e646578206f7574206f6620626f756e604082015261647360f01b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b6020808252602f908201527f416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e60408201526e0818591b5a5b881d1bc819dc985b9d608a1b606082015260800190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b60208082526022908201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604082015261737360f01b606082015260800190565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b60208082526030908201527f416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e60408201526f2061646d696e20746f207265766f6b6560801b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526024908201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646040820152637265737360e01b606082015260800190565b6020808252602f908201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560408201526e103937b632b9903337b91039b2b63360891b606082015260800190565b60ff91909116815260200190565b6000821982111561122a5761122a611281565b500190565b60008282101561124157611241611281565b500390565b60028104600182168061125a57607f821691505b6020821081141561127b57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fdfe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220fcca952d771f5fdbfaf8a915f5260fd4dd1cdbe54595eda9b61a5790a77e864764736f6c63430008000033

Deployed Bytecode Sourcemap

15821:290:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6669:83;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4572:158;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;4030:97::-;;;:::i;:::-;;;;;;;:::i;4736:310::-;;;;;;:::i;:::-;;:::i;14267:114::-;;;;;;:::i;:::-;;:::i;14395:227::-;;;;;;:::i;:::-;;:::i;:::-;;6851:83;;;:::i;:::-;;;;;;;:::i;14880:209::-;;;;;;:::i;:::-;;:::i;5052:207::-;;;;;;:::i;:::-;;:::i;4133:116::-;;;;;;:::i;:::-;;:::i;3223:148::-;;;:::i;15103:197::-;;;;;;:::i;:::-;;:::i;2572:87::-;;;:::i;:::-;;;;;;;:::i;14116:138::-;;;;;;:::i;:::-;;:::i;13822:139::-;;;;;;:::i;:::-;;:::i;6758:87::-;;;:::i;13442:49::-;;;:::i;5265:258::-;;;;;;:::i;:::-;;:::i;4255:165::-;;;;;;:::i;:::-;;:::i;13975:127::-;;;;;;:::i;:::-;;:::i;14636:230::-;;;;;;:::i;:::-;;:::i;4426:140::-;;;;;;:::i;:::-;;:::i;3526:244::-;;;;;;:::i;:::-;;:::i;6669:83::-;6706:13;6739:5;6732:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6669:83;:::o;4572:158::-;4644:4;4661:39;4670:12;:10;:12::i;:::-;4684:7;4693:6;4661:8;:39::i;:::-;-1:-1:-1;4718:4:0;4572:158;;;;;:::o;4030:97::-;4107:12;;4030:97;:::o;4736:310::-;4831:4;4848:36;4858:6;4866:9;4877:6;4848:9;:36::i;:::-;4895:121;4904:6;4912:12;:10;:12::i;:::-;4926:89;4964:6;4926:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4926:19:0;;;;;;:11;:19;;;;;;4946:12;:10;:12::i;:::-;-1:-1:-1;;;;;4926:33:0;;;;;;;;;;;;-1:-1:-1;4926:33:0;;;:89;:37;:89::i;:::-;4895:8;:121::i;:::-;-1:-1:-1;5034:4:0;4736:310;;;;;:::o;14267:114::-;14324:7;14351:12;;;:6;:12;;;;;:22;;;14267:114;;;;:::o;14395:227::-;14487:12;;;;:6;:12;;;;;:22;;;14479:45;;14511:12;:10;:12::i;14479:45::-;14471:105;;;;-1:-1:-1;;;14471:105:0;;;;;;;:::i;:::-;;;;;;;;;14589:25;14600:4;14606:7;14589:10;:25::i;:::-;14395:227;;:::o;6851:83::-;6917:9;;;;6851:83;:::o;14880:209::-;14978:12;:10;:12::i;:::-;-1:-1:-1;;;;;14967:23:0;:7;-1:-1:-1;;;;;14967:23:0;;14959:83;;;;-1:-1:-1;;;14959:83:0;;;;;;;:::i;:::-;15055:26;15067:4;15073:7;15055:11;:26::i;5052:207::-;5129:4;5146:83;5155:12;:10;:12::i;:::-;5169:7;5178:50;5217:10;5178:11;:25;5190:12;:10;:12::i;:::-;-1:-1:-1;;;;;5178:25:0;;;;;;;;;;;;;;;;;-1:-1:-1;5178:25:0;;;:34;;;;;;;;;;;:38;:50::i;4133:116::-;-1:-1:-1;;;;;4223:18:0;4199:4;4223:18;;;:9;:18;;;;;;;4133:116::o;3223:148::-;2803:12;:10;:12::i;:::-;-1:-1:-1;;;;;2792:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;2792:23:0;;2784:68;;;;-1:-1:-1;;;2784:68:0;;;;;;;:::i;:::-;3330:1:::1;3314:6:::0;;3293:40:::1;::::0;-1:-1:-1;;;;;3314:6:0;;::::1;::::0;3293:40:::1;::::0;3330:1;;3293:40:::1;3361:1;3344:19:::0;;-1:-1:-1;;;;;;3344:19:0::1;::::0;;3223:148::o;15103:197::-;15213:12;;;;:6;:12;;;;;;:22;;;15190:57;;15237:9;;15220:4;;15190:57;;15213:12;15190:57;15258:12;;;;:6;:12;;;;;;:22;;:34;15103:197::o;2572:87::-;2618:7;2645:6;-1:-1:-1;;;;;2645:6:0;2572:87;:::o;14116:138::-;14189:7;14216:12;;;:6;:12;;;;;:30;;14240:5;14216:23;:30::i;:::-;14209:37;14116:138;-1:-1:-1;;;14116:138:0:o;13822:139::-;13891:4;13915:12;;;:6;:12;;;;;:38;;13945:7;13915:29;:38::i;6758:87::-;6797:13;6830:7;6823:14;;;;;:::i;13442:49::-;13487:4;13442:49;:::o;5265:258::-;5347:4;5364:129;5373:12;:10;:12::i;:::-;5387:7;5396:96;5435:15;5396:96;;;;;;;;;;;;;;;;;:11;:25;5408:12;:10;:12::i;:::-;-1:-1:-1;;;;;5396:25:0;;;;;;;;;;;;;;;;;-1:-1:-1;5396:25:0;;;:34;;;;;;;;;;;:96;:38;:96::i;4255:165::-;4331:4;4348:42;4358:12;:10;:12::i;:::-;4372:9;4383:6;4348:9;:42::i;13975:127::-;14038:7;14065:12;;;:6;:12;;;;;:29;;:27;:29::i;14636:230::-;14729:12;;;;:6;:12;;;;;:22;;;14721:45;;14753:12;:10;:12::i;14721:45::-;14713:106;;;;-1:-1:-1;;;14713:106:0;;;;;;;:::i;4426:140::-;-1:-1:-1;;;;;4531:18:0;;;4507:4;4531:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;4426:140::o;3526:244::-;2803:12;:10;:12::i;:::-;-1:-1:-1;;;;;2792:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;2792:23:0;;2784:68;;;;-1:-1:-1;;;2784:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;3615:22:0;::::1;3607:73;;;;-1:-1:-1::0;;;3607:73:0::1;;;;;;;:::i;:::-;3717:6;::::0;;3696:38:::1;::::0;-1:-1:-1;;;;;3696:38:0;;::::1;::::0;3717:6;::::1;::::0;3696:38:::1;::::0;::::1;3745:6;:17:::0;;-1:-1:-1;;;;;;3745:17:0::1;-1:-1:-1::0;;;;;3745:17:0;;;::::1;::::0;;;::::1;::::0;;3526:244::o;11591:152::-;11661:4;11685:50;11690:3;-1:-1:-1;;;;;11710:23:0;;11685:4;:50::i;1967:90::-;2039:10;1967:90;:::o;6011:335::-;-1:-1:-1;;;;;6102:19:0;;6094:68;;;;-1:-1:-1;;;6094:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;6181:21:0;;6173:68;;;;-1:-1:-1;;;6173:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;6254:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;;:36;;;6306:32;;;;;6284:6;;6306:32;:::i;:::-;;;;;;;;6011:335;;;:::o;5529:468::-;-1:-1:-1;;;;;5624:20:0;;5616:70;;;;-1:-1:-1;;;5616:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;5705:23:0;;5697:71;;;;-1:-1:-1;;;5697:71:0;;;;;;;:::i;:::-;5801;5823:6;5801:71;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5801:17:0;;;;;;:9;:17;;;;;;;:71;:21;:71::i;:::-;-1:-1:-1;;;;;5781:17:0;;;;;;;:9;:17;;;;;;:91;;;;5906:20;;;;;;;:32;;5931:6;5906:24;:32::i;:::-;-1:-1:-1;;;;;5883:20:0;;;;;;;:9;:20;;;;;;;:55;;;;5954:35;;;;;;;;;;5982:6;;5954:35;:::i;1044:180::-;1124:4;1157:12;1149:6;;;;1141:29;;;;-1:-1:-1;;;1141:29:0;;;;;;;;:::i;:::-;-1:-1:-1;1181:6:0;1190:5;1194:1;1190;:5;:::i;:::-;1181:14;1044:180;-1:-1:-1;;;;;1044:180:0:o;15426:188::-;15500:12;;;;:6;:12;;;;;:33;;15525:7;15500:24;:33::i;:::-;15496:111;;;15582:12;:10;:12::i;:::-;-1:-1:-1;;;;;15555:40:0;15573:7;-1:-1:-1;;;;;15555:40:0;15567:4;15555:40;;;;;;;;;;15426:188;;:::o;15622:192::-;15697:12;;;;:6;:12;;;;;:36;;15725:7;15697:27;:36::i;:::-;15693:114;;;15782:12;:10;:12::i;:::-;-1:-1:-1;;;;;15755:40:0;15773:7;-1:-1:-1;;;;;15755:40:0;15767:4;15755:40;;;;;;;;;;15622:192;;:::o;736:169::-;788:4;;814:5;818:1;814;:5;:::i;:::-;805:14;;843:1;838;:6;;830:46;;;;-1:-1:-1;;;830:46:0;;;;;;;:::i;12217:158::-;12291:7;12342:22;12346:3;12358:5;12342:3;:22::i;11917:167::-;11997:4;12021:55;12031:3;-1:-1:-1;;;;;12051:23:0;;12021:9;:55::i;12092:117::-;12155:7;12182:19;12190:3;12182:7;:19::i;8952:303::-;9015:4;9037:21;9047:3;9052:5;9037:9;:21::i;:::-;9032:216;;-1:-1:-1;9075:23:0;;;;;;;;:11;:23;;;;;;;;;;;;;9147:18;;9125:19;;;:12;;;:19;;;;;;:40;;;;9180:11;;9032:216;-1:-1:-1;9231:5:0;9224:12;;11751:158;11824:4;11848:53;11856:3;-1:-1:-1;;;;;11876:23:0;;11848:7;:53::i;10564:204::-;10659:18;;10631:7;;10659:26;-1:-1:-1;10651:73:0;;;;-1:-1:-1;;;10651:73:0;;;;;;;:::i;:::-;10742:3;:11;;10754:5;10742:18;;;;;;-1:-1:-1;;;10742:18:0;;;;;;;;;;;;;;;;;10735:25;;10564:204;;;;:::o;10309:129::-;10382:4;10406:19;;;:12;;;;;:19;;;;;;:24;;;10309:129::o;10444:109::-;10527:18;;10444:109::o;9263:1034::-;9329:4;9468:19;;;:12;;;:19;;;;;;9504:15;;9500:790;;9584:21;9608:14;9621:1;9608:10;:14;:::i;:::-;9657:18;;9584:38;;-1:-1:-1;9637:17:0;;9657:22;;9678:1;;9657:22;:::i;:::-;9637:42;;9696:17;9716:3;:11;;9728:9;9716:22;;;;;;-1:-1:-1;;;9716:22:0;;;;;;;;;;;;;;;;;9696:42;;9862:9;9833:3;:11;;9845:13;9833:26;;;;;;-1:-1:-1;;;9833:26:0;;;;;;;;;;;;;;;;;;:38;9965:17;:13;9981:1;9965:17;:::i;:::-;9939:23;;;;:12;;;:23;;;;;:43;10091:17;;9939:3;;10091:17;;;-1:-1:-1;;;10091:17:0;;;;;;;;;;;;;;;;;;;;;;;;;;10186:3;:12;;:19;10199:5;10186:19;;;;;;;;;;;10179:26;;;10229:4;10222:11;;;;;;;;9500:790;10273:5;10266:12;;;;;14:175:1;84:20;;-1:-1:-1;;;;;133:31:1;;123:42;;113:2;;179:1;176;169:12;194:198;;306:2;294:9;285:7;281:23;277:32;274:2;;;327:6;319;312:22;274:2;355:31;376:9;355:31;:::i;397:274::-;;;526:2;514:9;505:7;501:23;497:32;494:2;;;547:6;539;532:22;494:2;575:31;596:9;575:31;:::i;:::-;565:41;;625:40;661:2;650:9;646:18;625:40;:::i;:::-;615:50;;484:187;;;;;:::o;676:342::-;;;;822:2;810:9;801:7;797:23;793:32;790:2;;;843:6;835;828:22;790:2;871:31;892:9;871:31;:::i;:::-;861:41;;921:40;957:2;946:9;942:18;921:40;:::i;:::-;911:50;;1008:2;997:9;993:18;980:32;970:42;;780:238;;;;;:::o;1023:266::-;;;1152:2;1140:9;1131:7;1127:23;1123:32;1120:2;;;1173:6;1165;1158:22;1120:2;1201:31;1222:9;1201:31;:::i;:::-;1191:41;1279:2;1264:18;;;;1251:32;;-1:-1:-1;;;1110:179:1:o;1294:190::-;;1406:2;1394:9;1385:7;1381:23;1377:32;1374:2;;;1427:6;1419;1412:22;1374:2;-1:-1:-1;1455:23:1;;1364:120;-1:-1:-1;1364:120:1:o;1489:266::-;;;1618:2;1606:9;1597:7;1593:23;1589:32;1586:2;;;1639:6;1631;1624:22;1586:2;1680:9;1667:23;1657:33;;1709:40;1745:2;1734:9;1730:18;1709:40;:::i;1760:258::-;;;1889:2;1877:9;1868:7;1864:23;1860:32;1857:2;;;1910:6;1902;1895:22;1857:2;-1:-1:-1;;1938:23:1;;;2008:2;1993:18;;;1980:32;;-1:-1:-1;1847:171:1:o;2286:203::-;-1:-1:-1;;;;;2450:32:1;;;;2432:51;;2420:2;2405:18;;2387:102::o;2494:187::-;2659:14;;2652:22;2634:41;;2622:2;2607:18;;2589:92::o;2686:177::-;2832:25;;;2820:2;2805:18;;2787:76::o;2868:603::-;;3009:2;3038;3027:9;3020:21;3070:6;3064:13;3113:6;3108:2;3097:9;3093:18;3086:34;3138:4;3151:140;3165:6;3162:1;3159:13;3151:140;;;3260:14;;;3256:23;;3250:30;3226:17;;;3245:2;3222:26;3215:66;3180:10;;3151:140;;;3309:6;3306:1;3303:13;3300:2;;;3379:4;3374:2;3365:6;3354:9;3350:22;3346:31;3339:45;3300:2;-1:-1:-1;3455:2:1;3434:15;-1:-1:-1;;3430:29:1;3415:45;;;;3462:2;3411:54;;2989:482;-1:-1:-1;;;2989:482:1:o;3476:398::-;3678:2;3660:21;;;3717:2;3697:18;;;3690:30;3756:34;3751:2;3736:18;;3729:62;-1:-1:-1;;;3822:2:1;3807:18;;3800:32;3864:3;3849:19;;3650:224::o;3879:399::-;4081:2;4063:21;;;4120:2;4100:18;;;4093:30;4159:34;4154:2;4139:18;;4132:62;-1:-1:-1;;;4225:2:1;4210:18;;4203:33;4268:3;4253:19;;4053:225::o;4283:411::-;4485:2;4467:21;;;4524:2;4504:18;;;4497:30;4563:34;4558:2;4543:18;;4536:62;-1:-1:-1;;;4629:2:1;4614:18;;4607:45;4684:3;4669:19;;4457:237::o;4699:402::-;4901:2;4883:21;;;4940:2;4920:18;;;4913:30;4979:34;4974:2;4959:18;;4952:62;-1:-1:-1;;;5045:2:1;5030:18;;5023:36;5091:3;5076:19;;4873:228::o;5106:398::-;5308:2;5290:21;;;5347:2;5327:18;;;5320:30;5386:34;5381:2;5366:18;;5359:62;-1:-1:-1;;;5452:2:1;5437:18;;5430:32;5494:3;5479:19;;5280:224::o;5509:351::-;5711:2;5693:21;;;5750:2;5730:18;;;5723:30;5789:29;5784:2;5769:18;;5762:57;5851:2;5836:18;;5683:177::o;5865:412::-;6067:2;6049:21;;;6106:2;6086:18;;;6079:30;6145:34;6140:2;6125:18;;6118:62;-1:-1:-1;;;6211:2:1;6196:18;;6189:46;6267:3;6252:19;;6039:238::o;6282:356::-;6484:2;6466:21;;;6503:18;;;6496:30;6562:34;6557:2;6542:18;;6535:62;6629:2;6614:18;;6456:182::o;6643:401::-;6845:2;6827:21;;;6884:2;6864:18;;;6857:30;6923:34;6918:2;6903:18;;6896:62;-1:-1:-1;;;6989:2:1;6974:18;;6967:35;7034:3;7019:19;;6817:227::o;7049:400::-;7251:2;7233:21;;;7290:2;7270:18;;;7263:30;7329:34;7324:2;7309:18;;7302:62;-1:-1:-1;;;7395:2:1;7380:18;;7373:34;7439:3;7424:19;;7223:226::o;7454:411::-;7656:2;7638:21;;;7695:2;7675:18;;;7668:30;7734:34;7729:2;7714:18;;7707:62;-1:-1:-1;;;7800:2:1;7785:18;;7778:45;7855:3;7840:19;;7628:237::o;8052:184::-;8224:4;8212:17;;;;8194:36;;8182:2;8167:18;;8149:87::o;8241:128::-;;8312:1;8308:6;8305:1;8302:13;8299:2;;;8318:18;;:::i;:::-;-1:-1:-1;8354:9:1;;8289:80::o;8374:125::-;;8442:1;8439;8436:8;8433:2;;;8447:18;;:::i;:::-;-1:-1:-1;8484:9:1;;8423:76::o;8504:380::-;8589:1;8579:12;;8636:1;8626:12;;;8647:2;;8701:4;8693:6;8689:17;8679:27;;8647:2;8754;8746:6;8743:14;8723:18;8720:38;8717:2;;;8800:10;8795:3;8791:20;8788:1;8781:31;8835:4;8832:1;8825:15;8863:4;8860:1;8853:15;8717:2;;8559:325;;;:::o;8889:127::-;8950:10;8945:3;8941:20;8938:1;8931:31;8981:4;8978:1;8971:15;9005:4;9002:1;8995:15

Swarm Source

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