ETH Price: $3,137.43 (-4.79%)
 

Overview

Max Total Supply

48 GAS OG

Holders

32

Market

Volume (24H)

N/A

Min Price (24H)

N/A

Max Price (24H)

N/A
Filtered by Token Holder
touch911.eth
Balance
1 GAS OG
0x899Ab2aE724f308D914A144298Dd2d018587536c
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:
GangsterAllStarOG

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-06-05
*/

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

//////////////////////////////////////////////////////////////////////////////
//    _____                   __            ___   ____  ______              //
//   / ___/__ ____  ___ ____ / /____ ____  / _ | / / / / __/ /____ _____    //
//  / (_ / _ `/ _ \/ _ `(_-</ __/ -_) __/ / __ |/ / / _\ \/ __/ _ `/ __/    //
//  \___/\_,_/_//_/\_, /___/\__/\__/_/   /_/ |_/_/_/ /___/\__/\_,_/_/       //
//                /___/                                                     //
//     ____ ___    ___                                                      //
//    / __// _ \  / _ )___  ___ ___ ___ ___                                 //
//   /__ \/ // / / _  / _ \(_-<(_-</ -_|_-<                                 //
//  /____/\___/ /____/\___/___/___/\__/___/                                 //
//                                                                          //
//   Migration by: 0xInuarashi                                              //
//                                                                          //
//////////////////////////////////////////////////////////////////////////////

contract ERC721I {

    string public name; string public symbol;
    string internal baseTokenURI; string internal baseTokenURI_EXT;
    constructor(string memory name_, string memory symbol_) {
        name = name_; symbol = symbol_; 
    }

    uint256 public totalSupply; 
    mapping(uint256 => address) public ownerOf; 
    mapping(address => uint256) public balanceOf; 

    mapping(uint256 => address) public getApproved; 
    mapping(address => mapping(address => bool)) public isApprovedForAll; 

    // Events
    event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);
    event Mint(address indexed to, uint256 tokenId);
    event Approval(address indexed owner, address indexed approved, 
    uint256 indexed tokenId);
    event ApprovalForAll(address indexed owner, address indexed operator, 
    bool approved);

    // // internal write functions
    // mint
    function _mint(address to_, uint256 tokenId_) internal virtual {
        require(to_ != address(0x0), 
            "ERC721I: _mint() Mint to Zero Address");
        require(ownerOf[tokenId_] == address(0x0), 
            "ERC721I: _mint() Token to Mint Already Exists!");

        balanceOf[to_]++;
        ownerOf[tokenId_] = to_;

        emit Transfer(address(0x0), to_, tokenId_);
    }

    // transfer
    function _transfer(address from_, address to_, uint256 tokenId_) internal virtual {
        require(from_ == ownerOf[tokenId_], 
            "ERC721I: _transfer() Transfer Not Owner of Token!");
        require(to_ != address(0x0), 
            "ERC721I: _transfer() Transfer to Zero Address!");

        // checks if there is an approved address clears it if there is
        if (getApproved[tokenId_] != address(0x0)) { 
            _approve(address(0x0), tokenId_); 
        } 

        ownerOf[tokenId_] = to_; 
        balanceOf[from_]--;
        balanceOf[to_]++;

        emit Transfer(from_, to_, tokenId_);
    }

    // approve
    function _approve(address to_, uint256 tokenId_) internal virtual {
        if (getApproved[tokenId_] != to_) {
            getApproved[tokenId_] = to_;
            emit Approval(ownerOf[tokenId_], to_, tokenId_);
        }
    }
    function _setApprovalForAll(address owner_, address operator_, bool approved_)
    internal virtual {
        require(owner_ != operator_, 
            "ERC721I: _setApprovalForAll() Owner must not be the Operator!");
        isApprovedForAll[owner_][operator_] = approved_;
        emit ApprovalForAll(owner_, operator_, approved_);
    }

    // token uri
    function _setBaseTokenURI(string memory uri_) internal virtual {
        baseTokenURI = uri_;
    }
    function _setBaseTokenURI_EXT(string memory ext_) internal virtual {
        baseTokenURI_EXT = ext_;
    }

    // // Internal View Functions
    // Embedded Libraries
    function _toString(uint256 value_) internal pure returns (string memory) {
        if (value_ == 0) { return "0"; }
        uint256 _iterate = value_; uint256 _digits;
        while (_iterate != 0) { _digits++; _iterate /= 10; } // get digits in value_
        bytes memory _buffer = new bytes(_digits);
        while (value_ != 0) { _digits--; _buffer[_digits] = bytes1(uint8(
            48 + uint256(value_ % 10 ))); value_ /= 10; } // create bytes of value_
        return string(_buffer); // return string converted bytes of value_
    }

    // Functional Views
    function _isApprovedOrOwner(address spender_, uint256 tokenId_) internal 
    view virtual returns (bool) {
        require(ownerOf[tokenId_] != address(0x0), 
            "ERC721I: _isApprovedOrOwner() Owner is Zero Address!");
        address _owner = ownerOf[tokenId_];
        return (spender_ == _owner 
            || spender_ == getApproved[tokenId_] 
            || isApprovedForAll[_owner][spender_]);
    }
    function _exists(uint256 tokenId_) internal view virtual returns (bool) {
        return ownerOf[tokenId_] != address(0x0);
    }

    // // public write functions
    function approve(address to_, uint256 tokenId_) public virtual {
        address _owner = ownerOf[tokenId_];
        require(to_ != _owner, 
            "ERC721I: approve() Cannot approve yourself!");
        require(msg.sender == _owner || isApprovedForAll[_owner][msg.sender],
            "ERC721I: Caller not owner or Approved!");
        _approve(to_, tokenId_);
    }
    function setApprovalForAll(address operator_, bool approved_) public virtual {
        _setApprovalForAll(msg.sender, operator_, approved_);
    }
    function transferFrom(address from_, address to_, uint256 tokenId_) 
    public virtual {
        require(_isApprovedOrOwner(msg.sender, tokenId_), 
            "ERC721I: transferFrom() _isApprovedOrOwner = false!");
        _transfer(from_, to_, tokenId_);
    }
    function safeTransferFrom(address from_, address to_, uint256 tokenId_, 
    bytes memory data_) public virtual {
        transferFrom(from_, to_, tokenId_);
        if (to_.code.length != 0) {
            (, bytes memory _returned) = to_.staticcall(abi.encodeWithSelector(
                0x150b7a02, msg.sender, from_, tokenId_, data_));
            bytes4 _selector = abi.decode(_returned, (bytes4));
            require(_selector == 0x150b7a02, 
                "ERC721I: safeTransferFrom() to_ not ERC721Receivable!");
        }
    }
    function safeTransferFrom(address from_, address to_, uint256 tokenId_) 
    public virtual {
        safeTransferFrom(from_, to_, tokenId_, "");
    }

    // 0xInuarashi Custom Functions
    function multiTransferFrom(address from_, address to_, uint256[] memory tokenIds_)
    public virtual {
        for (uint256 i = 0; i < tokenIds_.length; i++) {
            transferFrom(from_, to_, tokenIds_[i]);
        }
    }
    function multiSafeTransferFrom(address from_, address to_, 
    uint256[] memory tokenIds_, bytes memory data_) public virtual {
        for (uint256 i = 0; i < tokenIds_.length; i++) {
            safeTransferFrom(from_, to_, tokenIds_[i], data_);
        }
    }

    // OZ Standard Stuff
    function supportsInterface(bytes4 interfaceId) public view virtual returns (bool) {
        return
            interfaceId == 0x01ffc9a7 || // ERC165 Interface ID for ERC165
            interfaceId == 0x80ac58cd || // ERC165 Interface ID for ERC721
            interfaceId == 0x5b5e139f; // ERC165 Interface ID for ERC721Metadata
    }
    
    function tokenURI(uint256 tokenId_) public view virtual returns (string memory) {
        require(ownerOf[tokenId_] != address(0x0), 
            "ERC721I: tokenURI() Token does not exist!");
        return string(abi.encodePacked(
            baseTokenURI, _toString(tokenId_), baseTokenURI_EXT));
    }
    // // public view functions
    // never use these for functions ever, they are expensive af and for view only 
    function walletOfOwner(address address_) public virtual view 
    returns (uint256[] memory) {
        uint256 _balance = balanceOf[address_];
        uint256[] memory _tokens = new uint256[] (_balance);
        uint256 _index;
        uint256 _loopThrough = totalSupply;
        for (uint256 i = 0; i < _loopThrough; i++) {
            if (ownerOf[i] == address(0x0) && _tokens[_balance - 1] == 0) {
                _loopThrough++; 
            }
            if (ownerOf[i] == address_) { 
                _tokens[_index] = i; _index++; 
            }
        }
        return _tokens;
    }

    // not sure when this will ever be needed but it conforms to erc721 enumerable
    function tokenOfOwnerByIndex(address address_, uint256 index_) public 
    virtual view returns (uint256) {
        uint256[] memory _wallet = walletOfOwner(address_);
        return _wallet[index_];
    }
}

abstract contract Ownable {
    address public owner; 
    constructor() { owner = msg.sender; }
    modifier onlyOwner { require(owner == msg.sender, "Not Owner!"); _; }
    function transferOwnership(address new_) external onlyOwner { owner = new_; }
}

interface IERC1155 {
    function safeTransferFrom(address from_, address to_, uint256 id_,
    uint256 amount_, bytes calldata data_) external;
}

