Contract 0xa66Dc280445A455305E5988610855645e1C5cB5f

Txn Hash Method
Block
From
To
Value [Txn Fee]
0xd3ee074b961f11e355fde909412988145f1313259df7474dabf8c8b721786965Add IGO Poo List117717002022-01-15 1:12:1213 days 8 hrs ago0x1c1bdadd6b167f4a60dfeccc525534bf0f5bf323 IN 0xa66dc280445a455305e5988610855645e1c5cb5f0 HT0.00026098875 2.25
0x77514b1cc0cd59c97bd02027ec4340e717b4c5b44ae118c8a2994cf772ddfb9a0x60806040117716642022-01-15 1:10:2413 days 8 hrs ago0x1c1bdadd6b167f4a60dfeccc525534bf0f5bf323 IN  Create: IGOPoolFactory0 HT0.0033762375 2.25
[ Download CSV Export 
Parent Txn Hash Block From To Value
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
IGOPoolFactory

Compiler Version
v0.6.12+commit.27d51765

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at hecoinfo.com on 2022-01-15
*/

pragma solidity ^0.6.12;
pragma experimental ABIEncoderV2;
// SPDX-License-Identifier: MIT

interface IERC20 {
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);
}

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

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

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

    function _callOptionalReturn(IERC20 token, bytes memory data) private {
        bytes memory returndata = address(token).functionCall(data, "e0");
        if (returndata.length > 0) {
            require(abi.decode(returndata, (bool)), "e1");
        }
    }
}

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

abstract contract ReentrancyGuard {
    uint256 private constant _NOT_ENTERED = 1;
    uint256 private constant _ENTERED = 2;
    uint256 private _status;

    constructor() internal {
        _status = _NOT_ENTERED;
    }

    modifier nonReentrant() {
        require(_status != _ENTERED, "e3");
        _status = _ENTERED;
        _;
        _status = _NOT_ENTERED;
    }
}

contract Ownable is Context {
    address private _owner;

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

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

    function owner() public view returns (address) {
        return _owner;
    }

    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ow1");
        _;
    }

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ow2");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

library Address {
    function isContract(address account) internal view returns (bool) {
        uint256 size;
        assembly {
            size := extcodesize(account)
        }
        return size > 0;
    }

    function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        return _functionCallWithValue(target, data, 0, errorMessage);
    }

    function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) {
        require(isContract(target), "e4");
        (bool success, bytes memory returndata) = target.call{value : weiValue}(data);
        if (success) {
            return returndata;
        } else {
            if (returndata.length > 0) {
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "e5");
        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b <= a, "e6");
        uint256 c = a - b;
        return c;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        require(c / a == b, "e7");
        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b > 0, "e8");
        uint256 c = a / b;
        return c;
    }
}

interface IERC721Enumerable {
    function transferFrom(
        address from,
        address to,
        uint256 tokenId
    ) external;

    function ownerOf(uint256 tokenId) external view returns (address owner);

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

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

    function tokenURI(uint256 tokenId) external view returns (string memory);

    function mintForMiner(address _to) external returns (bool, uint256);

    function MinerList(address _address) external returns (bool);
}


interface k {
    struct nftInfo {
        string name;
        string symbol;
        string tokenURI;
        address ownerOf;
        tokenIdInfo statusList;
    }

    struct tokenIdInfo {
        bool mintStatus;
        bool buybackStatus;
        bool swapStatus;
    }

    struct orderItem_1 {
        uint256 orderId;
        IERC721Enumerable nftToken;
        uint256 igoTotalAmount;
        address erc20Token;
        uint256 price;
        bool orderStatus;
        uint256 igoOkAmount;
        uint256 startBlock;
        uint256 endBlock;
        uint256 cosoQuote;
        bool useWhiteListCheck;
    }

    struct orderItem_2 {
        IERC20 swapToken;
        uint256 swapPrice;
        uint256 buyBackEndBlock;
        uint256 buyBackNum;
        uint256 swapFee;
        uint256 igoMaxAmount;
        IERC721Enumerable CosoNFT;
        bool useStakingCoso;
        bool useWhiteList;
        IERC20 ETH;
    }
}

interface IGOPool is k {
    function useSwapPool() external view returns (bool);
    function IGOPoolFactory() external view returns (address);
    function swapPool() external view returns (address);
    function fk1() external view returns (orderItem_1 memory);
    function fk2() external view returns (orderItem_2 memory);
    function UserIgoTokenIdListNum(address _user) external view returns (uint256);
    function UserIgoTokenIdList(address _user,uint256 _index) external view returns (uint256);
    function getTokenInfoByIndex() external view returns (orderItem_1 memory orderItem1, orderItem_2 memory orderItem2, string memory name2, string memory symbol2, uint256 decimals2, uint256 price2, string memory nftName, string memory nftSymbol);
    function getUserIdoTokenIdList(address _address) external view returns (uint256[] memory);
    function massGetNftInfo(IERC721Enumerable _nftToken, uint256[] memory _tokenIdList) external view returns (nftInfo[] memory nftInfolist2);
    function getStaking(address _user) external view returns (uint256[] memory idTokenList, uint256 idTokenListNum, nftInfo[] memory nftInfolist2, uint256 igoQuota, uint256 maxIgoNum);
}


interface SwapPool  {
    struct claimiItem {
        uint256 tokenId;
        bool hasClaim;
    }
    
    function swapToken() external view returns(IERC20);
    function swapPrice() external view returns(uint256);
    function SwapNFT() external view returns(IERC721Enumerable);
    function userTokenIdList(address _user,uint256 _time) external view returns(uint256);
    function canClaimBlockNumList(uint256 _time) external view returns(uint256);
    function canClaimAmountList(uint256 _time) external view returns(uint256);
    function canClaimAmount(address _user,uint256 _time) external view returns(uint256);
    function userClaimList(address _address, uint256 _tokenId, uint256 _time) external view returns (claimiItem memory);
    function getUserTokenIdList(address _address) external view returns (uint256[] memory);
}


contract IGOPoolFactory is Ownable,k {
    using SafeMath for uint256;
    using Address for address;
    using SafeERC20 for IERC20;
    uint256 public orderNum = 0;
    //uint256 public swapRate = 10;
    //address public feeAddress;
    //IERC20 public ETH;
    //IERC721Enumerable public CosoNFT;
    mapping(uint256 => IGOPool) public orderItemInfo;
    //mapping(IGOPool => uint256) public orderItemInfo2;
    //mapping(IERC721Enumerable => uint256[]) public nftAddressOrderIdList;
    //mapping(IERC721Enumerable => IGOPool[]) public nftAddressPoolList;
    //mapping(address => bool) private erc20tokenWhiteList;
    //mapping(address => bool) private igoWhiteList;
    
    
    function addIGOPool(IGOPool _IGOPool) public onlyOwner {
        orderItemInfo[orderNum] = _IGOPool;
        orderNum = orderNum.add(1);
    }
    
    
     function addIGOPooList(IGOPool[] memory _IGOPoolList) public onlyOwner {
         for (uint256 i=0;i<_IGOPoolList.length;i++)
         {
        orderItemInfo[orderNum] = _IGOPoolList[i];
        orderNum = orderNum.add(1);
         }
    }


    struct orderItem_3 {
        orderItem_1 x1;
        orderItem_2 x2;
        string name2;
        string symbol2;
        uint256 decimals2;
        uint256 price2;
        string nftName;
        string nftSymbol;
        IGOPool igoAddress;
    }
    
    struct stakingInfoItem {
        uint256[]  idTokenList;
        uint256 idTokenListNum;
        nftInfo[]  nftInfolist2;
        uint256 igoQuota;
        uint256 maxIgoNum;
    }
    
    struct IgoIdListItem {
         IGOPool IGO;
         IERC721Enumerable nftToken;
         uint256[] TokenIdList;
         uint256 TokenIdListNum;
     }

    function getIgoInfo(uint256 _index) public view returns (orderItem_3 memory returnIgoInfo) {
        returnIgoInfo.igoAddress = orderItemInfo[_index];
        {
            orderItem_1 memory orderItem_1 = orderItemInfo[_index].fk1();
            returnIgoInfo.x1 = orderItem_1;
        }
        {
            orderItem_2 memory orderItem_2 = orderItemInfo[_index].fk2();
            returnIgoInfo.x2 = orderItem_2;
        }
        {
            (,,string memory name2, string memory symbol2, uint256 decimals2, uint256 price2,string memory nftName,string memory nftSymbol) = orderItemInfo[_index].getTokenInfoByIndex();
            returnIgoInfo.name2 = name2;
            returnIgoInfo.symbol2 = symbol2;
            returnIgoInfo.decimals2 = decimals2;
            returnIgoInfo.price2 = price2;
            returnIgoInfo.nftName = nftName;
            returnIgoInfo.nftSymbol = nftSymbol;
        }
    }

    function massGetIgoInfo(uint256[] memory index_list) public view returns (orderItem_3[] memory returnIgoInfoList) {
         uint256 num = index_list.length;
         if (num ==0) {
             num = orderNum;
         }
        returnIgoInfoList = new orderItem_3[](num);
        for (uint256 i = 0; i < num; i++) {
            returnIgoInfoList[i] = getIgoInfo(index_list[i]);
        }
    }
    
    function massGetStaking(address _user,uint256[] memory index_list) public view returns (stakingInfoItem[] memory stakingInfoList) {
         uint256 num = index_list.length;
         if (num ==0) {
             num = orderNum;
         }
       stakingInfoList = new stakingInfoItem[](num);
       for (uint256 i = 0; i < num; i++) {
            (uint256[] memory idTokenList,uint256 idTokenListNum,nftInfo[] memory nftInfolist2,uint256 igoQuota,uint256 maxIgoNum) = orderItemInfo[i].getStaking(_user);
            stakingInfoList[i] = stakingInfoItem(idTokenList,idTokenListNum,nftInfolist2,igoQuota,maxIgoNum);
        }
    }
     
     function massGetIgoTokenIdList(address _user,uint256[] memory index_list) public view returns ( IgoIdListItem[] memory IgoIdList) {
         uint256 num = index_list.length;
         if (num ==0) {
             num = orderNum;
         }
         IgoIdList = new IgoIdListItem[](num);
         for (uint256 i=0;i<num;i++) {
             IGOPool x = orderItemInfo[i];
             IERC721Enumerable y =  x.fk1().nftToken;
             uint256 z = x.UserIgoTokenIdListNum(_user);
             uint256[] memory list = new uint256[](z);
             for (uint256 t=0;t<z;t++) {
                 list[t] = x.UserIgoTokenIdList(_user,t);
             }
             IgoIdList[i] = IgoIdListItem(x,y,list,z);
         }
     }
     
     //todo massGetSwapPoolInfo
}

Contract Security Audit

Contract ABI

[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[{"internalType":"contract IGOPool[]","name":"_IGOPoolList","type":"address[]"}],"name":"addIGOPooList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IGOPool","name":"_IGOPool","type":"address"}],"name":"addIGOPool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_index","type":"uint256"}],"name":"getIgoInfo","outputs":[{"components":[{"components":[{"internalType":"uint256","name":"orderId","type":"uint256"},{"internalType":"contract IERC721Enumerable","name":"nftToken","type":"address"},{"internalType":"uint256","name":"igoTotalAmount","type":"uint256"},{"internalType":"address","name":"erc20Token","type":"address"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"bool","name":"orderStatus","type":"bool"},{"internalType":"uint256","name":"igoOkAmount","type":"uint256"},{"internalType":"uint256","name":"startBlock","type":"uint256"},{"internalType":"uint256","name":"endBlock","type":"uint256"},{"internalType":"uint256","name":"cosoQuote","type":"uint256"},{"internalType":"bool","name":"useWhiteListCheck","type":"bool"}],"internalType":"struct k.orderItem_1","name":"x1","type":"tuple"},{"components":[{"internalType":"contract IERC20","name":"swapToken","type":"address"},{"internalType":"uint256","name":"swapPrice","type":"uint256"},{"internalType":"uint256","name":"buyBackEndBlock","type":"uint256"},{"internalType":"uint256","name":"buyBackNum","type":"uint256"},{"internalType":"uint256","name":"swapFee","type":"uint256"},{"internalType":"uint256","name":"igoMaxAmount","type":"uint256"},{"internalType":"contract IERC721Enumerable","name":"CosoNFT","type":"address"},{"internalType":"bool","name":"useStakingCoso","type":"bool"},{"internalType":"bool","name":"useWhiteList","type":"bool"},{"internalType":"contract IERC20","name":"ETH","type":"address"}],"internalType":"struct k.orderItem_2","name":"x2","type":"tuple"},{"internalType":"string","name":"name2","type":"string"},{"internalType":"string","name":"symbol2","type":"string"},{"internalType":"uint256","name":"decimals2","type":"uint256"},{"internalType":"uint256","name":"price2","type":"uint256"},{"internalType":"string","name":"nftName","type":"string"},{"internalType":"string","name":"nftSymbol","type":"string"},{"internalType":"contract IGOPool","name":"igoAddress","type":"address"}],"internalType":"struct IGOPoolFactory.orderItem_3","name":"returnIgoInfo","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"index_list","type":"uint256[]"}],"name":"massGetIgoInfo","outputs":[{"components":[{"components":[{"internalType":"uint256","name":"orderId","type":"uint256"},{"internalType":"contract IERC721Enumerable","name":"nftToken","type":"address"},{"internalType":"uint256","name":"igoTotalAmount","type":"uint256"},{"internalType":"address","name":"erc20Token","type":"address"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"bool","name":"orderStatus","type":"bool"},{"internalType":"uint256","name":"igoOkAmount","type":"uint256"},{"internalType":"uint256","name":"startBlock","type":"uint256"},{"internalType":"uint256","name":"endBlock","type":"uint256"},{"internalType":"uint256","name":"cosoQuote","type":"uint256"},{"internalType":"bool","name":"useWhiteListCheck","type":"bool"}],"internalType":"struct k.orderItem_1","name":"x1","type":"tuple"},{"components":[{"internalType":"contract IERC20","name":"swapToken","type":"address"},{"internalType":"uint256","name":"swapPrice","type":"uint256"},{"internalType":"uint256","name":"buyBackEndBlock","type":"uint256"},{"internalType":"uint256","name":"buyBackNum","type":"uint256"},{"internalType":"uint256","name":"swapFee","type":"uint256"},{"internalType":"uint256","name":"igoMaxAmount","type":"uint256"},{"internalType":"contract IERC721Enumerable","name":"CosoNFT","type":"address"},{"internalType":"bool","name":"useStakingCoso","type":"bool"},{"internalType":"bool","name":"useWhiteList","type":"bool"},{"internalType":"contract IERC20","name":"ETH","type":"address"}],"internalType":"struct k.orderItem_2","name":"x2","type":"tuple"},{"internalType":"string","name":"name2","type":"string"},{"internalType":"string","name":"symbol2","type":"string"},{"internalType":"uint256","name":"decimals2","type":"uint256"},{"internalType":"uint256","name":"price2","type":"uint256"},{"internalType":"string","name":"nftName","type":"string"},{"internalType":"string","name":"nftSymbol","type":"string"},{"internalType":"contract IGOPool","name":"igoAddress","type":"address"}],"internalType":"struct IGOPoolFactory.orderItem_3[]","name":"returnIgoInfoList","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"},{"internalType":"uint256[]","name":"index_list","type":"uint256[]"}],"name":"massGetIgoTokenIdList","outputs":[{"components":[{"internalType":"contract IGOPool","name":"IGO","type":"address"},{"internalType":"contract IERC721Enumerable","name":"nftToken","type":"address"},{"internalType":"uint256[]","name":"TokenIdList","type":"uint256[]"},{"internalType":"uint256","name":"TokenIdListNum","type":"uint256"}],"internalType":"struct IGOPoolFactory.IgoIdListItem[]","name":"IgoIdList","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"},{"internalType":"uint256[]","name":"index_list","type":"uint256[]"}],"name":"massGetStaking","outputs":[{"components":[{"internalType":"uint256[]","name":"idTokenList","type":"uint256[]"},{"internalType":"uint256","name":"idTokenListNum","type":"uint256"},{"components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"string","name":"tokenURI","type":"string"},{"internalType":"address","name":"ownerOf","type":"address"},{"components":[{"internalType":"bool","name":"mintStatus","type":"bool"},{"internalType":"bool","name":"buybackStatus","type":"bool"},{"internalType":"bool","name":"swapStatus","type":"bool"}],"internalType":"struct k.tokenIdInfo","name":"statusList","type":"tuple"}],"internalType":"struct k.nftInfo[]","name":"nftInfolist2","type":"tuple[]"},{"internalType":"uint256","name":"igoQuota","type":"uint256"},{"internalType":"uint256","name":"maxIgoNum","type":"uint256"}],"internalType":"struct IGOPoolFactory.stakingInfoItem[]","name":"stakingInfoList","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"orderItemInfo","outputs":[{"internalType":"contract IGOPool","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"orderNum","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]