contract GangsterAllStarOG is ERC721I, Ownable {
    constructor() ERC721I("Gangster All Star OG", "GAS OG") {}

    // Migration Variables
    address public constant burnAddress = 0x000000000000000000000000000000000000dEaD;
    address public constant OSAddress = 0x495f947276749Ce646f68AC8c248420045cb7b5e;
    IERC1155 public OSStore = IERC1155(OSAddress);
    bool public migrationEnabled = true; 

    // Events
    event Migrated(address migrator_, uint256 newTokenId_, uint256 oldTokenId_);

    // Modifiers
    modifier onlySender { require(msg.sender == tx.origin, "No Smart Contracts!"); _; }
    modifier onlyMigration { require(migrationEnabled, "Migration Disabled!"); _; }

    // Administration
    function setMigration(bool bool_) external onlyOwner {
        migrationEnabled = bool_;
    }

    function setBaseTokenURI(string calldata uri_) external onlyOwner {
        _setBaseTokenURI(uri_);
    }
    function setBaseTokenURI_EXT(string calldata ext_) external onlyOwner {
        _setBaseTokenURI_EXT(ext_);
    }

    // Token ID Finder
    function getRawIdFromOS(uint256 tokenId_) public pure returns (uint256) {
        return (tokenId_ 
        & 0x0000000000000000000000000000000000000000ffffffffffffff0000000000) >> 40;
    }
    function isCreatedByGAS(uint256 tokenId_) public pure returns (bool) {
        return tokenId_ >> 96 
            == 0x000000000000000000000000077afa85c86ac799b04d0f7aab6c81bfe4186773;
    }
    function getTokenOffsets(uint256 tokenId_) public pure returns (uint256) {
        if ((tokenId_ >= 71 && tokenId_ <= 80)
            || tokenId_ == 82) 
            return 70;

        if (tokenId_ == 83 
            || (tokenId_ >= 93 && tokenId_ <= 102)
            || (tokenId_ >= 105 && tokenId_ <= 112)) 
            return 72;

        if ((tokenId_ >= 84 && tokenId_ <= 91)) 
            return 71;
        
        if ((tokenId_ >= 115 && tokenId_ <= 124))
            return 74;

        if (tokenId_ == 113 
            || tokenId_ == 114)
            return 82;
        
        else revert ("GAS OG: Unable to determine offset!");
    }
    function getValidOGTokenId(uint256 tokenId_) public pure returns (uint256) {
        require(isCreatedByGAS(tokenId_), 
            "This token was not created by GAS!");

        uint256 _rawId = getRawIdFromOS(tokenId_);
        return _rawId - getTokenOffsets(_rawId);
    }

    // Migration Logic
    function migrateGangster(uint256 tokenId_) external onlySender onlyMigration {
        uint256 _newTokenId = getValidOGTokenId(tokenId_);

        // Burn the OpenStore Token
        OSStore.safeTransferFrom(msg.sender, burnAddress, tokenId_, 1, "");

        // Mint the new Token ID to msg.sender
        _mint(msg.sender, _newTokenId);

        // Increment TotalSupply
        totalSupply++;

        // Emit the Migration Event
        emit Migrated(msg.sender, _newTokenId, tokenId_);
    }

    // Mint ID 19
    function mintStuck(address to_) external onlyOwner {
        _mint(to_, 19);
        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":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"migrator_","type":"address"},{"indexed":false,"internalType":"uint256","name":"newTokenId_","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"oldTokenId_","type":"uint256"}],"name":"Migrated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Mint","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"OSAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"OSStore","outputs":[{"internalType":"contract IERC1155","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to_","type":"address"},{"internalType":"uint256","name":"tokenId_","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"burnAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId_","type":"uint256"}],"name":"getRawIdFromOS","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId_","type":"uint256"}],"name":"getTokenOffsets","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId_","type":"uint256"}],"name":"getValidOGTokenId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId_","type":"uint256"}],"name":"isCreatedByGAS","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId_","type":"uint256"}],"name":"migrateGangster","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"migrationEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to_","type":"address"}],"name":"mintStuck","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from_","type":"address"},{"internalType":"address","name":"to_","type":"address"},{"internalType":"uint256[]","name":"tokenIds_","type":"uint256[]"},{"internalType":"bytes","name":"data_","type":"bytes"}],"name":"multiSafeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from_","type":"address"},{"internalType":"address","name":"to_","type":"address"},{"internalType":"uint256[]","name":"tokenIds_","type":"uint256[]"}],"name":"multiTransferFrom","outputs":[],"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":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from_","type":"address"},{"internalType":"address","name":"to_","type":"address"},{"internalType":"uint256","name":"tokenId_","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from_","type":"address"},{"internalType":"address","name":"to_","type":"address"},{"internalType":"uint256","name":"tokenId_","type":"uint256"},{"internalType":"bytes","name":"data_","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator_","type":"address"},{"internalType":"bool","name":"approved_","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"uri_","type":"string"}],"name":"setBaseTokenURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"ext_","type":"string"}],"name":"setBaseTokenURI_EXT","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"bool_","type":"bool"}],"name":"setMigration","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"address_","type":"address"},{"internalType":"uint256","name":"index_","type":"uint256"}],"name":"tokenOfOwnerByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId_","type":"uint256"}],"name":"tokenURI","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":"from_","type":"address"},{"internalType":"address","name":"to_","type":"address"},{"internalType":"uint256","name":"tokenId_","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"new_","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"address_","type":"address"}],"name":"walletOfOwner","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"}]