6080604052600060015534801561001557600080fd5b50600061002061006f565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350610073565b3390565b6119af806100826000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c80639a0d36a1116100665780639a0d36a1146101345780639d78c83414610149578063dfe3a3c11461015e578063f2fde38b1461017e578063f3638a34146101915761009e565b80631bd9f877146100a35780631c3ac665146100cc5780631c423148146100ec5780638da5cb5b1461010c5780638f35325e14610114575b600080fd5b6100b66100b1366004611046565b6101a4565b6040516100c391906116a5565b60405180910390f35b6100df6100da36600461135e565b610474565b6040516100c39190611678565b6100ff6100fa366004611046565b61048f565b6040516100c3919061179c565b6100df6105f0565b61012761012236600461135e565b6105ff565b6040516100c391906118c6565b61014761014236600461102a565b61081f565b005b610151610899565b6040516100c391906118d9565b61017161016c36600461112b565b61089f565b6040516100c3919061173c565b61014761018c36600461102a565b61094e565b61014761019f366004611093565b610a04565b8051606090806101b357506001545b806001600160401b03811180156101c957600080fd5b5060405190808252806020026020018201604052801561020357816020015b6101f0610ad9565b8152602001906001900390816101e85790505b50915060005b8181101561046c576000818152600260205260408082205481516315d8e44960e01b815291516001600160a01b03909116929183916315d8e4499160048082019261016092909190829003018186803b15801561026557600080fd5b505afa158015610279573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061029d919061123a565b6020015190506000826001600160a01b031663e4e5daec896040518263ffffffff1660e01b81526004016102d19190611678565b60206040518083038186803b1580156102e957600080fd5b505afa1580156102fd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103219190611376565b90506060816001600160401b038111801561033b57600080fd5b50604051908082528060200260200182016040528015610365578160200160208202803683370190505b50905060005b8281101561041057604051632d5147c760e11b81526001600160a01b03861690635aa28f8e906103a1908d90859060040161168c565b60206040518083038186803b1580156103b957600080fd5b505afa1580156103cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103f19190611376565b8282815181106103fd57fe5b602090810291909101015260010161036b565b506040518060800160405280856001600160a01b03168152602001846001600160a01b031681526020018281526020018381525087868151811061045057fe5b6020026020010181905250505050508080600101915050610209565b505092915050565b6002602052600090815260409020546001600160a01b031681565b80516060908061049e57506001545b806001600160401b03811180156104b457600080fd5b506040519080825280602002602001820160405280156104ee57816020015b6104db610b13565b8152602001906001900390816104d35790505b50915060005b8181101561046c576000818152600260205260408082205490516311c8863360e01b8152606092918391839182916001600160a01b03909116906311c8863390610542908d90600401611678565b60006040518083038186803b15801561055a57600080fd5b505afa15801561056e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526105969190810190611165565b945094509450945094506040518060a00160405280868152602001858152602001848152602001838152602001828152508887815181106105d357fe5b6020026020010181905250505050505080806001019150506104f4565b6000546001600160a01b031690565b610607610b42565b6000828152600260205260409020546001600160a01b031661010082015261062d610ba3565b600083815260026020526040908190205481516315d8e44960e01b815291516001600160a01b03909116916315d8e44991600480830192610160929190829003018186803b15801561067e57600080fd5b505afa158015610692573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106b6919061123a565b8252506106c1610c13565b6000838152600260205260409081902054815163dda1f8ad60e01b815291516001600160a01b039091169163dda1f8ad91600480830192610140929190829003018186803b15801561071257600080fd5b505afa158015610726573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061074a9190611342565b602080840191909152600084815260029091526040808220548151635a25cc8960e01b81529151606094508493928392859283926001600160a01b0390921691635a25cc899160048083019288929190829003018186803b1580156107ae57600080fd5b505afa1580156107c2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526107ea919081019061125d565b60408f019590955260608e019390935260808d019190915260a08c015260c08b015260e08a0152509698975050505050505050565b610827610aa7565b6000546001600160a01b0390811691161461085d5760405162461bcd60e51b81526004016108549061188d565b60405180910390fd5b60018054600090815260026020526040902080546001600160a01b0319166001600160a01b038416179055805461089391610aab565b60015550565b60015481565b8051606090806108ae57506001545b806001600160401b03811180156108c457600080fd5b506040519080825280602002602001820160405280156108fe57816020015b6108eb610b42565b8152602001906001900390816108e35790505b50915060005b818110156109475761092884828151811061091b57fe5b60200260200101516105ff565b83828151811061093457fe5b6020908102919091010152600101610904565b5050919050565b610956610aa7565b6000546001600160a01b039081169116146109835760405162461bcd60e51b81526004016108549061188d565b6001600160a01b0381166109a95760405162461bcd60e51b815260040161085490611870565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b610a0c610aa7565b6000546001600160a01b03908116911614610a395760405162461bcd60e51b81526004016108549061188d565b60005b8151811015610aa357818181518110610a5157fe5b6020908102919091018101516001805460009081526002909352604090922080546001600160a01b0319166001600160a01b039092169190911790558054610a9891610aab565b600190815501610a3c565b5050565b3390565b600082820183811015610ad05760405162461bcd60e51b8152600401610854906118aa565b90505b92915050565b604051806080016040528060006001600160a01b0316815260200160006001600160a01b0316815260200160608152602001600081525090565b6040518060a0016040528060608152602001600081526020016060815260200160008152602001600081525090565b604051806101200160405280610b56610ba3565b8152602001610b63610c13565b815260200160608152602001606081526020016000815260200160008152602001606081526020016060815260200160006001600160a01b031681525090565b6040518061016001604052806000815260200160006001600160a01b031681526020016000815260200160006001600160a01b0316815260200160008152602001600015158152602001600081526020016000815260200160008152602001600081526020016000151581525090565b60405180610140016040528060006001600160a01b03168152602001600081526020016000815260200160008152602001600081526020016000815260200160006001600160a01b0316815260200160001515815260200160001515815260200160006001600160a01b031681525090565b8051610ad381611953565b600082601f830112610ca0578081fd5b8151610cb3610cae82611908565b6118e2565b818152915060208083019084810160005b84811015610d9f578151870160e0818a03601f19011215610ce457600080fd5b60a0610cef816118e2565b858301516001600160401b0380821115610d0857600080fd5b610d168d8984880101610e18565b8352604091508185015181811115610d2d57600080fd5b610d3b8e8a83890101610e18565b898501525060608086015182811115610d5357600080fd5b610d618f8b838a0101610e18565b848601525060809250610d768e848801610c85565b9084015250610d878c858501610fd4565b90820152865250509282019290820190600101610cc4565b505050505092915050565b600082601f830112610dba578081fd5b8135610dc8610cae82611908565b818152915060208083019084810181840286018201871015610de957600080fd5b60005b84811015610d9f57813584529282019290820190600101610dec565b80518015158114610ad357600080fd5b600082601f830112610e28578081fd5b81516001600160401b03811115610e3d578182fd5b610e50601f8201601f19166020016118e2565b9150808252836020828501011115610e6757600080fd5b610e78816020840160208601611927565b5092915050565b6000610160808385031215610e92578182fd5b610e9b816118e2565b91505081518152610eaf8360208401610c85565b602082015260408201516040820152610ecb8360608401610c85565b606082015260808201516080820152610ee78360a08401610e08565b60a082015260c082015160c082015260e082015160e0820152610100808301518183015250610120808301518183015250610140610f2784828501610e08565b9082015292915050565b6000610140808385031215610f44578182fd5b610f4d816118e2565b915050610f5a8383610c85565b81526020820151602082015260408201516040820152606082015160608201526080820151608082015260a082015160a0820152610f9b8360c08401610c85565b60c0820152610fad8360e08401610e08565b60e0820152610100610fc184828501610e08565b90820152610120610f2784848301610c85565b600060608284031215610fe5578081fd5b610fef60606118e2565b90508151610ffc8161196b565b8152602082015161100c8161196b565b6020820152604082015161101f8161196b565b604082015292915050565b60006020828403121561103b578081fd5b8135610ad081611953565b60008060408385031215611058578081fd5b823561106381611953565b915060208301356001600160401b0381111561107d578182fd5b61108985828601610daa565b9150509250929050565b600060208083850312156110a5578182fd5b82356001600160401b038111156110ba578283fd5b8301601f810185136110ca578283fd5b80356110d8610cae82611908565b81815283810190838501858402850186018910156110f4578687fd5b8694505b8385101561111f57803561110b81611953565b8352600194909401939185019185016110f8565b50979650505050505050565b60006020828403121561113c578081fd5b81356001600160401b03811115611151578182fd5b61115d84828501610daa565b949350505050565b600080600080600060a0868803121561117c578081fd5b85516001600160401b0380821115611192578283fd5b818801915088601f8301126111a5578283fd5b81516111b3610cae82611908565b80828252602080830192508086018d8283870289010111156111d3578788fd5b8796505b848710156111f55780518452600196909601959281019281016111d7565b508b015160408c0151919a5098509350505080821115611213578283fd5b5061122088828901610c90565b606088015160809098015196999598509695949350505050565b6000610160828403121561124c578081fd5b6112568383610e7f565b9392505050565b600080600080600080600080610360898b031215611279578586fd5b6112838a8a610e7f565b97506112938a6101608b01610f31565b96506102a08901516001600160401b03808211156112af578788fd5b6112bb8c838d01610e18565b97506102c08b01519150808211156112d1578485fd5b6112dd8c838d01610e18565b96506102e08b015195506103008b015194506103208b0151915080821115611303578384fd5b61130f8c838d01610e18565b93506103408b0151915080821115611325578283fd5b506113328b828c01610e18565b9150509295985092959890939650565b60006101408284031215611354578081fd5b6112568383610f31565b60006020828403121561136f578081fd5b5035919050565b600060208284031215611387578081fd5b5051919050565b6000815160e084526113a360e0850182611469565b9050602083015184820360208601526113bc8282611469565b915050604083015184820360408601526113d68282611469565b91505060018060a01b03606084015116606085015260808301518051151560808601526020810151151560a08601526040810151151560c0860152508091505092915050565b6001600160a01b03169052565b6000815180845260208085019450808401835b838110156114585781518752958201959082019060010161143c565b509495945050505050565b15159052565b60008151808452611481816020860160208601611927565b601f01601f19169290920160200192915050565b8051825260208101516114ab602084018261141c565b506040810151604083015260608101516114c8606084018261141c565b506080810151608083015260a08101516114e560a0840182611463565b5060c081015160c083015260e081015160e08301526101008082015181840152506101208082015181840152506101408082015161152582850182611463565b50505050565b61153682825161141c565b6020810151602083015260408101516040830152606081015160608301526080810151608083015260a081015160a083015260c081015161157a60c084018261141c565b5060e081015161158d60e0840182611463565b50610100808201516115a182850182611463565b5050610120808201516115258285018261141c565b60006103806115c6848451611495565b60208301516115d961016086018261152b565b506040830151816102a08601526115f282860182611469565b91505060608301518482036102c086015261160d8282611469565b91505060808301516102e085015260a083015161030085015260c083015184820361032086015261163e8282611469565b91505060e08301518482036103408601526116598282611469565b91505061010083015161167061036086018261141c565b509392505050565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b60208082528251828201819052600091906040908185019080840286018301878501865b8381101561172e57888303603f19018552815180516001600160a01b0390811685528882015116888501528681015160808886018190529061170d82870182611429565b606093840151969093019590955250948701949250908601906001016116c9565b509098975050505050505050565b6000602080830181845280855180835260408601915060408482028701019250838701855b8281101561178f57603f1988860301845261177d8583516115b6565b94509285019290850190600101611761565b5092979650505050505050565b60208082528251828201819052600091906040908185019080840286018301878501865b8381101561172e57603f19898403018552815160a081518186526117e682870182611429565b9150508882015189860152878201518582038987015281815161180981856118d9565b9350918b0191839150808c0282018d5b8281101561184357858203845261183182865161138e565b948e0194938e01939150600101611819565b50606086810151908a015260809586015195909801949094525050509487019450908601906001016117c0565b60208082526003908201526227bb9960e91b604082015260600190565b6020808252600390820152624f773160e81b604082015260600190565b602080825260029082015261653560f01b604082015260600190565b60006020825261125660208301846115b6565b90815260200190565b6040518181016001600160401b038111828210171561190057600080fd5b604052919050565b60006001600160401b0382111561191d578081fd5b5060209081020190565b60005b8381101561194257818101518382015260200161192a565b838111156115255750506000910152565b6001600160a01b038116811461196857600080fd5b50565b801515811461196857600080fdfea264697066735822122084017416128a04290919bc76ed696cc06e09b2d88085de53b6dd9fadc92ca38664736f6c634300060c0033