6080604052600a80546001600160a81b0319167401495f947276749ce646f68ac8c248420045cb7b5e1790553480156200003857600080fd5b50604080518082018252601481527f47616e677374657220416c6c2053746172204f47000000000000000000000000602080830191825283518085019094526006845265474153204f4760d01b9084015281519192916200009c91600091620000cd565b508051620000b2906001906020840190620000cd565b5050600980546001600160a01b0319163317905550620001b0565b828054620000db9062000173565b90600052602060002090601f016020900481019282620000ff57600085556200014a565b82601f106200011a57805160ff19168380011785556200014a565b828001600101855582156200014a579182015b828111156200014a5782518255916020019190600101906200012d565b50620001589291506200015c565b5090565b5b808211156200015857600081556001016200015d565b600181811c908216806200018857607f821691505b60208210811415620001aa57634e487b7160e01b600052602260045260246000fd5b50919050565b611fef80620001c06000396000f3fe608060405234801561001057600080fd5b50600436106101fb5760003560e01c80636352211e1161011a578063a22cb465116100ad578063c87b56dd1161007c578063c87b56dd146104a4578063e985e9c5146104b7578063f2fde38b146104e5578063f487c602146104f8578063f64c6a071461050b57600080fd5b8063a22cb46514610450578063a3f7fe8214610463578063aeb327b01461047e578063b88d4fde1461049157600080fd5b80637f1e250c116100e95780637f1e250c146104055780638da5cb5b1461041857806394a443781461042b57806395d89b411461044857600080fd5b80636352211e1461038957806370a08231146103b257806370d5ae05146103d25780637dffeb5f146103db57600080fd5b80632f745c59116101925780633d607f65116101615780633d607f651461033057806342842e0e14610343578063438b63001461035657806349c389c91461037657600080fd5b80632f745c59146102e357806330176e13146102f657806335b944bf146103095780633a3473b61461031d57600080fd5b8063095ea7b3116101ce578063095ea7b31461029357806318160ddd146102a65780631b1ca044146102bd57806323b872dd146102d057600080fd5b806301ffc9a71461020057806302ffaed11461022857806306fdde031461023d578063081812fc14610252575b600080fd5b61021361020e366004611b95565b61051e565b60405190151581526020015b60405180910390f35b61023b610236366004611bcf565b610570565b005b6102456105e6565b60405161021f9190611df0565b61027b610260366004611c41565b6007602052600090815260409020546001600160a01b031681565b6040516001600160a01b03909116815260200161021f565b61023b6102a1366004611b50565b610674565b6102af60045481565b60405190815260200161021f565b600a5461027b906001600160a01b031681565b61023b6102de366004611a8e565b610798565b6102af6102f1366004611b50565b610815565b61023b610304366004611bcf565b610846565b600a5461021390600160a01b900460ff1681565b61023b61032b366004611a09565b6108af565b6102af61033e366004611c41565b6108f9565b61023b610351366004611a8e565b610a19565b61036961036436600461195d565b610a34565b60405161021f9190611dac565b61023b610384366004611c41565b610b6c565b61027b610397366004611c41565b6005602052600090815260409020546001600160a01b031681565b6102af6103c036600461195d565b60066020526000908152604090205481565b61027b61dead81565b6102136103e9366004611c41565b60601c73077afa85c86ac799b04d0f7aab6c81bfe41867731490565b61023b610413366004611b7a565b610cf1565b60095461027b906001600160a01b031681565b6102af610439366004611c41565b60281c66ffffffffffffff1690565b610245610d39565b61023b61045e366004611b26565b610d46565b61027b73495f947276749ce646f68ac8c248420045cb7b5e81565b61023b61048c36600461195d565b610d51565b61023b61049f366004611aca565b610d9e565b6102456104b2366004611c41565b610efd565b6102136104c5366004611978565b600860209081526000928352604080842090915290825290205460ff1681565b61023b6104f336600461195d565b610fab565b61023b6105063660046119ab565b610ff7565b6102af610519366004611c41565b611039565b60006301ffc9a760e01b6001600160e01b03198316148061054f57506380ac58cd60e01b6001600160e01b03198316145b8061056a5750635b5e139f60e01b6001600160e01b03198316145b92915050565b6009546001600160a01b031633146105a35760405162461bcd60e51b815260040161059a90611e03565b60405180910390fd5b6105e282828080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506110d592505050565b5050565b600080546105f390611ede565b80601f016020809104026020016040519081016040528092919081815260200182805461061f90611ede565b801561066c5780601f106106415761010080835404028352916020019161066c565b820191906000526020600020905b81548152906001019060200180831161064f57829003601f168201915b505050505081565b6000818152600560205260409020546001600160a01b039081169083168114156106f45760405162461bcd60e51b815260206004820152602b60248201527f455243373231493a20617070726f766528292043616e6e6f7420617070726f7660448201526a6520796f757273656c662160a81b606482015260840161059a565b336001600160a01b038216148061072e57506001600160a01b038116600090815260086020908152604080832033845290915290205460ff165b6107895760405162461bcd60e51b815260206004820152602660248201527f455243373231493a2043616c6c6572206e6f74206f776e6572206f7220417070604482015265726f7665642160d01b606482015260840161059a565b61079383836110e8565b505050565b6107a23382611170565b61080a5760405162461bcd60e51b815260206004820152603360248201527f455243373231493a207472616e7366657246726f6d2829205f6973417070726f6044820152727665644f724f776e6572203d2066616c73652160681b606482015260840161059a565b61079383838361126c565b60008061082184610a34565b905080838151811061083557610835611f74565b602002602001015191505092915050565b6009546001600160a01b031633146108705760405162461bcd60e51b815260040161059a90611e03565b6105e282828080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061143e92505050565b60005b82518110156108f2576108e085858584815181106108d2576108d2611f74565b602002602001015185610d9e565b806108ea81611f19565b9150506108b2565b5050505050565b60006047821015801561090d575060508211155b806109185750816052145b1561092557506046919050565b81605314806109415750605d8210158015610941575060668211155b80610959575060698210158015610959575060708211155b1561096657506048919050565b605482101580156109785750605b8211155b1561098557506047919050565b607382101580156109975750607c8211155b156109a45750604a919050565b81607114806109b35750816072145b156109c057506052919050565b60405162461bcd60e51b815260206004820152602360248201527f474153204f473a20556e61626c6520746f2064657465726d696e65206f66667360448201526265742160e81b606482015260840161059a565b919050565b61079383838360405180602001604052806000815250610d9e565b6001600160a01b0381166000908152600660205260408120546060918167ffffffffffffffff811115610a6957610a69611f8a565b604051908082528060200260200182016040528015610a92578160200160208202803683370190505b50600454909150600090815b81811015610b61576000818152600560205260409020546001600160a01b0316158015610aee575083610ad2600187611e84565b81518110610ae257610ae2611f74565b60200260200101516000145b15610b015781610afd81611f19565b9250505b6000818152600560205260409020546001600160a01b0388811691161415610b4f5780848481518110610b3657610b36611f74565b602090810291909101015282610b4b81611f19565b9350505b80610b5981611f19565b915050610a9e565b509195945050505050565b333214610bb15760405162461bcd60e51b81526020600482015260136024820152724e6f20536d61727420436f6e7472616374732160681b604482015260640161059a565b600a54600160a01b900460ff16610c005760405162461bcd60e51b81526020600482015260136024820152724d6967726174696f6e2044697361626c65642160681b604482015260640161059a565b6000610c0b82611039565b600a54604051637921219560e11b815233600482015261dead6024820152604481018590526001606482015260a06084820152600060a48201529192506001600160a01b03169063f242432a9060c401600060405180830381600087803b158015610c7557600080fd5b505af1158015610c89573d6000803e3d6000fd5b50505050610c973382611451565b60048054906000610ca783611f19565b909155505060408051338152602081018390529081018390527fd083678824038160bef3975359ab29f19c3f0e9bcf9d7ead540a492d4d678b639060600160405180910390a15050565b6009546001600160a01b03163314610d1b5760405162461bcd60e51b815260040161059a90611e03565b600a8054911515600160a01b0260ff60a01b19909216919091179055565b600180546105f390611ede565b6105e23383836115b3565b6009546001600160a01b03163314610d7b5760405162461bcd60e51b815260040161059a90611e03565b610d86816013611451565b60048054906000610d9683611f19565b919050555050565b610da9848484610798565b6001600160a01b0383163b15610ef7576000836001600160a01b031663150b7a0233878686604051602401610de19493929190611d6f565b6040516020818303038152906040529060e01b6020820180516001600160e01b038381831617835250505050604051610e1a9190611d20565b600060405180830381855afa9150503d8060008114610e55576040519150601f19603f3d011682016040523d82523d6000602084013e610e5a565b606091505b50915050600081806020019051810190610e749190611bb2565b9050630a85bd0160e11b6001600160e01b0319821614610ef45760405162461bcd60e51b815260206004820152603560248201527f455243373231493a20736166655472616e7366657246726f6d282920746f5f206044820152746e6f742045524337323152656365697661626c652160581b606482015260840161059a565b50505b50505050565b6000818152600560205260409020546060906001600160a01b0316610f765760405162461bcd60e51b815260206004820152602960248201527f455243373231493a20746f6b656e555249282920546f6b656e20646f6573206e6044820152686f742065786973742160b81b606482015260840161059a565b6002610f81836116a8565b6003604051602001610f9593929190611d3c565b6040516020818303038152906040529050919050565b6009546001600160a01b03163314610fd55760405162461bcd60e51b815260040161059a90611e03565b600980546001600160a01b0319166001600160a01b0392909216919091179055565b60005b8151811015610ef757611027848484848151811061101a5761101a611f74565b6020026020010151610798565b8061103181611f19565b915050610ffa565b6000606082901c73077afa85c86ac799b04d0f7aab6c81bfe4186773146110ad5760405162461bcd60e51b815260206004820152602260248201527f5468697320746f6b656e20776173206e6f742063726561746564206279204741604482015261532160f01b606482015260840161059a565b66ffffffffffffff602883901c166110c4816108f9565b6110ce9082611e84565b9392505050565b80516105e29060039060208401906117a7565b6000818152600760205260409020546001600160a01b038381169116146105e257600081815260076020908152604080832080546001600160a01b0319166001600160a01b038781169182179092556005909352818420549151859492909116917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a45050565b6000818152600560205260408120546001600160a01b03166111f15760405162461bcd60e51b815260206004820152603460248201527f455243373231493a205f6973417070726f7665644f724f776e65722829204f776044820152736e6572206973205a65726f20416464726573732160601b606482015260840161059a565b6000828152600560205260409020546001600160a01b0390811690841681148061123457506000838152600760205260409020546001600160a01b038581169116145b8061126457506001600160a01b0380821660009081526008602090815260408083209388168352929052205460ff165b949350505050565b6000818152600560205260409020546001600160a01b038481169116146112ef5760405162461bcd60e51b815260206004820152603160248201527f455243373231493a205f7472616e736665722829205472616e73666572204e6f60448201527074204f776e6572206f6620546f6b656e2160781b606482015260840161059a565b6001600160a01b03821661135c5760405162461bcd60e51b815260206004820152602e60248201527f455243373231493a205f7472616e736665722829205472616e7366657220746f60448201526d205a65726f20416464726573732160901b606482015260840161059a565b6000818152600760205260409020546001600160a01b031615611384576113846000826110e8565b600081815260056020908152604080832080546001600160a01b0319166001600160a01b038781169190911790915586168352600690915281208054916113ca83611ec7565b90915550506001600160a01b03821660009081526006602052604081208054916113f383611f19565b919050555080826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b80516105e29060029060208401906117a7565b6001600160a01b0382166114b55760405162461bcd60e51b815260206004820152602560248201527f455243373231493a205f6d696e742829204d696e7420746f205a65726f204164604482015264647265737360d81b606482015260840161059a565b6000818152600560205260409020546001600160a01b0316156115315760405162461bcd60e51b815260206004820152602e60248201527f455243373231493a205f6d696e74282920546f6b656e20746f204d696e74204160448201526d6c7265616479204578697374732160901b606482015260840161059a565b6001600160a01b038216600090815260066020526040812080549161155583611f19565b909155505060008181526005602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b816001600160a01b0316836001600160a01b0316141561163b5760405162461bcd60e51b815260206004820152603d60248201527f455243373231493a205f736574417070726f76616c466f72416c6c2829204f7760448201527f6e6572206d757374206e6f7420626520746865204f70657261746f7221000000606482015260840161059a565b6001600160a01b03838116600081815260086020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6060816116cc5750506040805180820190915260018152600360fc1b602082015290565b8160005b81156116f657806116e081611f19565b91506116ef9050600a83611e70565b91506116d0565b60008167ffffffffffffffff81111561171157611711611f8a565b6040519080825280601f01601f19166020018201604052801561173b576020820181803683370190505b5090505b8415611264578161174f81611ec7565b925061175e9050600a86611f34565b611769906030611e58565b60f81b81838151811061177e5761177e611f74565b60200101906001600160f81b031916908160001a9053506117a0600a86611e70565b945061173f565b8280546117b390611ede565b90600052602060002090601f0160209004810192826117d5576000855561181b565b82601f106117ee57805160ff191683800117855561181b565b8280016001018555821561181b579182015b8281111561181b578251825591602001919060010190611800565b5061182792915061182b565b5090565b5b80821115611827576000815560010161182c565b80356001600160a01b0381168114610a1457600080fd5b600082601f83011261186857600080fd5b8135602067ffffffffffffffff82111561188457611884611f8a565b8160051b611893828201611e27565b8381528281019086840183880185018910156118ae57600080fd5b600093505b858410156118d15780358352600193909301929184019184016118b3565b50979650505050505050565b80358015158114610a1457600080fd5b600082601f8301126118fe57600080fd5b813567ffffffffffffffff81111561191857611918611f8a565b61192b601f8201601f1916602001611e27565b81815284602083860101111561194057600080fd5b816020850160208301376000918101602001919091529392505050565b60006020828403121561196f57600080fd5b6110ce82611840565b6000806040838503121561198b57600080fd5b61199483611840565b91506119a260208401611840565b90509250929050565b6000806000606084860312156119c057600080fd5b6119c984611840565b92506119d760208501611840565b9150604084013567ffffffffffffffff8111156119f357600080fd5b6119ff86828701611857565b9150509250925092565b60008060008060808587031215611a1f57600080fd5b611a2885611840565b9350611a3660208601611840565b9250604085013567ffffffffffffffff80821115611a5357600080fd5b611a5f88838901611857565b93506060870135915080821115611a7557600080fd5b50611a82878288016118ed565b91505092959194509250565b600080600060608486031215611aa357600080fd5b611aac84611840565b9250611aba60208501611840565b9150604084013590509250925092565b60008060008060808587031215611ae057600080fd5b611ae985611840565b9350611af760208601611840565b925060408501359150606085013567ffffffffffffffff811115611b1a57600080fd5b611a82878288016118ed565b60008060408385031215611b3957600080fd5b611b4283611840565b91506119a2602084016118dd565b60008060408385031215611b6357600080fd5b611b6c83611840565b946020939093013593505050565b600060208284031215611b8c57600080fd5b6110ce826118dd565b600060208284031215611ba757600080fd5b81356110ce81611fa0565b600060208284031215611bc457600080fd5b81516110ce81611fa0565b60008060208385031215611be257600080fd5b823567ffffffffffffffff80821115611bfa57600080fd5b818501915085601f830112611c0e57600080fd5b813581811115611c1d57600080fd5b866020828501011115611c2f57600080fd5b60209290920196919550909350505050565b600060208284031215611c5357600080fd5b5035919050565b60008151808452611c72816020860160208601611e9b565b601f01601f19169290920160200192915050565b8054600090600181811c9080831680611ca057607f831692505b6020808410821415611cc257634e487b7160e01b600052602260045260246000fd5b818015611cd65760018114611ce757611d14565b60ff19861689528489019650611d14565b60008881526020902060005b86811015611d0c5781548b820152908501908301611cf3565b505084890196505b50505050505092915050565b60008251611d32818460208701611e9b565b9190910192915050565b6000611d488286611c86565b8451611d58818360208901611e9b565b611d6481830186611c86565b979650505050505050565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090611da290830184611c5a565b9695505050505050565b6020808252825182820181905260009190848201906040850190845b81811015611de457835183529284019291840191600101611dc8565b50909695505050505050565b6020815260006110ce6020830184611c5a565b6020808252600a90820152694e6f74204f776e65722160b01b604082015260600190565b604051601f8201601f1916810167ffffffffffffffff81118282101715611e5057611e50611f8a565b604052919050565b60008219821115611e6b57611e6b611f48565b500190565b600082611e7f57611e7f611f5e565b500490565b600082821015611e9657611e96611f48565b500390565b60005b83811015611eb6578181015183820152602001611e9e565b83811115610ef75750506000910152565b600081611ed657611ed6611f48565b506000190190565b600181811c90821680611ef257607f821691505b60208210811415611f1357634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415611f2d57611f2d611f48565b5060010190565b600082611f4357611f43611f5e565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160e01b031981168114611fb657600080fd5b5056fea2646970667358221220e2a457130edded151ac7d69bc1eff98bf338a3ea0d433fac33520b27e21615c264736f6c63430008070033

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101fb5760003560e01c80636352211e1161011a578063a22cb465116100ad578063c87b56dd1161007c578063c87b56dd146104a4578063e985e9c5146104b7578063f2fde38b146104e5578063f487c602146104f8578063f64c6a071461050b57600080fd5b8063a22cb46514610450578063a3f7fe8214610463578063aeb327b01461047e578063b88d4fde1461049157600080fd5b80637f1e250c116100e95780637f1e250c146104055780638da5cb5b1461041857806394a443781461042b57806395d89b411461044857600080fd5b80636352211e1461038957806370a08231146103b257806370d5ae05146103d25780637dffeb5f146103db57600080fd5b80632f745c59116101925780633d607f65116101615780633d607f651461033057806342842e0e14610343578063438b63001461035657806349c389c91461037657600080fd5b80632f745c59146102e357806330176e13146102f657806335b944bf146103095780633a3473b61461031d57600080fd5b8063095ea7b3116101ce578063095ea7b31461029357806318160ddd146102a65780631b1ca044146102bd57806323b872dd146102d057600080fd5b806301ffc9a71461020057806302ffaed11461022857806306fdde031461023d578063081812fc14610252575b600080fd5b61021361020e366004611b95565b61051e565b60405190151581526020015b60405180910390f35b61023b610236366004611bcf565b610570565b005b6102456105e6565b60405161021f9190611df0565b61027b610260366004611c41565b6007602052600090815260409020546001600160a01b031681565b6040516001600160a01b03909116815260200161021f565b61023b6102a1366004611b50565b610674565b6102af60045481565b60405190815260200161021f565b600a5461027b906001600160a01b031681565b61023b6102de366004611a8e565b610798565b6102af6102f1366004611b50565b610815565b61023b610304366004611bcf565b610846565b600a5461021390600160a01b900460ff1681565b61023b61032b366004611a09565b6108af565b6102af61033e366004611c41565b6108f9565b61023b610351366004611a8e565b610a19565b61036961036436600461195d565b610a34565b60405161021f9190611dac565b61023b610384366004611c41565b610b6c565b61027b610397366004611c41565b6005602052600090815260409020546001600160a01b031681565b6102af6103c036600461195d565b60066020526000908152604090205481565b61027b61dead81565b6102136103e9366004611c41565b60601c73077afa85c86ac799b04d0f7aab6c81bfe41867731490565b61023b610413366004611b7a565b610cf1565b60095461027b906001600160a01b031681565b6102af610439366004611c41565b60281c66ffffffffffffff1690565b610245610d39565b61023b61045e366004611b26565b610d46565b61027b73495f947276749ce646f68ac8c248420045cb7b5e81565b61023b61048c36600461195d565b610d51565b61023b61049f366004611aca565b610d9e565b6102456104b2366004611c41565b610efd565b6102136104c5366004611978565b600860209081526000928352604080842090915290825290205460ff1681565b61023b6104f336600461195d565b610fab565b61023b6105063660046119ab565b610ff7565b6102af610519366004611c41565b611039565b60006301ffc9a760e01b6001600160e01b03198316148061054f57506380ac58cd60e01b6001600160e01b03198316145b8061056a5750635b5e139f60e01b6001600160e01b03198316145b92915050565b6009546001600160a01b031633146105a35760405162461bcd60e51b815260040161059a90611e03565b60405180910390fd5b6105e282828080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506110d592505050565b5050565b600080546105f390611ede565b80601f016020809104026020016040519081016040528092919081815260200182805461061f90611ede565b801561066c5780601f106106415761010080835404028352916020019161066c565b820191906000526020600020905b81548152906001019060200180831161064f57829003601f168201915b505050505081565b6000818152600560205260409020546001600160a01b039081169083168114156106f45760405162461bcd60e51b815260206004820152602b60248201527f455243373231493a20617070726f766528292043616e6e6f7420617070726f7660448201526a6520796f757273656c662160a81b606482015260840161059a565b336001600160a01b038216148061072e57506001600160a01b038116600090815260086020908152604080832033845290915290205460ff165b6107895760405162461bcd60e51b815260206004820152602660248201527f455243373231493a2043616c6c6572206e6f74206f776e6572206f7220417070604482015265726f7665642160d01b606482015260840161059a565b61079383836110e8565b505050565b6107a23382611170565b61080a5760405162461bcd60e51b815260206004820152603360248201527f455243373231493a207472616e7366657246726f6d2829205f6973417070726f6044820152727665644f724f776e6572203d2066616c73652160681b606482015260840161059a565b61079383838361126c565b60008061082184610a34565b905080838151811061083557610835611f74565b602002602001015191505092915050565b6009546001600160a01b031633146108705760405162461bcd60e51b815260040161059a90611e03565b6105e282828080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061143e92505050565b60005b82518110156108f2576108e085858584815181106108d2576108d2611f74565b602002602001015185610d9e565b806108ea81611f19565b9150506108b2565b5050505050565b60006047821015801561090d575060508211155b806109185750816052145b1561092557506046919050565b81605314806109415750605d8210158015610941575060668211155b80610959575060698210158015610959575060708211155b1561096657506048919050565b605482101580156109785750605b8211155b1561098557506047919050565b607382101580156109975750607c8211155b156109a45750604a919050565b81607114806109b35750816072145b156109c057506052919050565b60405162461bcd60e51b815260206004820152602360248201527f474153204f473a20556e61626c6520746f2064657465726d696e65206f66667360448201526265742160e81b606482015260840161059a565b919050565b61079383838360405180602001604052806000815250610d9e565b6001600160a01b0381166000908152600660205260408120546060918167ffffffffffffffff811115610a6957610a69611f8a565b604051908082528060200260200182016040528015610a92578160200160208202803683370190505b50600454909150600090815b81811015610b61576000818152600560205260409020546001600160a01b0316158015610aee575083610ad2600187611e84565b81518110610ae257610ae2611f74565b60200260200101516000145b15610b015781610afd81611f19565b9250505b6000818152600560205260409020546001600160a01b0388811691161415610b4f5780848481518110610b3657610b36611f74565b602090810291909101015282610b4b81611f19565b9350505b80610b5981611f19565b915050610a9e565b509195945050505050565b333214610bb15760405162461bcd60e51b81526020600482015260136024820152724e6f20536d61727420436f6e7472616374732160681b604482015260640161059a565b600a54600160a01b900460ff16610c005760405162461bcd60e51b81526020600482015260136024820152724d6967726174696f6e2044697361626c65642160681b604482015260640161059a565b6000610c0b82611039565b600a54604051637921219560e11b815233600482015261dead6024820152604481018590526001606482015260a06084820152600060a48201529192506001600160a01b03169063f242432a9060c401600060405180830381600087803b158015610c7557600080fd5b505af1158015610c89573d6000803e3d6000fd5b50505050610c973382611451565b60048054906000610ca783611f19565b909155505060408051338152602081018390529081018390527fd083678824038160bef3975359ab29f19c3f0e9bcf9d7ead540a492d4d678b639060600160405180910390a15050565b6009546001600160a01b03163314610d1b5760405162461bcd60e51b815260040161059a90611e03565b600a8054911515600160a01b0260ff60a01b19909216919091179055565b600180546105f390611ede565b6105e23383836115b3565b6009546001600160a01b03163314610d7b5760405162461bcd60e51b815260040161059a90611e03565b610d86816013611451565b60048054906000610d9683611f19565b919050555050565b610da9848484610798565b6001600160a01b0383163b15610ef7576000836001600160a01b031663150b7a0233878686604051602401610de19493929190611d6f565b6040516020818303038152906040529060e01b6020820180516001600160e01b038381831617835250505050604051610e1a9190611d20565b600060405180830381855afa9150503d8060008114610e55576040519150601f19603f3d011682016040523d82523d6000602084013e610e5a565b606091505b50915050600081806020019051810190610e749190611bb2565b9050630a85bd0160e11b6001600160e01b0319821614610ef45760405162461bcd60e51b815260206004820152603560248201527f455243373231493a20736166655472616e7366657246726f6d282920746f5f206044820152746e6f742045524337323152656365697661626c652160581b606482015260840161059a565b50505b50505050565b6000818152600560205260409020546060906001600160a01b0316610f765760405162461bcd60e51b815260206004820152602960248201527f455243373231493a20746f6b656e555249282920546f6b656e20646f6573206e6044820152686f742065786973742160b81b606482015260840161059a565b6002610f81836116a8565b6003604051602001610f9593929190611d3c565b6040516020818303038152906040529050919050565b6009546001600160a01b03163314610fd55760405162461bcd60e51b815260040161059a90611e03565b600980546001600160a01b0319166001600160a01b0392909216919091179055565b60005b8151811015610ef757611027848484848151811061101a5761101a611f74565b6020026020010151610798565b8061103181611f19565b915050610ffa565b6000606082901c73077afa85c86ac799b04d0f7aab6c81bfe4186773146110ad5760405162461bcd60e51b815260206004820152602260248201527f5468697320746f6b656e20776173206e6f742063726561746564206279204741604482015261532160f01b606482015260840161059a565b66ffffffffffffff602883901c166110c4816108f9565b6110ce9082611e84565b9392505050565b80516105e29060039060208401906117a7565b6000818152600760205260409020546001600160a01b038381169116146105e257600081815260076020908152604080832080546001600160a01b0319166001600160a01b038781169182179092556005909352818420549151859492909116917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a45050565b6000818152600560205260408120546001600160a01b03166111f15760405162461bcd60e51b815260206004820152603460248201527f455243373231493a205f6973417070726f7665644f724f776e65722829204f776044820152736e6572206973205a65726f20416464726573732160601b606482015260840161059a565b6000828152600560205260409020546001600160a01b0390811690841681148061123457506000838152600760205260409020546001600160a01b038581169116145b8061126457506001600160a01b0380821660009081526008602090815260408083209388168352929052205460ff165b949350505050565b6000818152600560205260409020546001600160a01b038481169116146112ef5760405162461bcd60e51b815260206004820152603160248201527f455243373231493a205f7472616e736665722829205472616e73666572204e6f60448201527074204f776e6572206f6620546f6b656e2160781b606482015260840161059a565b6001600160a01b03821661135c5760405162461bcd60e51b815260206004820152602e60248201527f455243373231493a205f7472616e736665722829205472616e7366657220746f60448201526d205a65726f20416464726573732160901b606482015260840161059a565b6000818152600760205260409020546001600160a01b031615611384576113846000826110e8565b600081815260056020908152604080832080546001600160a01b0319166001600160a01b038781169190911790915586168352600690915281208054916113ca83611ec7565b90915550506001600160a01b03821660009081526006602052604081208054916113f383611f19565b919050555080826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b80516105e29060029060208401906117a7565b6001600160a01b0382166114b55760405162461bcd60e51b815260206004820152602560248201527f455243373231493a205f6d696e742829204d696e7420746f205a65726f204164604482015264647265737360d81b606482015260840161059a565b6000818152600560205260409020546001600160a01b0316156115315760405162461bcd60e51b815260206004820152602e60248201527f455243373231493a205f6d696e74282920546f6b656e20746f204d696e74204160448201526d6c7265616479204578697374732160901b606482015260840161059a565b6001600160a01b038216600090815260066020526040812080549161155583611f19565b909155505060008181526005602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b816001600160a01b0316836001600160a01b0316141561163b5760405162461bcd60e51b815260206004820152603d60248201527f455243373231493a205f736574417070726f76616c466f72416c6c2829204f7760448201527f6e6572206d757374206e6f7420626520746865204f70657261746f7221000000606482015260840161059a565b6001600160a01b03838116600081815260086020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6060816116cc5750506040805180820190915260018152600360fc1b602082015290565b8160005b81156116f657806116e081611f19565b91506116ef9050600a83611e70565b91506116d0565b60008167ffffffffffffffff81111561171157611711611f8a565b6040519080825280601f01601f19166020018201604052801561173b576020820181803683370190505b5090505b8415611264578161174f81611ec7565b925061175e9050600a86611f34565b611769906030611e58565b60f81b81838151811061177e5761177e611f74565b60200101906001600160f81b031916908160001a9053506117a0600a86611e70565b945061173f565b8280546117b390611ede565b90600052602060002090601f0160209004810192826117d5576000855561181b565b82601f106117ee57805160ff191683800117855561181b565b8280016001018555821561181b579182015b8281111561181b578251825591602001919060010190611800565b5061182792915061182b565b5090565b5b80821115611827576000815560010161182c565b80356001600160a01b0381168114610a1457600080fd5b600082601f83011261186857600080fd5b8135602067ffffffffffffffff82111561188457611884611f8a565b8160051b611893828201611e27565b8381528281019086840183880185018910156118ae57600080fd5b600093505b858410156118d15780358352600193909301929184019184016118b3565b50979650505050505050565b80358015158114610a1457600080fd5b600082601f8301126118fe57600080fd5b813567ffffffffffffffff81111561191857611918611f8a565b61192b601f8201601f1916602001611e27565b81815284602083860101111561194057600080fd5b816020850160208301376000918101602001919091529392505050565b60006020828403121561196f57600080fd5b6110ce82611840565b6000806040838503121561198b57600080fd5b61199483611840565b91506119a260208401611840565b90509250929050565b6000806000606084860312156119c057600080fd5b6119c984611840565b92506119d760208501611840565b9150604084013567ffffffffffffffff8111156119f357600080fd5b6119ff86828701611857565b9150509250925092565b60008060008060808587031215611a1f57600080fd5b611a2885611840565b9350611a3660208601611840565b9250604085013567ffffffffffffffff80821115611a5357600080fd5b611a5f88838901611857565b93506060870135915080821115611a7557600080fd5b50611a82878288016118ed565b91505092959194509250565b600080600060608486031215611aa357600080fd5b611aac84611840565b9250611aba60208501611840565b9150604084013590509250925092565b60008060008060808587031215611ae057600080fd5b611ae985611840565b9350611af760208601611840565b925060408501359150606085013567ffffffffffffffff811115611b1a57600080fd5b611a82878288016118ed565b60008060408385031215611b3957600080fd5b611b4283611840565b91506119a2602084016118dd565b60008060408385031215611b6357600080fd5b611b6c83611840565b946020939093013593505050565b600060208284031215611b8c57600080fd5b6110ce826118dd565b600060208284031215611ba757600080fd5b81356110ce81611fa0565b600060208284031215611bc457600080fd5b81516110ce81611fa0565b60008060208385031215611be257600080fd5b823567ffffffffffffffff80821115611bfa57600080fd5b818501915085601f830112611c0e57600080fd5b813581811115611c1d57600080fd5b866020828501011115611c2f57600080fd5b60209290920196919550909350505050565b600060208284031215611c5357600080fd5b5035919050565b60008151808452611c72816020860160208601611e9b565b601f01601f19169290920160200192915050565b8054600090600181811c9080831680611ca057607f831692505b6020808410821415611cc257634e487b7160e01b600052602260045260246000fd5b818015611cd65760018114611ce757611d14565b60ff19861689528489019650611d14565b60008881526020902060005b86811015611d0c5781548b820152908501908301611cf3565b505084890196505b50505050505092915050565b60008251611d32818460208701611e9b565b9190910192915050565b6000611d488286611c86565b8451611d58818360208901611e9b565b611d6481830186611c86565b979650505050505050565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090611da290830184611c5a565b9695505050505050565b6020808252825182820181905260009190848201906040850190845b81811015611de457835183529284019291840191600101611dc8565b50909695505050505050565b6020815260006110ce6020830184611c5a565b6020808252600a90820152694e6f74204f776e65722160b01b604082015260600190565b604051601f8201601f1916810167ffffffffffffffff81118282101715611e5057611e50611f8a565b604052919050565b60008219821115611e6b57611e6b611f48565b500190565b600082611e7f57611e7f611f5e565b500490565b600082821015611e9657611e96611f48565b500390565b60005b83811015611eb6578181015183820152602001611e9e565b83811115610ef75750506000910152565b600081611ed657611ed6611f48565b506000190190565b600181811c90821680611ef257607f821691505b60208210811415611f1357634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415611f2d57611f2d611f48565b5060010190565b600082611f4357611f43611f5e565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160e01b031981168114611fb657600080fd5b5056fea2646970667358221220e2a457130edded151ac7d69bc1eff98bf338a3ea0d433fac33520b27e21615c264736f6c63430008070033

Deployed Bytecode Sourcemap

9508:3134:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7392:340;;;;;;:::i;:::-;;:::i;:::-;;;10635:14:1;;10628:22;10610:41;;10598:2;10583:18;7392:340:0;;;;;;;;10458:115;;;;;;:::i;:::-;;:::i;:::-;;1208:18;;;:::i;:::-;;;;;;;:::i;1576:46::-;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;1576:46:0;;;;;;-1:-1:-1;;;;;8306:32:1;;;8288:51;;8276:2;8261:18;1576:46:0;8142:203:1;5283:379:0;;;;;;:::i;:::-;;:::i;1438:26::-;;;;;;;;;17674:25:1;;;17662:2;17647:18;1438:26:0;17528:177:1;9828:45:0;;;;;-1:-1:-1;;;;;9828:45:0;;;5822:268;;;;;;:::i;:::-;;:::i;8876:209::-;;;;;;:::i;:::-;;:::i;10345:107::-;;;;;;:::i;:::-;;:::i;9880:35::-;;;;;-1:-1:-1;;;9880:35:0;;;;;;7089:269;;;;;;:::i;:::-;;:::i;11003:670::-;;;;;;:::i;:::-;;:::i;6651:154::-;;;;;;:::i;:::-;;:::i;8177:607::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;11994:510::-;;;;;;:::i;:::-;;:::i;1472:42::-;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;1472:42:0;;;1522:44;;;;;;:::i;:::-;;;;;;;;;;;;;;9656:80;;9694:42;9656:80;;10804:193;;;;;;:::i;:::-;10903:2;10891:14;10923:66;10891:98;;10804:193;10241:96;;;;;;:::i;:::-;;:::i;9125:20::-;;;;;-1:-1:-1;;;;;9125:20:0;;;10605:193;;;;;;:::i;:::-;10788:2;10695:95;;;;10605:193;1228:20;;;:::i;5668:148::-;;;;;;:::i;:::-;;:::i;9743:78::-;;9779:42;9743:78;;12531:108;;;;;;:::i;:::-;;:::i;6096:549::-;;;;;;:::i;:::-;;:::i;7744:309::-;;;;;;:::i;:::-;;:::i;1630:68::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;9271:77;;;;;;:::i;:::-;;:::i;6850:233::-;;;;;;:::i;:::-;;:::i;11679:283::-;;;;;;:::i;:::-;;:::i;7392:340::-;7468:4;-1:-1:-1;;;;;;;;;7505:25:0;;;;:101;;-1:-1:-1;;;;;;;;;;7581:25:0;;;7505:101;:177;;;-1:-1:-1;;;;;;;;;;7657:25:0;;;7505:177;7485:197;7392:340;-1:-1:-1;;7392:340:0:o;10458:115::-;9225:5;;-1:-1:-1;;;;;9225:5:0;9234:10;9225:19;9217:42;;;;-1:-1:-1;;;9217:42:0;;;;;;;:::i;:::-;;;;;;;;;10539:26:::1;10560:4;;10539:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;10539:20:0::1;::::0;-1:-1:-1;;;10539:26:0:i:1;:::-;10458:115:::0;;:::o;1208:18::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5283:379::-;5357:14;5374:17;;;:7;:17;;;;;;-1:-1:-1;;;;;5374:17:0;;;;5410:13;;;;;5402:83;;;;-1:-1:-1;;;5402:83:0;;13628:2:1;5402:83:0;;;13610:21:1;13667:2;13647:18;;;13640:30;13706:34;13686:18;;;13679:62;-1:-1:-1;;;13757:18:1;;;13750:41;13808:19;;5402:83:0;13426:407:1;5402:83:0;5504:10;-1:-1:-1;;;;;5504:20:0;;;;:60;;-1:-1:-1;;;;;;5528:24:0;;;;;;:16;:24;;;;;;;;5553:10;5528:36;;;;;;;;;;5504:60;5496:124;;;;-1:-1:-1;;;5496:124:0;;13221:2:1;5496:124:0;;;13203:21:1;13260:2;13240:18;;;13233:30;13299:34;13279:18;;;13272:62;-1:-1:-1;;;13350:18:1;;;13343:36;13396:19;;5496:124:0;13019:402:1;5496:124:0;5631:23;5640:3;5645:8;5631;:23::i;:::-;5346:316;5283:379;;:::o;5822:268::-;5930:40;5949:10;5961:8;5930:18;:40::i;:::-;5922:118;;;;-1:-1:-1;;;5922:118:0;;14880:2:1;5922:118:0;;;14862:21:1;14919:2;14899:18;;;14892:30;14958:34;14938:18;;;14931:62;-1:-1:-1;;;15009:18:1;;;15002:49;15068:19;;5922:118:0;14678:415:1;5922:118:0;6051:31;6061:5;6068:3;6073:8;6051:9;:31::i;8876:209::-;8974:7;8994:24;9021:23;9035:8;9021:13;:23::i;:::-;8994:50;;9062:7;9070:6;9062:15;;;;;;;;:::i;:::-;;;;;;;9055:22;;;8876:209;;;;:::o;10345:107::-;9225:5;;-1:-1:-1;;;;;9225:5:0;9234:10;9225:19;9217:42;;;;-1:-1:-1;;;9217:42:0;;;;;;;:::i;:::-;10422:22:::1;10439:4;;10422:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;10422:16:0::1;::::0;-1:-1:-1;;;10422:22:0:i:1;7089:269::-:0;7233:9;7228:123;7252:9;:16;7248:1;:20;7228:123;;;7290:49;7307:5;7314:3;7319:9;7329:1;7319:12;;;;;;;;:::i;:::-;;;;;;;7333:5;7290:16;:49::i;:::-;7270:3;;;;:::i;:::-;;;;7228:123;;;;7089:269;;;;:::o;11003:670::-;11067:7;11104:2;11092:8;:14;;:32;;;;;11122:2;11110:8;:14;;11092:32;11091:65;;;;11142:8;11154:2;11142:14;11091:65;11087:94;;;-1:-1:-1;11179:2:0;;11003:670;-1:-1:-1;11003:670:0:o;11087:94::-;11198:8;11210:2;11198:14;:67;;;;11243:2;11231:8;:14;;:33;;;;;11261:3;11249:8;:15;;11231:33;11198:120;;;;11295:3;11283:8;:15;;:34;;;;;11314:3;11302:8;:15;;11283:34;11194:149;;;-1:-1:-1;11341:2:0;;11003:670;-1:-1:-1;11003:670:0:o;11194:149::-;11373:2;11361:8;:14;;:32;;;;;11391:2;11379:8;:14;;11361:32;11356:63;;;-1:-1:-1;11417:2:0;;11003:670;-1:-1:-1;11003:670:0:o;11356:63::-;11457:3;11445:8;:15;;:34;;;;;11476:3;11464:8;:15;;11445:34;11440:64;;;-1:-1:-1;11502:2:0;;11003:670;-1:-1:-1;11003:670:0:o;11440:64::-;11521:8;11533:3;11521:15;:48;;;;11554:8;11566:3;11554:15;11521:48;11517:148;;;-1:-1:-1;11591:2:0;;11003:670;-1:-1:-1;11003:670:0:o;11517:148::-;11619:46;;-1:-1:-1;;;11619:46:0;;12414:2:1;11619:46:0;;;12396:21:1;12453:2;12433:18;;;12426:30;12492:34;12472:18;;;12465:62;-1:-1:-1;;;12543:18:1;;;12536:33;12586:19;;11619:46:0;12212:399:1;11517:148:0;11003:670;;;:::o;6651:154::-;6755:42;6772:5;6779:3;6784:8;6755:42;;;;;;;;;;;;:16;:42::i;8177:607::-;-1:-1:-1;;;;;8301:19:0;;8282:16;8301:19;;;:9;:19;;;;;;8253:16;;8301:19;8358:24;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8358:24:0;-1:-1:-1;8441:11:0;;8331:51;;-1:-1:-1;8393:14:0;;;8463:289;8487:12;8483:1;:16;8463:289;;;8547:3;8525:10;;;:7;:10;;;;;;-1:-1:-1;;;;;8525:10:0;:26;:56;;;;-1:-1:-1;8555:7:0;8563:12;8574:1;8563:8;:12;:::i;:::-;8555:21;;;;;;;;:::i;:::-;;;;;;;8580:1;8555:26;8525:56;8521:112;;;8602:14;;;;:::i;:::-;;;;8521:112;8651:10;;;;:7;:10;;;;;;-1:-1:-1;;;;;8651:22:0;;;:10;;:22;8647:94;;;8713:1;8695:7;8703:6;8695:15;;;;;;;;:::i;:::-;;;;;;;;;;:19;8716:8;;;;:::i;:::-;;;;8647:94;8501:3;;;;:::i;:::-;;;;8463:289;;;-1:-1:-1;8769:7:0;;8177:607;-1:-1:-1;;;;;8177:607:0:o;11994:510::-;10072:10;10086:9;10072:23;10064:55;;;;-1:-1:-1;;;10064:55:0;;15706:2:1;10064:55:0;;;15688:21:1;15745:2;15725:18;;;15718:30;-1:-1:-1;;;15764:18:1;;;15757:49;15823:18;;10064:55:0;15504:343:1;10064:55:0;10164:16:::1;::::0;-1:-1:-1;;;10164:16:0;::::1;;;10156:48;;;::::0;-1:-1:-1;;;10156:48:0;;12066:2:1;10156:48:0::1;::::0;::::1;12048:21:1::0;12105:2;12085:18;;;12078:30;-1:-1:-1;;;12124:18:1;;;12117:49;12183:18;;10156:48:0::1;11864:343:1::0;10156:48:0::1;12082:19:::2;12104:27;12122:8;12104:17;:27::i;:::-;12181:7;::::0;:66:::2;::::0;-1:-1:-1;;;12181:66:0;;12206:10:::2;12181:66;::::0;::::2;9184:34:1::0;9694:42:0::2;9234:18:1::0;;;9227:43;9286:18;;;9279:34;;;12181:7:0;9329:18:1;;;9322:34;9164:3;9372:19;;;9365:32;-1:-1:-1;9413:19:1;;;9406:30;12082:49:0;;-1:-1:-1;;;;;;12181:7:0::2;::::0;:24:::2;::::0;9453:19:1;;12181:66:0::2;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;12308:30;12314:10;12326:11;12308:5;:30::i;:::-;12385:11;:13:::0;;;:11:::2;:13;::::0;::::2;:::i;:::-;::::0;;;-1:-1:-1;;12453:43:0::2;::::0;;12462:10:::2;9685:51:1::0;;9767:2;9752:18;;9745:34;;;9795:18;;;9788:34;;;12453:43:0::2;::::0;9673:2:1;9658:18;12453:43:0::2;;;;;;;12071:433;11994:510:::0;:::o;10241:96::-;9225:5;;-1:-1:-1;;;;;9225:5:0;9234:10;9225:19;9217:42;;;;-1:-1:-1;;;9217:42:0;;;;;;;:::i;:::-;10305:16:::1;:24:::0;;;::::1;;-1:-1:-1::0;;;10305:24:0::1;-1:-1:-1::0;;;;10305:24:0;;::::1;::::0;;;::::1;::::0;;10241:96::o;1228:20::-;;;;;;;:::i;5668:148::-;5756:52;5775:10;5787:9;5798;5756:18;:52::i;12531:108::-;9225:5;;-1:-1:-1;;;;;9225:5:0;9234:10;9225:19;9217:42;;;;-1:-1:-1;;;9217:42:0;;;;;;;:::i;:::-;12593:14:::1;12599:3;12604:2;12593:5;:14::i;:::-;12618:11;:13:::0;;;:11:::1;:13;::::0;::::1;:::i;:::-;;;;;;12531:108:::0;:::o;6096:549::-;6220:34;6233:5;6240:3;6245:8;6220:12;:34::i;:::-;-1:-1:-1;;;;;6269:15:0;;;:20;6265:373;;6309:22;6335:3;-1:-1:-1;;;;;6335:14:0;6391:10;6403;6415:5;6422:8;6432:5;6350:88;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6350:88:0;;;;;;;;;;;6335:104;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6306:133;;;6454:16;6484:9;6473:31;;;;;;;;;;;;:::i;:::-;6454:50;-1:-1:-1;;;;;;;;;;6527:23:0;;;6519:107;;;;-1:-1:-1;;;6519:107:0;;14458:2:1;6519:107:0;;;14440:21:1;14497:2;14477:18;;;14470:30;14536:34;14516:18;;;14509:62;-1:-1:-1;;;14587:18:1;;;14580:51;14648:19;;6519:107:0;14256:417:1;6519:107:0;6291:347;;6265:373;6096:549;;;;:::o;7744:309::-;7872:3;7843:17;;;:7;:17;;;;;;7809:13;;-1:-1:-1;;;;;7843:17:0;7835:101;;;;-1:-1:-1;;;7835:101:0;;17320:2:1;7835:101:0;;;17302:21:1;17359:2;17339:18;;;17332:30;17398:34;17378:18;;;17371:62;-1:-1:-1;;;17449:18:1;;;17442:39;17498:19;;7835:101:0;17118:405:1;7835:101:0;7992:12;8006:19;8016:8;8006:9;:19::i;:::-;8027:16;7961:83;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;7947:98;;7744:309;;;:::o;9271:77::-;9225:5;;-1:-1:-1;;;;;9225:5:0;9234:10;9225:19;9217:42;;;;-1:-1:-1;;;9217:42:0;;;;;;;:::i;:::-;9333:5:::1;:12:::0;;-1:-1:-1;;;;;;9333:12:0::1;-1:-1:-1::0;;;;;9333:12:0;;;::::1;::::0;;;::::1;::::0;;9271:77::o;6850:233::-;6969:9;6964:112;6988:9;:16;6984:1;:20;6964:112;;;7026:38;7039:5;7046:3;7051:9;7061:1;7051:12;;;;;;;;:::i;:::-;;;;;;;7026;:38::i;:::-;7006:3;;;;:::i;:::-;;;;6964:112;;11679:283;11745:7;10903:2;10891:14;;;10923:66;10891:98;11765:85;;;;-1:-1:-1;;;11765:85:0;;12818:2:1;11765:85:0;;;12800:21:1;12857:2;12837:18;;;12830:30;12896:34;12876:18;;;12869:62;-1:-1:-1;;;12947:18:1;;;12940:32;12989:19;;11765:85:0;12616:398:1;11765:85:0;10695:95;10788:2;10695:95;;;;11931:23;10695:95;11931:15;:23::i;:::-;11922:32;;:6;:32;:::i;:::-;11915:39;11679:283;-1:-1:-1;;;11679:283:0:o;3918:109::-;3996:23;;;;:16;;:23;;;;;:::i;3200:234::-;3281:21;;;;:11;:21;;;;;;-1:-1:-1;;;;;3281:28:0;;;:21;;:28;3277:150;;3326:21;;;;:11;:21;;;;;;;;:27;;-1:-1:-1;;;;;;3326:27:0;-1:-1:-1;;;;;3326:27:0;;;;;;;;;3382:7;:17;;;;;;;3373:42;;3326:21;;3382:17;;;;;3373:42;;;3200:234;;:::o;4680:424::-;4781:4;4806:17;;;:7;:17;;;;;;-1:-1:-1;;;;;4806:17:0;4798:112;;;;-1:-1:-1;;;4798:112:0;;16054:2:1;4798:112:0;;;16036:21:1;16093:2;16073:18;;;16066:30;16132:34;16112:18;;;16105:62;-1:-1:-1;;;16183:18:1;;;16176:50;16243:19;;4798:112:0;15852:416:1;4798:112:0;4921:14;4938:17;;;:7;:17;;;;;;-1:-1:-1;;;;;4938:17:0;;;;4974:18;;;;;:69;;-1:-1:-1;5022:21:0;;;;:11;:21;;;;;;-1:-1:-1;;;;;5010:33:0;;;5022:21;;5010:33;4974:69;:121;;;-1:-1:-1;;;;;;5061:24:0;;;;;;;:16;:24;;;;;;;;:34;;;;;;;;;;;;4974:121;4966:130;4680:424;-1:-1:-1;;;;4680:424:0:o;2539:637::-;2649:17;;;;:7;:17;;;;;;-1:-1:-1;;;;;2640:26:0;;;2649:17;;2640:26;2632:102;;;;-1:-1:-1;;;2632:102:0;;14040:2:1;2632:102:0;;;14022:21:1;14079:2;14059:18;;;14052:30;14118:34;14098:18;;;14091:62;-1:-1:-1;;;14169:18:1;;;14162:47;14226:19;;2632:102:0;13838:413:1;2632:102:0;-1:-1:-1;;;;;2753:19:0;;2745:92;;;;-1:-1:-1;;;2745:92:0;;11651:2:1;2745:92:0;;;11633:21:1;11690:2;11670:18;;;11663:30;11729:34;11709:18;;;11702:62;-1:-1:-1;;;11780:18:1;;;11773:44;11834:19;;2745:92:0;11449:410:1;2745:92:0;2960:3;2927:21;;;:11;:21;;;;;;-1:-1:-1;;;;;2927:21:0;:37;2923:104;;2982:32;2999:3;3005:8;2982;:32::i;:::-;3040:17;;;;:7;:17;;;;;;;;:23;;-1:-1:-1;;;;;;3040:23:0;-1:-1:-1;;;;;3040:23:0;;;;;;;;;;3075:16;;;;:9;:16;;;;;:18;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;3104:14:0;;;;;;:9;:14;;;;;:16;;;;;;:::i;:::-;;;;;;3159:8;3154:3;-1:-1:-1;;;;;3138:30:0;3147:5;-1:-1:-1;;;;;3138:30:0;;;;;;;;;;;2539:637;;;:::o;3811:101::-;3885:19;;;;:12;;:19;;;;;:::i;2114:400::-;-1:-1:-1;;;;;2196:19:0;;2188:83;;;;-1:-1:-1;;;2188:83:0;;15300:2:1;2188:83:0;;;15282:21:1;15339:2;15319:18;;;15312:30;15378:34;15358:18;;;15351:62;-1:-1:-1;;;15429:18:1;;;15422:35;15474:19;;2188:83:0;15098:401:1;2188:83:0;2319:3;2290:17;;;:7;:17;;;;;;-1:-1:-1;;;;;2290:17:0;:33;2282:106;;;;-1:-1:-1;;;2282:106:0;;16475:2:1;2282:106:0;;;16457:21:1;16514:2;16494:18;;;16487:30;16553:34;16533:18;;;16526:62;-1:-1:-1;;;16604:18:1;;;16597:44;16658:19;;2282:106:0;16273:410:1;2282:106:0;-1:-1:-1;;;;;2401:14:0;;;;;;:9;:14;;;;;:16;;;;;;:::i;:::-;;;;-1:-1:-1;;2428:17:0;;;;:7;:17;;;;;;:23;;-1:-1:-1;;;;;;2428:23:0;-1:-1:-1;;;;;2428:23:0;;;;;;;;2469:37;;2428:17;;;2469:37;;2428:17;;2469:37;2114:400;;:::o;3440:345::-;3570:9;-1:-1:-1;;;;;3560:19:0;:6;-1:-1:-1;;;;;3560:19:0;;;3552:107;;;;-1:-1:-1;;;3552:107:0;;16890:2:1;3552:107:0;;;16872:21:1;16929:2;16909:18;;;16902:30;16968:34;16948:18;;;16941:62;17039:31;17019:18;;;17012:59;17088:19;;3552:107:0;16688:425:1;3552:107:0;-1:-1:-1;;;;;3670:24:0;;;;;;;:16;:24;;;;;;;;:35;;;;;;;;;;;;;:47;;-1:-1:-1;;3670:47:0;;;;;;;;;;3733:44;;10610:41:1;;;3733:44:0;;10583:18:1;3733:44:0;;;;;;;3440:345;;;:::o;4097:550::-;4155:13;4185:11;4181:32;;-1:-1:-1;;4200:10:0;;;;;;;;;;;;-1:-1:-1;;;4200:10:0;;;;;4097:550::o;4181:32::-;4242:6;4223:16;4276:52;4283:13;;4276:52;;4300:9;;;;:::i;:::-;;-1:-1:-1;4311:14:0;;-1:-1:-1;4323:2:0;4311:14;;:::i;:::-;;;4276:52;;;4362:20;4395:7;4385:18;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4385:18:0;;4362:41;;4414:124;4421:11;;4414:124;;4436:9;;;;:::i;:::-;;-1:-1:-1;4506:11:0;;-1:-1:-1;4515:2:0;4506:6;:11;:::i;:::-;4493:26;;:2;:26;:::i;:::-;4466:55;;4447:7;4455;4447:16;;;;;;;;:::i;:::-;;;;:74;-1:-1:-1;;;;;4447:74:0;;;;;;;;-1:-1:-1;4523:12:0;4533:2;4523:12;;:::i;:::-;;;4414:124;;-1:-1:-1;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:173:1;82:20;;-1:-1:-1;;;;;131:31:1;;121:42;;111:70;;177:1;174;167:12;192:723;246:5;299:3;292:4;284:6;280:17;276:27;266:55;;317:1;314;307:12;266:55;353:6;340:20;379:4;402:18;398:2;395:26;392:52;;;424:18;;:::i;:::-;470:2;467:1;463:10;493:28;517:2;513;509:11;493:28;:::i;:::-;555:15;;;586:12;;;;618:15;;;652;;;648:24;;645:33;-1:-1:-1;642:53:1;;;691:1;688;681:12;642:53;713:1;704:10;;723:163;737:2;734:1;731:9;723:163;;;794:17;;782:30;;755:1;748:9;;;;;832:12;;;;864;;723:163;;;-1:-1:-1;904:5:1;192:723;-1:-1:-1;;;;;;;192:723:1:o;920:160::-;985:20;;1041:13;;1034:21;1024:32;;1014:60;;1070:1;1067;1060:12;1085:530;1127:5;1180:3;1173:4;1165:6;1161:17;1157:27;1147:55;;1198:1;1195;1188:12;1147:55;1234:6;1221:20;1260:18;1256:2;1253:26;1250:52;;;1282:18;;:::i;:::-;1326:55;1369:2;1350:13;;-1:-1:-1;;1346:27:1;1375:4;1342:38;1326:55;:::i;:::-;1406:2;1397:7;1390:19;1452:3;1445:4;1440:2;1432:6;1428:15;1424:26;1421:35;1418:55;;;1469:1;1466;1459:12;1418:55;1534:2;1527:4;1519:6;1515:17;1508:4;1499:7;1495:18;1482:55;1582:1;1557:16;;;1575:4;1553:27;1546:38;;;;1561:7;1085:530;-1:-1:-1;;;1085:530:1:o;1620:186::-;1679:6;1732:2;1720:9;1711:7;1707:23;1703:32;1700:52;;;1748:1;1745;1738:12;1700:52;1771:29;1790:9;1771:29;:::i;1811:260::-;1879:6;1887;1940:2;1928:9;1919:7;1915:23;1911:32;1908:52;;;1956:1;1953;1946:12;1908:52;1979:29;1998:9;1979:29;:::i;:::-;1969:39;;2027:38;2061:2;2050:9;2046:18;2027:38;:::i;:::-;2017:48;;1811:260;;;;;:::o;2076:496::-;2178:6;2186;2194;2247:2;2235:9;2226:7;2222:23;2218:32;2215:52;;;2263:1;2260;2253:12;2215:52;2286:29;2305:9;2286:29;:::i;:::-;2276:39;;2334:38;2368:2;2357:9;2353:18;2334:38;:::i;:::-;2324:48;;2423:2;2412:9;2408:18;2395:32;2450:18;2442:6;2439:30;2436:50;;;2482:1;2479;2472:12;2436:50;2505:61;2558:7;2549:6;2538:9;2534:22;2505:61;:::i;:::-;2495:71;;;2076:496;;;;;:::o;2577:716::-;2697:6;2705;2713;2721;2774:3;2762:9;2753:7;2749:23;2745:33;2742:53;;;2791:1;2788;2781:12;2742:53;2814:29;2833:9;2814:29;:::i;:::-;2804:39;;2862:38;2896:2;2885:9;2881:18;2862:38;:::i;:::-;2852:48;;2951:2;2940:9;2936:18;2923:32;2974:18;3015:2;3007:6;3004:14;3001:34;;;3031:1;3028;3021:12;3001:34;3054:61;3107:7;3098:6;3087:9;3083:22;3054:61;:::i;:::-;3044:71;;3168:2;3157:9;3153:18;3140:32;3124:48;;3197:2;3187:8;3184:16;3181:36;;;3213:1;3210;3203:12;3181:36;;3236:51;3279:7;3268:8;3257:9;3253:24;3236:51;:::i;:::-;3226:61;;;2577:716;;;;;;;:::o;3298:328::-;3375:6;3383;3391;3444:2;3432:9;3423:7;3419:23;3415:32;3412:52;;;3460:1;3457;3450:12;3412:52;3483:29;3502:9;3483:29;:::i;:::-;3473:39;;3531:38;3565:2;3554:9;3550:18;3531:38;:::i;:::-;3521:48;;3616:2;3605:9;3601:18;3588:32;3578:42;;3298:328;;;;;:::o;3631:537::-;3726:6;3734;3742;3750;3803:3;3791:9;3782:7;3778:23;3774:33;3771:53;;;3820:1;3817;3810:12;3771:53;3843:29;3862:9;3843:29;:::i;:::-;3833:39;;3891:38;3925:2;3914:9;3910:18;3891:38;:::i;:::-;3881:48;;3976:2;3965:9;3961:18;3948:32;3938:42;;4031:2;4020:9;4016:18;4003:32;4058:18;4050:6;4047:30;4044:50;;;4090:1;4087;4080:12;4044:50;4113:49;4154:7;4145:6;4134:9;4130:22;4113:49;:::i;4173:254::-;4238:6;4246;4299:2;4287:9;4278:7;4274:23;4270:32;4267:52;;;4315:1;4312;4305:12;4267:52;4338:29;4357:9;4338:29;:::i;:::-;4328:39;;4386:35;4417:2;4406:9;4402:18;4386:35;:::i;4432:254::-;4500:6;4508;4561:2;4549:9;4540:7;4536:23;4532:32;4529:52;;;4577:1;4574;4567:12;4529:52;4600:29;4619:9;4600:29;:::i;:::-;4590:39;4676:2;4661:18;;;;4648:32;;-1:-1:-1;;;4432:254:1:o;4691:180::-;4747:6;4800:2;4788:9;4779:7;4775:23;4771:32;4768:52;;;4816:1;4813;4806:12;4768:52;4839:26;4855:9;4839:26;:::i;4876:245::-;4934:6;4987:2;4975:9;4966:7;4962:23;4958:32;4955:52;;;5003:1;5000;4993:12;4955:52;5042:9;5029:23;5061:30;5085:5;5061:30;:::i;5126:249::-;5195:6;5248:2;5236:9;5227:7;5223:23;5219:32;5216:52;;;5264:1;5261;5254:12;5216:52;5296:9;5290:16;5315:30;5339:5;5315:30;:::i;5380:592::-;5451:6;5459;5512:2;5500:9;5491:7;5487:23;5483:32;5480:52;;;5528:1;5525;5518:12;5480:52;5568:9;5555:23;5597:18;5638:2;5630:6;5627:14;5624:34;;;5654:1;5651;5644:12;5624:34;5692:6;5681:9;5677:22;5667:32;;5737:7;5730:4;5726:2;5722:13;5718:27;5708:55;;5759:1;5756;5749:12;5708:55;5799:2;5786:16;5825:2;5817:6;5814:14;5811:34;;;5841:1;5838;5831:12;5811:34;5886:7;5881:2;5872:6;5868:2;5864:15;5860:24;5857:37;5854:57;;;5907:1;5904;5897:12;5854:57;5938:2;5930:11;;;;;5960:6;;-1:-1:-1;5380:592:1;;-1:-1:-1;;;;5380:592:1:o;5977:180::-;6036:6;6089:2;6077:9;6068:7;6064:23;6060:32;6057:52;;;6105:1;6102;6095:12;6057:52;-1:-1:-1;6128:23:1;;5977:180;-1:-1:-1;5977:180:1:o;6162:257::-;6203:3;6241:5;6235:12;6268:6;6263:3;6256:19;6284:63;6340:6;6333:4;6328:3;6324:14;6317:4;6310:5;6306:16;6284:63;:::i;:::-;6401:2;6380:15;-1:-1:-1;;6376:29:1;6367:39;;;;6408:4;6363:50;;6162:257;-1:-1:-1;;6162:257:1:o;6424:973::-;6509:12;;6474:3;;6564:1;6584:18;;;;6637;;;;6664:61;;6718:4;6710:6;6706:17;6696:27;;6664:61;6744:2;6792;6784:6;6781:14;6761:18;6758:38;6755:161;;;6838:10;6833:3;6829:20;6826:1;6819:31;6873:4;6870:1;6863:15;6901:4;6898:1;6891:15;6755:161;6932:18;6959:104;;;;7077:1;7072:319;;;;6925:466;;6959:104;-1:-1:-1;;6992:24:1;;6980:37;;7037:16;;;;-1:-1:-1;6959:104:1;;7072:319;18063:1;18056:14;;;18100:4;18087:18;;7166:1;7180:165;7194:6;7191:1;7188:13;7180:165;;;7272:14;;7259:11;;;7252:35;7315:16;;;;7209:10;;7180:165;;;7184:3;;7374:6;7369:3;7365:16;7358:23;;6925:466;;;;;;;6424:973;;;;:::o;7402:274::-;7531:3;7569:6;7563:13;7585:53;7631:6;7626:3;7619:4;7611:6;7607:17;7585:53;:::i;:::-;7654:16;;;;;7402:274;-1:-1:-1;;7402:274:1:o;7681:456::-;7902:3;7930:38;7964:3;7956:6;7930:38;:::i;:::-;7997:6;7991:13;8013:52;8058:6;8054:2;8047:4;8039:6;8035:17;8013:52;:::i;:::-;8081:50;8123:6;8119:2;8115:15;8107:6;8081:50;:::i;:::-;8074:57;7681:456;-1:-1:-1;;;;;;;7681:456:1:o;8350:488::-;-1:-1:-1;;;;;8619:15:1;;;8601:34;;8671:15;;8666:2;8651:18;;8644:43;8718:2;8703:18;;8696:34;;;8766:3;8761:2;8746:18;;8739:31;;;8544:4;;8787:45;;8812:19;;8804:6;8787:45;:::i;:::-;8779:53;8350:488;-1:-1:-1;;;;;;8350:488:1:o;9833:632::-;10004:2;10056:21;;;10126:13;;10029:18;;;10148:22;;;9975:4;;10004:2;10227:15;;;;10201:2;10186:18;;;9975:4;10270:169;10284:6;10281:1;10278:13;10270:169;;;10345:13;;10333:26;;10414:15;;;;10379:12;;;;10306:1;10299:9;10270:169;;;-1:-1:-1;10456:3:1;;9833:632;-1:-1:-1;;;;;;9833:632:1:o;10886:219::-;11035:2;11024:9;11017:21;10998:4;11055:44;11095:2;11084:9;11080:18;11072:6;11055:44;:::i;11110:334::-;11312:2;11294:21;;;11351:2;11331:18;;;11324:30;-1:-1:-1;;;11385:2:1;11370:18;;11363:40;11435:2;11420:18;;11110:334::o;17710:275::-;17781:2;17775:9;17846:2;17827:13;;-1:-1:-1;;17823:27:1;17811:40;;17881:18;17866:34;;17902:22;;;17863:62;17860:88;;;17928:18;;:::i;:::-;17964:2;17957:22;17710:275;;-1:-1:-1;17710:275:1:o;18116:128::-;18156:3;18187:1;18183:6;18180:1;18177:13;18174:39;;;18193:18;;:::i;:::-;-1:-1:-1;18229:9:1;;18116:128::o;18249:120::-;18289:1;18315;18305:35;;18320:18;;:::i;:::-;-1:-1:-1;18354:9:1;;18249:120::o;18374:125::-;18414:4;18442:1;18439;18436:8;18433:34;;;18447:18;;:::i;:::-;-1:-1:-1;18484:9:1;;18374:125::o;18504:258::-;18576:1;18586:113;18600:6;18597:1;18594:13;18586:113;;;18676:11;;;18670:18;18657:11;;;18650:39;18622:2;18615:10;18586:113;;;18717:6;18714:1;18711:13;18708:48;;;-1:-1:-1;;18752:1:1;18734:16;;18727:27;18504:258::o;18767:136::-;18806:3;18834:5;18824:39;;18843:18;;:::i;:::-;-1:-1:-1;;;18879:18:1;;18767:136::o;18908:380::-;18987:1;18983:12;;;;19030;;;19051:61;;19105:4;19097:6;19093:17;19083:27;;19051:61;19158:2;19150:6;19147:14;19127:18;19124:38;19121:161;;;19204:10;19199:3;19195:20;19192:1;19185:31;19239:4;19236:1;19229:15;19267:4;19264:1;19257:15;19121:161;;18908:380;;;:::o;19293:135::-;19332:3;-1:-1:-1;;19353:17:1;;19350:43;;;19373:18;;:::i;:::-;-1:-1:-1;19420:1:1;19409:13;;19293:135::o;19433:112::-;19465:1;19491;19481:35;;19496:18;;:::i;:::-;-1:-1:-1;19530:9:1;;19433:112::o;19550:127::-;19611:10;19606:3;19602:20;19599:1;19592:31;19642:4;19639:1;19632:15;19666:4;19663:1;19656:15;19682:127;19743:10;19738:3;19734:20;19731:1;19724:31;19774:4;19771:1;19764:15;19798:4;19795:1;19788:15;19814:127;19875:10;19870:3;19866:20;19863:1;19856:31;19906:4;19903:1;19896:15;19930:4;19927:1;19920:15;19946:127;20007:10;20002:3;19998:20;19995:1;19988:31;20038:4;20035:1;20028:15;20062:4;20059:1;20052:15;20078:131;-1:-1:-1;;;;;;20152:32:1;;20142:43;;20132:71;;20199:1;20196;20189:12;20132:71;20078:131;:::o

Swarm Source

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