Deployed ByteCode Sourcemap

8037:4544:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11803:735;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8351:48;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;11151:638::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;2189:79::-;;;:::i;9797:930::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;8742:145::-;;;;;;:::i;:::-;;:::i;:::-;;8179:27;;;:::i;:::-;;;;;;;:::i;10735:404::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;2374:209::-;;;;;;:::i;:::-;;:::i;8906:246::-;;;;;;:::i;:::-;;:::i;11803:735::-;11959:17;;11899:32;;11992:7;11988:56;;-1:-1:-1;12023:8:0;;11988:56;12087:3;-1:-1:-1;;;;;12067:24:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;12055:36;;12108:9;12103:427;12122:3;12120:1;:5;12103:427;;;12147:9;12159:16;;;:13;:16;;;;;;;12214:7;;-1:-1:-1;;;12214:7:0;;;;-1:-1:-1;;;;;12159:16:0;;;;12147:9;12159:16;;12214:5;;:7;;;;;;;;;;;;;;;12159:16;12214:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:16;;;12191:39;;12246:9;12258:1;-1:-1:-1;;;;;12258:23:0;;12282:5;12258:30;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12246:42;;12304:21;12342:1;-1:-1:-1;;;;;12328:16:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12328:16:0;;12304:40;;12365:9;12360:102;12379:1;12377;:3;12360:102;;;12416:29;;-1:-1:-1;;;12416:29:0;;-1:-1:-1;;;;;12416:20:0;;;;;:29;;12437:5;;12443:1;;12416:29;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12406:4;12411:1;12406:7;;;;;;;;;;;;;;;;;:39;12381:3;;12360:102;;;;12492:25;;;;;;;;12506:1;-1:-1:-1;;;;;12492:25:0;;;;;12508:1;-1:-1:-1;;;;;12492:25:0;;;;;12510:4;12492:25;;;;12515:1;12492:25;;;12477:9;12487:1;12477:12;;;;;;;;;;;;;:40;;;;12103:427;;;;12126:3;;;;;;;12103:427;;;;11803:735;;;;;:::o;8351:48::-;;;;;;;;;;;;-1:-1:-1;;;;;8351:48:0;;:::o;11151:638::-;11307:17;;11239:40;;11340:7;11336:56;;-1:-1:-1;11371:8:0;;11336:56;11441:3;-1:-1:-1;;;;;11419:26:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;11401:44;;11460:9;11455:327;11479:3;11475:1;:7;11455:327;;;11534:22;11625:16;;;:13;:16;;;;;;;:34;;-1:-1:-1;;;11625:34:0;;11505:28;;11534:22;11505:28;;11534:22;;;;-1:-1:-1;;;;;11625:16:0;;;;:27;;:34;;11653:5;;11625:34;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;11625:34:0;;;;;;;;;;;;:::i;:::-;11504:155;;;;;;;;;;11695:75;;;;;;;;11711:11;11695:75;;;;11723:14;11695:75;;;;11738:12;11695:75;;;;11751:8;11695:75;;;;11760:9;11695:75;;;11674:15;11690:1;11674:18;;;;;;;;;;;;;:96;;;;11455:327;;;;;11484:3;;;;;;;11455:327;;2189:79;2227:7;2254:6;-1:-1:-1;;;;;2254:6:0;2189:79;:::o;9797:930::-;9854:32;;:::i;:::-;9926:21;;;;:13;:21;;;;;;-1:-1:-1;;;;;9926:21:0;;9899:24;;:48;9973:30;;:::i;:::-;10006:21;;;;:13;:21;;;;;;;;:27;;-1:-1:-1;;;10006:27:0;;;;-1:-1:-1;;;;;10006:21:0;;;;:25;;:27;;;;;;;;;;;;;;:21;:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10048:30;;-1:-1:-1;10115:30:0;;:::i;:::-;10148:21;;;;:13;:21;;;;;;;;:27;;-1:-1:-1;;;10148:27:0;;;;-1:-1:-1;;;;;10148:21:0;;;;:25;;:27;;;;;;;;;;;;;;:21;:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10190:16;;;;:30;;;;10304:17;10387:21;;;:13;:21;;;;;;;;:43;;-1:-1:-1;;;10387:43:0;;;;10260:19;;-1:-1:-1;10260:19:0;;10304:17;;;10260:19;;;;-1:-1:-1;;;;;10387:21:0;;;;:41;;:43;;;;;10304:17;;10387:43;;;;;;;:21;:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;10387:43:0;;;;;;;;;;;;:::i;:::-;10445:19;;;:27;;;;10487:21;;;:31;;;;10533:23;;;:35;;;;10583:20;;;:29;10627:21;;;:31;10673:23;;;:35;-1:-1:-1;10445:13:0;;9797:930;-1:-1:-1;;;;;;;;9797:930:0:o;8742:145::-;2326:12;:10;:12::i;:::-;2316:6;;-1:-1:-1;;;;;2316:6:0;;;:22;;;2308:38;;;;-1:-1:-1;;;2308:38:0;;;;;;;:::i;:::-;;;;;;;;;8822:8:::1;::::0;;8808:23:::1;::::0;;;:13:::1;:23;::::0;;;;:34;;-1:-1:-1;;;;;;8808:34:0::1;-1:-1:-1::0;;;;;8808:34:0;::::1;;::::0;;8864:8;;:15:::1;::::0;:12:::1;:15::i;:::-;8853:8;:26:::0;-1:-1:-1;8742:145:0:o;8179:27::-;;;;:::o;10735:404::-;10875:17;;10809:38;;10908:7;10904:56;;-1:-1:-1;10939:8:0;;10904:56;11008:3;-1:-1:-1;;;;;10990:22:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;10970:42;;11028:9;11023:109;11047:3;11043:1;:7;11023:109;;;11095:25;11106:10;11117:1;11106:13;;;;;;;;;;;;;;11095:10;:25::i;:::-;11072:17;11090:1;11072:20;;;;;;;;;;;;;;;;;:48;11052:3;;11023:109;;;;10735:404;;;;:::o;2374:209::-;2326:12;:10;:12::i;:::-;2316:6;;-1:-1:-1;;;;;2316:6:0;;;:22;;;2308:38;;;;-1:-1:-1;;;2308:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;2463:22:0;::::1;2455:38;;;;-1:-1:-1::0;;;2455:38:0::1;;;;;;;:::i;:::-;2530:6;::::0;;2509:38:::1;::::0;-1:-1:-1;;;;;2509:38:0;;::::1;::::0;2530:6;::::1;::::0;2509:38:::1;::::0;::::1;2558:6;:17:::0;;-1:-1:-1;;;;;;2558:17:0::1;-1:-1:-1::0;;;;;2558:17:0;;;::::1;::::0;;;::::1;::::0;;2374:209::o;8906:246::-;2326:12;:10;:12::i;:::-;2316:6;;-1:-1:-1;;;;;2316:6:0;;;:22;;;2308:38;;;;-1:-1:-1;;;2308:38:0;;;;;;;:::i;:::-;8994:9:::1;8989:156;9008:12;:19;9006:1;:21;8989:156;;;9080:12;9093:1;9080:15;;;;;;;;;::::0;;::::1;::::0;;;;;;;9068:8:::1;::::0;;9054:23:::1;::::0;;;:13:::1;:23:::0;;;;;;;:41;;-1:-1:-1;;;;;;9054:41:0::1;-1:-1:-1::0;;;;;9054:41:0;;::::1;::::0;;;::::1;::::0;;9117:8;;:15:::1;::::0;:12:::1;:15::i;:::-;9106:8;:26:::0;;;9028:3:::1;8989:156;;;;8906:246:::0;:::o;1352:106::-;1440:10;1352:106;:::o;3714:154::-;3772:7;3804:5;;;3828:6;;;;3820:21;;;;-1:-1:-1;;;3820:21:0;;;;;;;:::i;:::-;3859:1;-1:-1:-1;3714:154:0;;;;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;142:134::-;220:13;;238:33;220:13;238:33;:::i;1097:758::-;;1249:3;1242:4;1234:6;1230:17;1226:27;1216:2;;-1:-1;;1257:12;1216:2;1297:6;1291:13;1319:104;1334:88;1415:6;1334:88;:::i;:::-;1319:104;:::i;:::-;1451:21;;;1310:113;-1:-1;1495:4;1508:14;;;;1483:17;;;1603:1;1588:261;1613:6;1610:1;1607:13;1588:261;;;1683:10;;1671:23;;4604:4;4583:19;;;-1:-1;;4583:19;4579:30;4576:2;;;1603:1;;4612:12;4576:2;4655:4;4640:20;4655:4;4640:20;:::i;:::-;1495:4;1671:23;;4710:24;-1:-1;;;;;4754:18;4746:6;4743:30;4740:2;;;1603:1;;4776:12;4740:2;4821:70;4887:3;1495:4;4878:6;1671:23;4863:22;;4821:70;:::i;:::-;4803:16;4796:96;4961:18;;;;1671:23;4961:18;4955:25;4754:18;4992:6;4989:30;4986:2;;;1603:1;;5022:12;4986:2;5067:70;5133:3;1495:4;5124:6;1671:23;5109:22;;5067:70;:::i;:::-;1495:4;5053:5;5049:16;5042:96;;5209:18;;1671:23;5209:18;5203:25;4754:18;5240:6;5237:30;5234:2;;;1603:1;;5270:12;5234:2;5315:70;5381:3;1495:4;5372:6;1671:23;5357:22;;5315:70;:::i;:::-;4961:18;5301:5;5297:16;5290:96;;5515:22;;;5483:60;5539:3;5515:22;1671:23;5515:22;5483:60;:::i;:::-;5465:16;;;5458:86;-1:-1;5645:88;5729:3;5705:22;;;5645:88;:::i;:::-;5627:16;;;5620:114;1701:85;;-1:-1;;1800:14;;;;1828;;;;1635:1;1628:9;1588:261;;;1592:14;;;;;1209:646;;;;:::o;1881:707::-;;1998:3;1991:4;1983:6;1979:17;1975:27;1965:2;;-1:-1;;2006:12;1965:2;2053:6;2040:20;2075:80;2090:64;2147:6;2090:64;:::i;2075:80::-;2183:21;;;2066:89;-1:-1;2227:4;2240:14;;;;2215:17;;;2329;;;2320:27;;;;2317:36;-1:-1;2314:2;;;2366:1;;2356:12;2314:2;2391:1;2376:206;2401:6;2398:1;2395:13;2376:206;;;10461:20;;2469:50;;2533:14;;;;2561;;;;2423:1;2416:9;2376:206;;3344:128;3419:13;;47999;;47992:21;50029:32;;50019:2;;50075:1;;50065:12;4005:444;;4118:3;4111:4;4103:6;4099:17;4095:27;4085:2;;-1:-1;;4126:12;4085:2;4166:6;4160:13;-1:-1;;;;;43723:6;43720:30;43717:2;;;-1:-1;;43753:12;43717:2;4188:65;4583:19;43807:17;;-1:-1;;43803:33;43894:4;43884:15;4188:65;:::i;:::-;4179:74;;4273:6;4266:5;4259:21;4377:3;43894:4;4368:6;4301;4359:16;;4356:25;4353:2;;;4394:1;;4384:12;4353:2;4404:39;4436:6;43894:4;4335:5;4331:16;43894:4;4301:6;4297:17;4404:39;:::i;:::-;;4078:371;;;;:::o;5789:2000::-;;5917:6;;5905:9;5900:3;5896:19;5892:32;5889:2;;;-1:-1;;5927:12;5889:2;5955:22;5917:6;5955:22;:::i;:::-;5946:31;;;6094:22;10609:13;6044:16;6037:86;6221:85;6302:3;6188:2;6282:9;6278:22;6221:85;:::i;:::-;6188:2;6207:5;6203:16;6196:111;6378:2;6447:9;6443:22;10609:13;6378:2;6397:5;6393:16;6386:86;6572:60;6628:3;6539:2;6608:9;6604:22;6572:60;:::i;:::-;6539:2;6558:5;6554:16;6547:86;6695:3;6765:9;6761:22;10609:13;6695:3;6715:5;6711:16;6704:86;6892:57;6945:3;6858;6925:9;6921:22;6892:57;:::i;:::-;6858:3;6878:5;6874:16;6867:83;7018:3;7088:9;7084:22;10609:13;7018:3;7038:5;7034:16;7027:86;7180:3;7250:9;7246:22;10609:13;7180:3;7200:5;7196:16;7189:86;7340:3;;7412:9;7408:22;10609:13;7340:3;7360:5;7356:18;7349:88;;7503:3;;7575:9;7571:22;10609:13;7503:3;7523:5;7519:18;7512:88;;7674:3;7710:57;7763:3;7674;7743:9;7739:22;7710:57;:::i;:::-;7690:18;;;7683:85;7694:5;5883:1906;-1:-1;;5883:1906::o;7823:1860::-;;7951:6;;7939:9;7934:3;7930:19;7926:32;7923:2;;;-1:-1;;7961:12;7923:2;7989:22;7951:6;7989:22;:::i;:::-;7980:31;;;8098:73;8167:3;8143:22;8098:73;:::i;:::-;8080:16;8073:99;8238:2;8307:9;8303:22;10609:13;8238:2;8257:5;8253:16;8246:86;8404:2;8473:9;8469:22;10609:13;8404:2;8423:5;8419:16;8412:86;8565:2;8634:9;8630:22;10609:13;8565:2;8584:5;8580:16;8573:86;8723:3;8793:9;8789:22;10609:13;8723:3;8743:5;8739:16;8732:86;8887:3;8957:9;8953:22;10609:13;8887:3;8907:5;8903:16;8896:86;9080:85;9161:3;9046;9141:9;9137:22;9080:85;:::i;:::-;9046:3;9066:5;9062:16;9055:111;9271:57;9324:3;9237;9304:9;9300:22;9271:57;:::i;:::-;9237:3;9257:5;9253:16;9246:83;9398:3;9434:57;9487:3;9398;9467:9;9463:22;9434:57;:::i;:::-;9414:18;;;9407:85;9552:3;9588:73;9657:3;9633:22;;;9588:73;:::i;9717:670::-;;9845:4;9833:9;9828:3;9824:19;9820:30;9817:2;;;-1:-1;;9853:12;9817:2;9881:20;9845:4;9881:20;:::i;:::-;9872:29;;3425:6;3419:13;3437:30;3461:5;3437:30;:::i;:::-;9964:83;;10117:2;10179:22;;3419:13;3437:30;3419:13;3437:30;:::i;:::-;10117:2;10132:16;;10125:83;10275:2;10337:22;;3419:13;3437:30;3419:13;3437:30;:::i;:::-;10275:2;10290:16;;10283:83;10294:5;9811:576;-1:-1;;9811:576::o;10672:241::-;;10776:2;10764:9;10755:7;10751:23;10747:32;10744:2;;;-1:-1;;10782:12;10744:2;85:6;72:20;97:33;124:5;97:33;:::i;10920:502::-;;;11066:2;11054:9;11045:7;11041:23;11037:32;11034:2;;;-1:-1;;11072:12;11034:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;11124:63;-1:-1;11252:2;11237:18;;11224:32;-1:-1;;;;;11265:30;;11262:2;;;-1:-1;;11298:12;11262:2;11328:78;11398:7;11389:6;11378:9;11374:22;11328:78;:::i;:::-;11318:88;;;11028:394;;;;;:::o;11429:407::-;;11573:2;;11561:9;11552:7;11548:23;11544:32;11541:2;;;-1:-1;;11579:12;11541:2;11637:17;11624:31;-1:-1;;;;;11667:6;11664:30;11661:2;;;-1:-1;;11697:12;11661:2;11788:22;;435:4;423:17;;419:27;-1:-1;409:2;;-1:-1;;450:12;409:2;497:6;484:20;519:95;534:79;606:6;534:79;:::i;519:95::-;642:21;;;699:14;;;;674:17;;;788;;;779:27;;;;776:36;-1:-1;773:2;;;-1:-1;;815:12;773:2;-1:-1;841:10;;835:221;860:6;857:1;854:13;835:221;;;3932:6;3919:20;3944:48;3986:5;3944:48;:::i;:::-;928:65;;882:1;875:9;;;;;1007:14;;;;1035;;835:221;;;-1:-1;11717:103;11535:301;-1:-1;;;;;;;11535:301::o;11843:377::-;;11972:2;11960:9;11951:7;11947:23;11943:32;11940:2;;;-1:-1;;11978:12;11940:2;12036:17;12023:31;-1:-1;;;;;12066:6;12063:30;12060:2;;;-1:-1;;12096:12;12060:2;12126:78;12196:7;12187:6;12176:9;12172:22;12126:78;:::i;:::-;12116:88;11934:286;-1:-1;;;;11934:286::o;12227:1115::-;;;;;;12484:3;12472:9;12463:7;12459:23;12455:33;12452:2;;;-1:-1;;12491:12;12452:2;12542:17;12536:24;-1:-1;;;;;12580:18;12572:6;12569:30;12566:2;;;-1:-1;;12602:12;12566:2;12704:6;12693:9;12689:22;;;2742:3;2735:4;2727:6;2723:17;2719:27;2709:2;;-1:-1;;2750:12;2709:2;2790:6;2784:13;2812:80;2827:64;2884:6;2827:64;:::i;2812:80::-;2898:16;2934:6;2927:5;2920:21;2964:4;;2981:3;2977:14;2970:21;;2964:4;2956:6;2952:17;3086:3;2964:4;;3070:6;3066:17;2956:6;3057:27;;3054:36;3051:2;;;-1:-1;;3093:12;3051:2;-1:-1;3119:10;;3113:217;3138:6;3135:1;3132:13;3113:217;;;10609:13;;3206:61;;3160:1;3153:9;;;;;3281:14;;;;3309;;3113:217;;;-1:-1;12808:22;;10609:13;12898:2;12883:18;;12877:25;12622:99;;-1:-1;10609:13;-1:-1;12877:25;-1:-1;;;12911:30;;;12908:2;;;-1:-1;;12944:12;12908:2;;12974:113;13079:7;13070:6;13059:9;13055:22;12974:113;:::i;:::-;13124:2;13174:22;;10609:13;13243:3;13294:22;;;10609:13;12446:896;;;;-1:-1;12964:123;10609:13;;12446:896;-1:-1;;;;12446:896::o;13627:320::-;;13770:3;13758:9;13749:7;13745:23;13741:33;13738:2;;;-1:-1;;13777:12;13738:2;13839:92;13923:7;13899:22;13839:92;:::i;:::-;13829:102;13732:215;-1:-1;;;13732:215::o;13954:1731::-;;;;;;;;;14284:3;14272:9;14263:7;14259:23;14255:33;14252:2;;;-1:-1;;14291:12;14252:2;14353:92;14437:7;14413:22;14353:92;:::i;:::-;14343:102;;14501:92;14585:7;14482:3;14565:9;14561:22;14501:92;:::i;:::-;14491:102;;14651:3;14640:9;14636:19;14630:26;-1:-1;;;;;14676:18;14668:6;14665:30;14662:2;;;-1:-1;;14698:12;14662:2;14728:74;14794:7;14785:6;14774:9;14770:22;14728:74;:::i;:::-;14718:84;;14860:3;14849:9;14845:19;14839:26;14825:40;;14676:18;14877:6;14874:30;14871:2;;;-1:-1;;14907:12;14871:2;14937:74;15003:7;14994:6;14983:9;14979:22;14937:74;:::i;:::-;14927:84;;15048:3;15103:9;15099:22;10609:13;15057:74;;15168:3;15223:9;15219:22;10609:13;15177:74;;15309:3;15298:9;15294:19;15288:26;15274:40;;14676:18;15326:6;15323:30;15320:2;;;-1:-1;;15356:12;15320:2;15386:74;15452:7;15443:6;15432:9;15428:22;15386:74;:::i;:::-;15376:84;;15518:3;15507:9;15503:19;15497:26;15483:40;;14676:18;15535:6;15532:30;15529:2;;;-1:-1;;15565:12;15529:2;;15595:74;15661:7;15652:6;15641:9;15637:22;15595:74;:::i;:::-;15585:84;;;14246:1439;;;;;;;;;;;:::o;15692:320::-;;15835:3;15823:9;15814:7;15810:23;15806:33;15803:2;;;-1:-1;;15842:12;15803:2;15904:92;15988:7;15964:22;15904:92;:::i;16019:241::-;;16123:2;16111:9;16102:7;16098:23;16094:32;16091:2;;;-1:-1;;16129:12;16091:2;-1:-1;10461:20;;16085:175;-1:-1;16085:175::o;16267:263::-;;16382:2;16370:9;16361:7;16357:23;16353:32;16350:2;;;-1:-1;;16388:12;16350:2;-1:-1;10609:13;;16344:186;-1:-1;16344:186::o;16820:249::-;;26704:16;26698:23;26632:4;26741:14;26734:38;26787:73;26632:4;26627:3;26623:14;26841:12;26787:73;:::i;:::-;26779:81;;26947:4;26940:5;26936:16;26930:23;26999:3;26993:4;26989:14;26947:4;26977:3;26973:14;26966:38;27019:73;27087:4;27073:12;27019:73;:::i;:::-;27011:81;;;27181:4;27174:5;27170:16;27164:23;27233:3;27227:4;27223:14;27181:4;27211:3;27207:14;27200:38;27253:73;27321:4;27307:12;27253:73;:::i;:::-;27245:81;;;4754:18;;48445:42;;;27414:4;27407:5;27403:16;27397:23;48434:54;27414:4;27478:3;27474:14;17884:37;27574:4;27567:5;27563:16;27557:23;37497:16;37491:23;47999:13;47992:21;27574:4;27694:3;27690:14;23443:34;26947:4;37658:5;37654:16;37648:23;47999:13;47992:21;37719:14;27694:3;37719:14;23443:34;27181:4;37812:5;37808:16;37802:23;47999:13;47992:21;37873:14;27694:3;37873:14;23443:34;;16955:108;;;;16948:121;;;;:::o;17823:103::-;-1:-1;;;;;48434:54;17884:37;;17878:48::o;22710:670::-;;22893:5;44953:12;46633:6;46628:3;46621:19;46670:4;;46665:3;46661:14;22905:83;;46670:4;23059:5;44061:14;-1:-1;23098:260;23123:6;23120:1;23117:13;23098:260;;;23184:13;;37977:37;;17795:14;;;;45902;;;;23145:1;23138:9;23098:260;;;-1:-1;23364:10;;22824:556;-1:-1;;;;;22824:556::o;23388:94::-;47999:13;47992:21;23443:34;;23437:45::o;24127:327::-;;24262:5;44953:12;46633:6;46628:3;46621:19;24346:52;24391:6;46670:4;46665:3;46661:14;46670:4;24372:5;24368:16;24346:52;:::i;:::-;4583:19;49812:14;-1:-1;;49808:28;24410:39;;;;46670:4;24410:39;;24209:245;-1:-1;;24209:245::o;27795:1951::-;28011:16;28005:23;37984:3;37977:37;28180:4;28173:5;28169:16;28163:23;28192:88;28180:4;28269:3;28265:14;28251:12;28192:88;:::i;:::-;;28369:4;28362:5;28358:16;28352:23;28369:4;28433:3;28429:14;37977:37;28529:4;28522:5;28518:16;28512:23;28541:63;28529:4;28593:3;28589:14;28575:12;28541:63;:::i;:::-;;28684:4;28677:5;28673:16;28667:23;28684:4;28748:3;28744:14;37977:37;28845:4;28838:5;28834:16;28828:23;28857:57;28845:4;28903:3;28899:14;28885:12;28857:57;:::i;:::-;;29000:4;28993:5;28989:16;28983:23;29000:4;29064:3;29060:14;37977:37;29160:4;29153:5;29149:16;29143:23;29160:4;29224:3;29220:14;37977:37;29318:6;;29311:5;29307:18;29301:25;29318:6;29384:3;29380:16;37977:37;;29481:6;;29474:5;29470:18;29464:25;29481:6;29547:3;29543:16;37977:37;;29652:6;;29645:5;29641:18;29635:25;29666:59;29652:6;29712:3;29708:16;29694:12;29666:59;:::i;:::-;;;27907:1839;;:::o;29804:1811::-;30045:76;30106:14;30022:16;30016:23;30045:76;:::i;:::-;30205:4;30198:5;30194:16;30188:23;30205:4;30269:3;30265:14;37977:37;30370:4;30363:5;30359:16;30353:23;30370:4;30434:3;30430:14;37977:37;30530:4;30523:5;30519:16;30513:23;30530:4;30594:3;30590:14;37977:37;30687:4;30680:5;30676:16;30670:23;30687:4;30751:3;30747:14;37977:37;30849:4;30842:5;30838:16;30832:23;30849:4;30913:3;30909:14;37977:37;31006:4;30999:5;30995:16;30989:23;31018:88;31006:4;31095:3;31091:14;31077:12;31018:88;:::i;:::-;;31195:4;31188:5;31184:16;31178:23;31207:57;31195:4;31253:3;31249:14;31235:12;31207:57;:::i;:::-;;31351:6;;31344:5;31340:18;31334:25;31365:59;31351:6;31411:3;31407:16;31393:12;31365:59;:::i;:::-;;;31502:6;;31495:5;31491:18;31485:25;31516:78;31502:6;31581:3;31577:16;31563:12;31516:78;:::i;31699:2041::-;;31846:6;31941:119;32045:14;31918:16;31912:23;31941:119;:::i;:::-;32137:4;32130:5;32126:16;32120:23;32149:121;32262:6;32257:3;32253:16;32239:12;32149:121;:::i;:::-;;32350:4;32343:5;32339:16;32333:23;31846:6;32385;32380:3;32376:16;32369:40;32424:73;31846:6;31841:3;31837:16;32478:12;32424:73;:::i;:::-;32416:81;;;32585:4;32578:5;32574:16;32568:23;32639:3;32633:4;32629:14;32620:6;32615:3;32611:16;32604:40;32659:73;32727:4;32713:12;32659:73;:::i;:::-;32651:81;;;32822:4;32815:5;32811:16;32805:23;32891:6;32886:3;32882:16;37977:37;32980:4;32973:5;32969:16;32963:23;33049:6;33044:3;33040:16;37977:37;33139:4;33132:5;33128:16;33122:23;33193:3;33187:4;33183:14;33174:6;33169:3;33165:16;33158:40;33213:73;33281:4;33267:12;33213:73;:::i;:::-;33205:81;;;33376:4;33369:5;33365:16;33359:23;33430:3;33424:4;33420:14;33411:6;33406:3;33402:16;33395:40;33450:73;33518:4;33504:12;33450:73;:::i;:::-;33442:81;;;33614:6;33607:5;33603:18;33597:25;33628:80;33700:6;33695:3;33691:16;33677:12;33628:80;:::i;:::-;-1:-1;33724:11;31819:1921;-1:-1;;;31819:1921::o;38146:222::-;-1:-1;;;;;48434:54;;;;17884:37;;38273:2;38258:18;;38244:124::o;38375:333::-;-1:-1;;;;;48434:54;;;;17884:37;;38694:2;38679:18;;37977:37;38530:2;38515:18;;38501:207::o;38715:490::-;38952:2;38966:47;;;44953:12;;38937:18;;;46621:19;;;38715:490;;38952:2;46661:14;;;;;;18611:17;;;18602:27;;;;44061:14;;;38715:490;18769:420;18794:6;18791:1;18788:13;18769:420;;;18846:20;;;-1:-1;;18846:20;18834:33;;18895:13;;25690:23;;-1:-1;;;;;48434:54;;;23563:63;;25869:16;;;25863:23;48434:54;25965:14;;;23563:63;26055:16;;;26049:23;25625:4;26092:14;;;26085:38;;;25625:4;26138:103;25616:14;;;26049:23;26138:103;:::i;:::-;26336:4;26325:16;;;26319:23;26396:14;;;;37977:37;;;;-1:-1;19168:14;;;;26130:111;-1:-1;45902:14;;;;18816:1;18809:9;18769:420;;;-1:-1;39019:176;;38923:282;-1:-1;;;;;;;;38923:282::o;39212:482::-;;39445:2;;39434:9;39430:18;39445:2;39466:17;39459:47;39520:164;20673:5;44953:12;46633:6;46628:3;46621:19;46661:14;39434:9;46661:14;20685:121;;46661:14;39445:2;20863:6;20859:17;39434:9;20850:27;;20838:39;;39445:2;20976:5;44061:14;-1:-1;21015:414;21040:6;21037:1;21034:13;21015:414;;;18846:20;;39434:9;21096:4;21092:20;;21087:3;21080:33;17235:102;17333:3;21147:6;21141:13;17235:102;:::i;:::-;21161:128;-1:-1;21408:14;;;;45902;;;;21062:1;21055:9;21015:414;;;-1:-1;39512:172;;39416:278;-1:-1;;;;;;;39416:278::o;39701:498::-;39942:2;39956:47;;;44953:12;;39927:18;;;46621:19;;;39701:498;;39942:2;46661:14;;;;;;22046:17;;;22037:27;;;;44061:14;;;39701:498;22206:426;22231:6;22228:1;22225:13;22206:426;;;18846:20;;39931:9;22287:4;22283:20;;22278:3;22271:33;22338:6;22332:13;36122:4;36201:16;36195:23;36122:4;36238:14;36231:38;36284:103;36122:4;36117:3;36113:14;36368:12;36284:103;:::i;:::-;36276:111;;;39942:2;36475:5;36471:16;36465:23;39942:2;36546:3;36542:14;37977:37;46661:14;36637:5;36633:16;36627:23;36696:3;36690:4;36686:14;46661;36674:3;36670:14;36663:38;36716:151;19540:5;44953:12;19559:100;19652:6;19647:3;19559:100;:::i;:::-;19552:107;-1:-1;44061:14;;;;19552:107;;-1:-1;19712:17;;;19703:27;;-1:-1;19864:402;19889:6;19886:1;19883:13;19864:402;;;19951:9;19945:4;19941:20;19936:3;19929:33;20018:112;20125:4;19996:6;19990:13;20018:112;:::i;:::-;45902:14;;;;20245;;;;20010:120;-1:-1;22253:1;19904:9;19864:402;;;-1:-1;36956:4;36945:16;;;36939:23;37016:14;;;37977:37;37115:4;37104:16;;;37098:23;37175:14;;;;37977:37;;;;-1:-1;;;22611:14;;;;-1:-1;45902:14;;;;22253:1;22246:9;22206:426;;40465:416;40665:2;40679:47;;;24686:1;40650:18;;;46621:19;-1:-1;;;46661:14;;;24701:26;24746:12;;;40636:245::o;40888:416::-;41088:2;41102:47;;;24997:1;41073:18;;;46621:19;-1:-1;;;46661:14;;;25012:26;25057:12;;;41059:245::o;41311:416::-;41511:2;41525:47;;;25308:1;41496:18;;;46621:19;-1:-1;;;46661:14;;;25323:25;25367:12;;;41482:245::o;41734:382::-;;41917:2;41938:17;41931:47;41992:114;41917:2;41906:9;41902:18;42092:6;41992:114;:::i;42123:222::-;37977:37;;;42250:2;42235:18;;42221:124::o;42352:256::-;42414:2;42408:9;42440:17;;;-1:-1;;;;;42500:34;;42536:22;;;42497:62;42494:2;;;42572:1;;42562:12;42494:2;42414;42581:22;42392:216;;-1:-1;42392:216::o;42615:319::-;;-1:-1;;;;;42781:6;42778:30;42775:2;;;-1:-1;;42811:12;42775:2;-1:-1;42856:4;42844:17;;;42909:15;;42712:222::o;49468:268::-;49533:1;49540:101;49554:6;49551:1;49548:13;49540:101;;;49621:11;;;49615:18;49602:11;;;49595:39;49576:2;49569:10;49540:101;;;49656:6;49653:1;49650:13;49647:2;;;-1:-1;;49533:1;49703:16;;49696:27;49517:219::o;49849:117::-;-1:-1;;;;;48434:54;;49908:35;;49898:2;;49957:1;;49947:12;49898:2;49892:74;:::o;49973:111::-;50054:5;47999:13;47992:21;50032:5;50029:32;50019:2;;50075:1;;50065:12

Swarm Source

ipfs://84017416128a04290919bc76ed696cc06e09b2d88085de53b6dd9fadc92ca386
Block Transaction Gas Used Reward
Age Block Fee Address Jailed Incoming
Block Uncle Number Difficulty Gas Used Reward
Loading
Loading