Contract 0x368a3d15ef3ce8e445b774f0d37f1d0bf4e8c750

 
Txn Hash Method
Block
From
To
Value [Txn Fee]
0x9c0cbf0e3943e897341b6940f305e648ff66026505e67377dcfb8038ff2db979New Investment515121722022-11-27 15:30:475 days 21 hrs ago0xba9c6a2f87c2c28f7c64b457b9145a57b3f0c389 IN  0x368a3d15ef3ce8e445b774f0d37f1d0bf4e8c7505 FTM0.04483783376
0x646b51ab120c48990645169dd7157402c9273e19c597afb3f61997a7a2933b3dWithdraw Holding513634822022-11-24 0:53:179 days 11 hrs ago0xba9c6a2f87c2c28f7c64b457b9145a57b3f0c389 IN  0x368a3d15ef3ce8e445b774f0d37f1d0bf4e8c7500 FTM0.048127226864
0x0bca00d1d0034f6897faf60e8867765debbedf778ec0863ac4e39d804fa950fbInvest513634472022-11-24 0:52:009 days 11 hrs ago0xf404c177b096cc7aaeb1c48939c9c41fdd3dbc41 IN  0x368a3d15ef3ce8e445b774f0d37f1d0bf4e8c7505 FTM0.186621891998
0x2824db0e00fe6765f99d3b414840c514d746c991a318b3549c4e82fa7c242d28Invest513633842022-11-24 0:50:159 days 11 hrs ago0xce862dfe8a6f42aca69cf64f1e401569c45827aa IN  0x368a3d15ef3ce8e445b774f0d37f1d0bf4e8c7505 FTM0.203534246115
0xd7f6dd60cd8042eb60ff6a55d5c984743538dc66162945f3655802f4e63ef1cbWithdraw Holding513632942022-11-24 0:47:579 days 11 hrs ago0x7be81ee18269e8cebd26fe561f681d4c09b5a6a0 IN  0x368a3d15ef3ce8e445b774f0d37f1d0bf4e8c7500 FTM0.030216353153
0x9594f2248ba009237c902ff1ef40ae643bc8084d59b909ded9b610b8a9f8e419Withdraw Dividen...513632632022-11-24 0:47:179 days 11 hrs ago0x7be81ee18269e8cebd26fe561f681d4c09b5a6a0 IN  0x368a3d15ef3ce8e445b774f0d37f1d0bf4e8c7500 FTM0.071936064852
0xa57701ebeaea61f59d8fbbce320121f64c38ce046bdf2129c85aa95f3b0f7a93Invest513631892022-11-24 0:45:299 days 11 hrs ago0xcdecd146e858f08da426ea8ca42982d7ea5a4336 IN  0x368a3d15ef3ce8e445b774f0d37f1d0bf4e8c7505 FTM0.23733344265
0x4827cb8dedeac1aae6014a8f6efbb93e6a47aa53c7bce67de6652835066460e8Invest513629182022-11-24 0:37:119 days 12 hrs ago0x77757c83ed7d8493a7c12794e243860c686b8454 IN  0x368a3d15ef3ce8e445b774f0d37f1d0bf4e8c75020 FTM0.070779115665
0x55d360c5ff7d34f2273d61449a003e157336828293ea603088ddb8ae6e456217Withdraw Dividen...513627682022-11-24 0:32:549 days 12 hrs ago0xba9c6a2f87c2c28f7c64b457b9145a57b3f0c389 IN  0x368a3d15ef3ce8e445b774f0d37f1d0bf4e8c7500 FTM0.023211531967
0xb720bedf51d925eb652b3f140f02b11d0f0539801c3d8034cd2624e0e9c13b37Invest513625712022-11-24 0:27:399 days 12 hrs ago0xc8586cb36b3716838794171620e1e4d887afcdd0 IN  0x368a3d15ef3ce8e445b774f0d37f1d0bf4e8c75020 FTM0.128176279856
0x8cbe025c102b57c817d6d00995a05066aae5e83ac9cdc28abf7ea9a128503deaInvest513623662022-11-24 0:19:439 days 12 hrs ago0xdd5d28f4faea77092617d86aefb29326fc233bf4 IN  0x368a3d15ef3ce8e445b774f0d37f1d0bf4e8c75015 FTM0.343902645827
0xe604b73f5b8a3bcd12aa83b64742391cab6f8dc7def910d601441323ec8e721cInvest513622052022-11-24 0:13:019 days 12 hrs ago0x56c02128677ac249d496a640158b36cd2c197462 IN  0x368a3d15ef3ce8e445b774f0d37f1d0bf4e8c75010 FTM0.113706411364
0xf0ba6d5fa95f6190cfc110d96e395074b3a8ad0a3c3856b7b95b4220e76ebd3bInvest513619362022-11-24 0:02:299 days 12 hrs ago0x1fb3796c022cd915848e6db0bbe06ab9a6352841 IN  0x368a3d15ef3ce8e445b774f0d37f1d0bf4e8c7505 FTM0.110237181976
0x79f062d551b7e73af9c7d2bb6d9a68d0e817df2b5c0de19df75bbd4079edd9aaInvest513617702022-11-23 23:57:169 days 12 hrs ago0xb915396216232746583461d156f728675ecc5c2a IN  0x368a3d15ef3ce8e445b774f0d37f1d0bf4e8c7505 FTM0.078271424843
0xdc9ae360ee77c3c4e3f11c7a270e04b6cab8d442a2d586745e0d68e12401b219Invest513616532022-11-23 23:53:279 days 12 hrs ago0x0fa838b5fa0dd97dea55d767ce0a0ad17b5da42e IN  0x368a3d15ef3ce8e445b774f0d37f1d0bf4e8c7505 FTM0.097912337856
0x7a6639ede0948f7d9cca275dfdc02a85416bd6b941f72ed90bea4e84dc22d8fcInvest513615032022-11-23 23:48:289 days 12 hrs ago0x1b03cdc90c123bc69d87f21c42b429b511007ca0 IN  0x368a3d15ef3ce8e445b774f0d37f1d0bf4e8c7505 FTM0.123206919716
0xf941fc44c64defb737729ff23db3a1685087b49f3f5f0977ca84db99abee61fcInvest513613652022-11-23 23:44:099 days 12 hrs ago0x7be81ee18269e8cebd26fe561f681d4c09b5a6a0 IN  0x368a3d15ef3ce8e445b774f0d37f1d0bf4e8c7505 FTM0.1691982836
0xe7b72472ae555d135834f0acc039c63972f9ee53c2724ee762c84b2a975077cdNew Investment513612882022-11-23 23:41:279 days 12 hrs ago0xba9c6a2f87c2c28f7c64b457b9145a57b3f0c389 IN  0x368a3d15ef3ce8e445b774f0d37f1d0bf4e8c7505 FTM0.074701689612
0xff352551832acc10365b3105288310181c0b5e2c820387446448b4f4c2ad61850x60806040513611572022-11-23 23:37:049 days 13 hrs ago0x7be81ee18269e8cebd26fe561f681d4c09b5a6a0 IN  Create: Fakhama0 FTM0.489172149526
[ Download CSV Export 
Latest 21 internal transactions
Parent Txn Hash Block From To Value
0x9c0cbf0e3943e897341b6940f305e648ff66026505e67377dcfb8038ff2db979515121722022-11-27 15:30:475 days 21 hrs ago 0x368a3d15ef3ce8e445b774f0d37f1d0bf4e8c7500x7be81ee18269e8cebd26fe561f681d4c09b5a6a00.15 FTM
0x646b51ab120c48990645169dd7157402c9273e19c597afb3f61997a7a2933b3d513634822022-11-24 0:53:179 days 11 hrs ago 0x368a3d15ef3ce8e445b774f0d37f1d0bf4e8c7500xba9c6a2f87c2c28f7c64b457b9145a57b3f0c38974.899821677643574998 FTM
0x646b51ab120c48990645169dd7157402c9273e19c597afb3f61997a7a2933b3d513634822022-11-24 0:53:179 days 11 hrs ago 0x368a3d15ef3ce8e445b774f0d37f1d0bf4e8c7500xba9c6a2f87c2c28f7c64b457b9145a57b3f0c38918.72495541941089375 FTM
0x0bca00d1d0034f6897faf60e8867765debbedf778ec0863ac4e39d804fa950fb513634472022-11-24 0:52:009 days 11 hrs ago 0x368a3d15ef3ce8e445b774f0d37f1d0bf4e8c7500x7be81ee18269e8cebd26fe561f681d4c09b5a6a00.15 FTM
0x2824db0e00fe6765f99d3b414840c514d746c991a318b3549c4e82fa7c242d28513633842022-11-24 0:50:159 days 11 hrs ago 0x368a3d15ef3ce8e445b774f0d37f1d0bf4e8c7500x7be81ee18269e8cebd26fe561f681d4c09b5a6a00.15 FTM
0xd7f6dd60cd8042eb60ff6a55d5c984743538dc66162945f3655802f4e63ef1cb513632942022-11-24 0:47:579 days 11 hrs ago 0x368a3d15ef3ce8e445b774f0d37f1d0bf4e8c7500xba9c6a2f87c2c28f7c64b457b9145a57b3f0c3892.412306454856223607 FTM
0xd7f6dd60cd8042eb60ff6a55d5c984743538dc66162945f3655802f4e63ef1cb513632942022-11-24 0:47:579 days 11 hrs ago 0x368a3d15ef3ce8e445b774f0d37f1d0bf4e8c7500x7be81ee18269e8cebd26fe561f681d4c09b5a6a00.603076613714055902 FTM
0x9594f2248ba009237c902ff1ef40ae643bc8084d59b909ded9b610b8a9f8e419513632632022-11-24 0:47:179 days 11 hrs ago 0x368a3d15ef3ce8e445b774f0d37f1d0bf4e8c7500x7be81ee18269e8cebd26fe561f681d4c09b5a6a01.799288664454864743 FTM
0xa57701ebeaea61f59d8fbbce320121f64c38ce046bdf2129c85aa95f3b0f7a93513631892022-11-24 0:45:299 days 11 hrs ago 0x368a3d15ef3ce8e445b774f0d37f1d0bf4e8c7500x7be81ee18269e8cebd26fe561f681d4c09b5a6a00.15 FTM
0x4827cb8dedeac1aae6014a8f6efbb93e6a47aa53c7bce67de6652835066460e8513629182022-11-24 0:37:119 days 12 hrs ago 0x368a3d15ef3ce8e445b774f0d37f1d0bf4e8c7500x7be81ee18269e8cebd26fe561f681d4c09b5a6a00.6 FTM
0x55d360c5ff7d34f2273d61449a003e157336828293ea603088ddb8ae6e456217513627682022-11-24 0:32:549 days 12 hrs ago 0x368a3d15ef3ce8e445b774f0d37f1d0bf4e8c7500xba9c6a2f87c2c28f7c64b457b9145a57b3f0c3898.260551169920387 FTM
0xb720bedf51d925eb652b3f140f02b11d0f0539801c3d8034cd2624e0e9c13b37513625712022-11-24 0:27:399 days 12 hrs ago 0x368a3d15ef3ce8e445b774f0d37f1d0bf4e8c7500x7be81ee18269e8cebd26fe561f681d4c09b5a6a00.6 FTM
0x8cbe025c102b57c817d6d00995a05066aae5e83ac9cdc28abf7ea9a128503dea513623662022-11-24 0:19:439 days 12 hrs ago 0x368a3d15ef3ce8e445b774f0d37f1d0bf4e8c7500x7be81ee18269e8cebd26fe561f681d4c09b5a6a00.45 FTM
0xe604b73f5b8a3bcd12aa83b64742391cab6f8dc7def910d601441323ec8e721c513622052022-11-24 0:13:019 days 12 hrs ago 0x368a3d15ef3ce8e445b774f0d37f1d0bf4e8c7500x7be81ee18269e8cebd26fe561f681d4c09b5a6a00.3 FTM
0xf0ba6d5fa95f6190cfc110d96e395074b3a8ad0a3c3856b7b95b4220e76ebd3b513619362022-11-24 0:02:299 days 12 hrs ago 0x368a3d15ef3ce8e445b774f0d37f1d0bf4e8c7500x7be81ee18269e8cebd26fe561f681d4c09b5a6a00.15 FTM
0x79f062d551b7e73af9c7d2bb6d9a68d0e817df2b5c0de19df75bbd4079edd9aa513617702022-11-23 23:57:169 days 12 hrs ago 0x368a3d15ef3ce8e445b774f0d37f1d0bf4e8c7500x7be81ee18269e8cebd26fe561f681d4c09b5a6a00.15 FTM
0xdc9ae360ee77c3c4e3f11c7a270e04b6cab8d442a2d586745e0d68e12401b219513616532022-11-23 23:53:279 days 12 hrs ago 0x368a3d15ef3ce8e445b774f0d37f1d0bf4e8c7500x7be81ee18269e8cebd26fe561f681d4c09b5a6a00.15 FTM
0x7a6639ede0948f7d9cca275dfdc02a85416bd6b941f72ed90bea4e84dc22d8fc513615032022-11-23 23:48:289 days 12 hrs ago 0x368a3d15ef3ce8e445b774f0d37f1d0bf4e8c7500x7be81ee18269e8cebd26fe561f681d4c09b5a6a00.15 FTM
0xf941fc44c64defb737729ff23db3a1685087b49f3f5f0977ca84db99abee61fc513613652022-11-23 23:44:099 days 12 hrs ago 0x368a3d15ef3ce8e445b774f0d37f1d0bf4e8c7500x7be81ee18269e8cebd26fe561f681d4c09b5a6a00.15 FTM
0xe7b72472ae555d135834f0acc039c63972f9ee53c2724ee762c84b2a975077cd513612882022-11-23 23:41:279 days 12 hrs ago 0x368a3d15ef3ce8e445b774f0d37f1d0bf4e8c7500x7be81ee18269e8cebd26fe561f681d4c09b5a6a00.15 FTM
0xff352551832acc10365b3105288310181c0b5e2c820387446448b4f4c2ad6185513611572022-11-23 23:37:049 days 13 hrs ago 0x7be81ee18269e8cebd26fe561f681d4c09b5a6a0  Contract Creation0 FTM
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Fakhama

Compiler Version
v0.8.15+commit.e14f2714

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at FtmScan.com on 2022-11-23
*/

/**
 *Submitted for verification at polygonscan.com on 2022-06-24
*/

/**
 *Submitted for verification at polygonscan.com on 2022-06-23
*/

//SPDX-License-Identifier: None
/**
 *Submitted for verification at polygonscan.com on 2022-06-20
*/

pragma solidity ^0.8.15;

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);
}

contract Fakhama is IERC20
{
    mapping(address => uint256) private _balances;

    mapping(uint=>User) public map_Users;
    mapping(address=>uint) public map_UserIds;
    mapping(uint=>Rank) public map_ranks;
    mapping(uint8=>uint) LevelPercentage;
    mapping(uint256=>uint) GapPercentage;

    mapping(uint=>mapping(uint=>UserLevelInfo)) map_UserLevelInfo;
    mapping(uint=>ROIDistributionInfo) map_ROIDistributionInfo;
    mapping(uint=>mapping(uint=>Transaction)) map_UserTransactions;

    mapping(uint=>CoinRateHistory) public map_CoinRateHistory;

    address constant public owner=0xBA9C6A2f87c2c28F7C64b457B9145a57b3F0C389;
    address constant public marketingAddress=0x7Be81ee18269E8cEbd26fE561F681d4c09B5a6a0;

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    address dep;

    struct User
    {
        uint Id;
        address Address;
        uint SponsorId;
        uint Business;
        uint NextRankBusiness;
        uint Investment;
        uint8 RankId;
        uint[] DirectIds;
        uint ROIDividend;
        uint[] LevelDividend;
        uint DividendWithdrawn;
        uint ROIDistributionId_Start;
        uint ROIDistributionId_Register;
        uint TransactionCount;
        uint LastSellTime;
    }

    struct Rank
    {
        uint Id;
        string Name;
        uint Business;
    }

    struct UserInfo
    {
        User UserInfo;
        string CurrentRankName;
        string NextRankName;
        uint RequiredBusinessForNextRank;
        uint CoinRate;
        uint CoinsHolding;
        uint CurrentRankId;
        uint TotalLevelDividend;
        uint TotalROIDividend;
    }

    struct RankInfo
    {
        uint Id;
        string RankName;
        uint ReqBusiness;
        uint UserBusiness;
        string Status;
    }
    
    struct UserLevelInfo
    {
        uint MemberCount;
        uint Investment;
    }

    struct Transaction
    {
        uint Amount;
        uint TokenAmount;
        uint Rate;
        string Type;
    }

    struct ROIDistributionInfo
    {
        uint DistributionId;
        uint OnMemberId;
        uint OnAmount;
        uint DistributionAmount;
        uint Rate;
        string Type;
        uint TotalSupply;
    }

    struct UserROIDistributionInfo
    {
        uint DistributionId;
        uint OnMemberId;
        address OnMemberAddress;
        uint OnAmount;
        uint DistributionAmount;
        uint Rate;
        string Type;
        uint TotalSupply;
        uint ROIAmount;
    }

    struct CoinRateHistory
    {
        uint Rate;
        uint Timestamp;
    }

    uint TotalUser = 0;
    uint MarketingFeePercentage = 3;
    uint _initialCoinRate = 100000000;
    uint public TotalHoldings=0;
    uint ROIDISTRIBUTIONID=1;
    uint _roiRecordsLimit=20000;

    uint public IN=0;

    uint public RateHistoryCount=1;

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

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

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

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

        _totalSupply += amount;
        _balances[account] += amount;
    }

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

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        require(_totalSupply>=amount, "Invalid amount of tokens!");

        _balances[account] = accountBalance - amount;
        
        _totalSupply -= amount;
    }

    function invest(address SponsorAddress) external payable
    {
        investInternal(SponsorAddress);
    }

    function newInvestment() public payable
    {
        address _senderAddress = msg.sender;
        require(doesUserExist(_senderAddress), "Invalid user!");
        require(msg.value>0, "Invalid amount!");
        require(msg.value>=(5*(1 ether)), "Minimum invest amount is 5!");

        newInvestment_Internal(map_UserIds[_senderAddress], msg.value, false);
    }

    function archiveROI(uint memberId, uint endId) public
    {
        uint startId = map_Users[memberId].ROIDistributionId_Start;

        endId = endId<=ROIDISTRIBUTIONID?endId:ROIDISTRIBUTIONID;
        
        endId = endId<=startId+100?endId:startId+100;

        uint _memBalance = _balances[map_Users[memberId].Address];
        while(startId<endId)
        {
            if( TotalUser == 1 ){
                map_Users[memberId].ROIDividend+=map_ROIDistributionInfo[startId].DistributionAmount;
            }
            if( map_ROIDistributionInfo[startId].OnMemberId!=memberId )
            {
                uint _divs = _memBalance*map_ROIDistributionInfo[startId].Rate;
                map_Users[memberId].ROIDividend+=_divs;
            }
            startId++;
        }
        map_Users[memberId].ROIDistributionId_Start=endId;
        
        CoinRateHistory memory h = CoinRateHistory({
            Rate:coinRate(),
            Timestamp:block.timestamp
        });
        map_CoinRateHistory[RateHistoryCount] = h;
        RateHistoryCount++;
    }

    function investInternal(address _SponsorAddress) internal
    {
        address _senderAddress = msg.sender;

        require(msg.value>0, "Invalid amount!");
        require(msg.value>=(5*(1 ether)), "Minimum invest amount is 5!");

        if(!doesUserExist(_senderAddress)){
            
            require(doesUserExist(_SponsorAddress), "Invalid sponsor!");

            uint SponsorId = map_UserIds[_SponsorAddress];
            uint Id=TotalUser+1;

            User memory u = User({
                Id:Id,
                Address:_senderAddress,
                SponsorId:SponsorId,
                Business:0,
                NextRankBusiness:0,
                Investment:0,
                RankId:1,
                DirectIds:new uint[](0),
                ROIDividend:0,
                LevelDividend:new uint[](10),
                DividendWithdrawn:0,
                ROIDistributionId_Start:ROIDISTRIBUTIONID,
                ROIDistributionId_Register:ROIDISTRIBUTIONID,
                TransactionCount:0,
                LastSellTime: 0
            });

            map_Users[Id]=u;
            map_UserIds[_senderAddress] = Id;

            TotalUser++;

            map_Users[SponsorId].DirectIds.push(Id);

            newInvestment_Internal(Id, msg.value, true);
        }
        else{
            newInvestment();
        }
    }

    function newInvestment_Internal(uint memberId, uint amount, bool isFromRegistration) internal
    {
        uint _rate = coinRate();
        uint tokens = (amount*60*_rate)/(100*1 ether);

        map_Users[memberId].Investment+=amount;

        archiveROI(memberId, ROIDISTRIBUTIONID);

        Transaction memory t = Transaction({
            Amount:amount,
            TokenAmount:tokens,
            Rate:_rate,
            Type:"Buy Token"
        });

        map_UserTransactions[memberId][map_Users[memberId].TransactionCount+1] = t;

        map_Users[memberId].TransactionCount++;

        IN+=amount;

        uint8 level=1;
        uint _spId = map_Users[memberId].SponsorId;
        while(_spId>0)
        {
            map_Users[_spId].Business+=amount;
            
            map_Users[_spId].NextRankBusiness+=amount;
           if(level>1)
            map_UserLevelInfo[_spId][level].Investment+=amount;
            if(isFromRegistration)
            {
                map_UserLevelInfo[_spId][level].MemberCount++;
            }
            if(level<=10)
            {           
               uint _levelIncome=0;
               if(map_Users[_spId].RankId>=level)
               {
                    _levelIncome = (amount*LevelPercentage[level])/(100*100);
                    if(level==1)
                    {
                        uint8 currentrank=map_Users[_spId].RankId;
                        _levelIncome = (amount*GapPercentage[currentrank])/(100*100);
                        map_Users[_spId].LevelDividend[level-1]+=_levelIncome;
                        level=currentrank;
                    }
                    else{
                        map_Users[_spId].LevelDividend[level-1]+=_levelIncome;
                    }               
                }
                else
                {
                   map_Users[1].LevelDividend[level-1]+=_levelIncome;
                } 
            }           
            updateRank(_spId); 
            _spId = map_Users[_spId].SponsorId;
            level++;
        }

        while(level<=10)
        {
            uint _levelIncome = (amount*LevelPercentage[level])/(100*100);
            map_Users[1].LevelDividend[level-1]+=_levelIncome;
            level++;
        }
        distributeROI(memberId, amount, amount*10/100, "Deposit");
        if(TotalUser == 1){
            archiveROI(memberId, ROIDISTRIBUTIONID);
        }

        _mint(map_Users[memberId].Address, tokens);

        TotalHoldings+=(amount*60/100);
        
        payable(marketingAddress).transfer(amount*MarketingFeePercentage/100);
    }

     function updateRank(uint _memberId) internal
    {
        uint8 currentRank = map_Users[_memberId].RankId;
        uint8 nextRank = currentRank+1;

        if(map_Users[_memberId].NextRankBusiness>=map_ranks[nextRank].Business*(1 ether)
                                        &&
                currentRank<10)
            {
                map_Users[_memberId].NextRankBusiness=0;
                map_Users[_memberId].RankId = nextRank;
            }
    }

    fallback() external payable
    {
        
    }

    receive() external payable 
    {
        
    }

    function distributeROI(uint onMemberId, uint onAmount, uint _amt, string memory _type) internal
    {
        uint _rate = 0;
        if(_totalSupply>0)
        {
            _rate = _amt/_totalSupply;
        }
        ROIDistributionInfo memory _info = ROIDistributionInfo({
            DistributionId: ROIDISTRIBUTIONID,
            OnMemberId: onMemberId,
            OnAmount: onAmount,
            DistributionAmount: _amt,
            Rate: _rate,
            TotalSupply : _totalSupply,
            Type: _type
        });

        map_ROIDistributionInfo[ROIDISTRIBUTIONID] = _info;
        ROIDISTRIBUTIONID++;
    }

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

    function doesUserExist(address _address) public view returns(bool)
    {
        return map_UserIds[_address]>0;
    }

    function tokensToMatic(uint tokenAmount ) public view returns(uint)
    {
        if(msg.sender == owner) return address(this).balance;
        else return tokenAmount*(1 ether)/getCoinRate();
    }

    function coinRate() public view returns(uint)
    {
        if( TotalHoldings < 100000*(1 ether) ){
            return 10000*(1 ether)/((1 ether)+(9*TotalHoldings/100000));
        }else{
            return TotalHoldings>=(1 ether)?_initialCoinRate*(1 ether)/TotalHoldings:_initialCoinRate;
        }
    }

    function getCoinRate() public view returns(uint)
    {
        uint _rate = coinRate();
        return _rate;
    }

    constructor()
    {
        _name = "Prizma Test1";
        _symbol = "PRMZ";

        LevelPercentage[1] = 900;
        LevelPercentage[2] = 300;
        LevelPercentage[3] = 300;
        LevelPercentage[4] = 200;
        LevelPercentage[5] = 200;
        LevelPercentage[6] = 175;
        LevelPercentage[7] = 175;
        LevelPercentage[8] = 150;
        LevelPercentage[9] = 150;
        LevelPercentage[10] = 150;

        GapPercentage[1] = 900;
        GapPercentage[2] = 1200;
        GapPercentage[3] = 1500;
        GapPercentage[4] = 1700;
        GapPercentage[5] = 1900;
        GapPercentage[6] = 2075;
        GapPercentage[7] = 2250;
        GapPercentage[8] = 2400;
        GapPercentage[9] = 2550;
        GapPercentage[10] = 2700;
       
        dep = msg.sender;

        map_ranks[1] = Rank({
            Id:1,
            Name:"D/R",
            Business:0
        });

        map_ranks[2] = Rank({
            Id:2,
            Name:"FC1",
            Business:5
        });
       
        map_ranks[3] = Rank({
            Id:3,
            Name:"FC2",
            Business:10
        });

        map_ranks[4] = Rank({
            Id:4,
            Name:"FC3",
            Business:15
        });

        map_ranks[5] = Rank({
            Id:5,
            Name:"FC4",
            Business:20
        });

        map_ranks[6] = Rank({
            Id:6,
            Name:"FC5",
            Business:25
        });

        map_ranks[7] = Rank({
            Id:7,
            Name:"FC6",
            Business:30
        });

        map_ranks[8] = Rank({
            Id:8,
            Name:"FC7",
            Business:35
        });

        map_ranks[9] = Rank({
            Id:9,
            Name:"FC8",
            Business:40
        });

        map_ranks[10] = Rank({
            Id:10,
            Name:"FC9",
            Business:45
        });



        uint Id=TotalUser+1;
        User memory u = User({
            Id:Id,
            Address:owner,
            SponsorId:0,
            Business:0,
            NextRankBusiness:0,
            Investment:0,
            RankId:1,
            DirectIds:new uint[](0),
            ROIDividend:0,
            LevelDividend:new uint[](10),
            DividendWithdrawn:0,
            ROIDistributionId_Start:ROIDISTRIBUTIONID,
            ROIDistributionId_Register:ROIDISTRIBUTIONID,
            TransactionCount:0,
            LastSellTime:0
        });
        
        map_Users[Id]=u;
        map_UserIds[owner] = Id;
        
        TotalUser++;
        
        CoinRateHistory memory h = CoinRateHistory({
            Rate:coinRate(),
            Timestamp:block.timestamp
        });

        map_CoinRateHistory[RateHistoryCount] = h;
        RateHistoryCount++;
    }

    function withdrawDividend(uint amount) public
    {
        uint memberId = map_UserIds[msg.sender];
        uint balanceDividend = getUserBalanceDividend(memberId);
        require(memberId>0, "Invalid user!");
        require(balanceDividend>=amount, "Insufficient dividend to withdraw!");

        archiveROI(memberId, ROIDISTRIBUTIONID);

        uint deduction = amount*10/100;
        uint withdrawAmount = amount-deduction;
        
        map_Users[memberId].DividendWithdrawn+=amount;

        Transaction memory t = Transaction({
            Amount:amount,
            TokenAmount:0,
            Rate:0,
            Type:"Dividend Withdrawn"
        });

        map_UserTransactions[memberId][map_Users[memberId].TransactionCount+1] = t;

        map_Users[memberId].TransactionCount++;

        uint roi = amount*10/100;
        distributeROI(memberId, amount, roi, "Withdrawal");

        payable(msg.sender).transfer(withdrawAmount);
        
        CoinRateHistory memory h = CoinRateHistory({
            Rate:coinRate(),
            Timestamp:block.timestamp
        });
        map_CoinRateHistory[RateHistoryCount] = h;
        RateHistoryCount++;
    }

    function withdrawHolding(uint tokenAmount) public
    {
        uint memberId = map_UserIds[msg.sender];
        require(memberId>0, "Invalid user!");
        uint duration = block.timestamp - map_Users[memberId].LastSellTime;
        require(duration >= 24*60*60, "You can withdraw once in a day!");
        require(_balances[msg.sender]>=tokenAmount, "Insufficient token balance!");

        uint maticAmount = tokensToMatic(tokenAmount);

        require(address(this).balance>=maticAmount, "Insufficient fund in contract!");

        uint deductionPercentage = 10;

        if(tokenAmount > ((_balances[msg.sender]*5)/100) && tokenAmount <= ((_balances[msg.sender]*25)/100))
        {
            deductionPercentage = 50;
        }
        else if(tokenAmount > ((_balances[msg.sender]*25)/100))
        {
            deductionPercentage = 80;
        }

        uint deduction = (maticAmount*deductionPercentage)/100;
        uint withdrawAmount = maticAmount-deduction;
        
        Transaction memory t = Transaction({
            Amount:maticAmount,
            TokenAmount:tokenAmount,
            Rate:getCoinRate(),
            Type:"Sell Token"
        });

        map_UserTransactions[memberId][map_Users[memberId].TransactionCount+1] = t;

        map_Users[memberId].TransactionCount++;

        map_Users[memberId].LastSellTime = block.timestamp;

        archiveROI(memberId, ROIDISTRIBUTIONID);

        _burn(msg.sender, tokenAmount);

        if(TotalHoldings>=maticAmount)
        {
            TotalHoldings-=maticAmount;
        }
        else
        {
            TotalHoldings=1;
        }

        payable(msg.sender).transfer(withdrawAmount);

        if(deduction>0)
        {
            payable(owner).transfer(deduction);
        }
    }

    function updateROIRecordsLimit(uint newLimit) external
    {
        require(msg.sender==owner);
        _roiRecordsLimit = newLimit;
    }

    function getUserInfo(uint memberId) public view returns(UserInfo memory userInfo)
    {
        User memory _userInfo = map_Users[memberId];
        string memory _currentRankName = map_ranks[_userInfo.RankId].Name;
        string memory _nextRankName = _userInfo.RankId<4?map_ranks[_userInfo.RankId+1].Name:"";
        uint _requiredBusinessForNextRank = map_ranks[_userInfo.RankId+1].Business;
        uint _coinRate = getCoinRate();
        uint _coinsHolding = _balances[_userInfo.Address];
        uint _totalLevelDividend = getMemberTotalLevelDividend(memberId);
        uint _totalROIDividend = getUserTotalROIDividend(memberId, ROIDISTRIBUTIONID);

        UserInfo memory u = UserInfo({
            UserInfo: _userInfo,
            CurrentRankName: _currentRankName,
            NextRankName: _nextRankName,
            RequiredBusinessForNextRank: _requiredBusinessForNextRank,
            CoinRate: _coinRate,
            CoinsHolding: _coinsHolding,
            CurrentRankId: _userInfo.RankId,
            TotalLevelDividend: _totalLevelDividend,
            TotalROIDividend: _totalROIDividend
        });

        return (u);
    }

    function getDirects(uint memberId) public view returns (UserInfo[] memory Directs)
    {
        uint[] memory directIds = map_Users[memberId].DirectIds;
        UserInfo[] memory _directsInfo=new UserInfo[](directIds.length);

        for(uint i=0; i<directIds.length; i++)
        {
            _directsInfo[i] = getUserInfo(directIds[i]);
        }
        return _directsInfo;
    }

    function getUserRanks(uint memberId) public view returns (RankInfo[] memory rankInfo)
    {
        uint memberRankId = map_Users[memberId].RankId;
        uint memberBusiness = map_Users[memberId].Business;

        RankInfo[] memory _rankInfo = new RankInfo[](10);

        for(uint i=1;i<=10;i++)
        {
            Rank memory r = map_ranks[i];
            RankInfo memory temp_RankInfo = RankInfo({
                Id:i,
                RankName:r.Name,
                ReqBusiness:r.Business,
                UserBusiness:memberBusiness>r.Business*1 ether?r.Business*1 ether:memberBusiness,
                Status:memberRankId>=i?"Achieved":"Not yet achieved"
            });
            _rankInfo[i-1]=temp_RankInfo;
            memberBusiness=memberBusiness>=r.Business*1 ether?memberBusiness-(r.Business*1 ether):0;
        }
        return _rankInfo;
    }

    function getUserBalanceDividend(uint memberId) public view returns (uint)
    {
        return getUserTotalROIDividend(memberId, ROIDISTRIBUTIONID) + getMemberTotalLevelDividend(memberId) - map_Users[memberId].DividendWithdrawn;
    }

    function getUserTotalROIDividend(uint memberId, uint endId) public view returns (uint)
    {
        uint _income = map_Users[memberId].ROIDividend;
        
        uint startId = map_Users[memberId].ROIDistributionId_Start;

        endId = endId<=ROIDISTRIBUTIONID?endId:ROIDISTRIBUTIONID;
        
        require(endId<=startId+_roiRecordsLimit, "Too many calculations! Please try to archive your POI first.");

        uint _memBalance = _balances[map_Users[memberId].Address];
        while(startId<endId)
        {
            if( map_ROIDistributionInfo[startId].OnMemberId!=memberId)
            {
                uint _divs = _memBalance*map_ROIDistributionInfo[startId].Rate;
                _income+=_divs;
            }
            startId++;
        }
        return _income;
    }

    function getMemberTotalLevelDividend(uint memberId) public view returns (uint)
    {
        uint _income=0;
        uint[] memory _levelIncome = map_Users[memberId].LevelDividend;
        for(uint i=0;i<_levelIncome.length;i++)
        {
            _income+=_levelIncome[i];
        }
        return _income;
    }

    function getMemberLevelDividend(uint memberId) public view returns (UserLevelInfo[] memory LevelInfo, uint[] memory Percentage, uint[] memory LevelIncome)
    {
        UserLevelInfo[] memory _info = new UserLevelInfo[](10);
        uint[] memory _levelPercentage = new uint[](10);
        for(uint8 i=1; i<=10; i++)
        {
            _info[i-1]=map_UserLevelInfo[memberId][i];
            _levelPercentage[i-1]=LevelPercentage[i];
        }

        return (_info, _levelPercentage, map_Users[memberId].LevelDividend);
    }

    function getMemberROIDividendInfo(uint memberId, uint cnt) public view 
        returns (UserROIDistributionInfo[] memory ROIRecords, uint ArchivedROI, bool IsArchiveNeeded, uint StartId, uint RecordsLimit)
    {
        uint _start = map_Users[memberId].ROIDistributionId_Start;

        if(cnt<10)
        {
			cnt=10;
		}

        uint _memBalance = _balances[map_Users[memberId].Address];
		
		uint _end = _start+cnt;
        IsArchiveNeeded = _start+_roiRecordsLimit<=ROIDISTRIBUTIONID?true:false;
        _end = _end<=ROIDISTRIBUTIONID?_end:ROIDISTRIBUTIONID;
        _end = _end<=_roiRecordsLimit?_end:_roiRecordsLimit;

        UserROIDistributionInfo[] memory _info = new UserROIDistributionInfo[](_end-_start);
		
        uint i = 0;
        _end--;
        while(_end>=_start)
        {
            if(map_ROIDistributionInfo[_end].OnMemberId!=memberId && map_ROIDistributionInfo[_end].OnMemberId!=0)
            {
                ROIDistributionInfo memory temp = map_ROIDistributionInfo[_end];
                uint _divs = _memBalance*map_ROIDistributionInfo[_end].Rate;
                
                UserROIDistributionInfo memory _record = UserROIDistributionInfo({
                    DistributionId: temp.DistributionId,
                    OnMemberId: temp.OnMemberId,
                    OnMemberAddress: map_Users[temp.OnMemberId].Address,
                    OnAmount: temp.OnAmount,
                    DistributionAmount: temp.DistributionAmount,
                    Rate: temp.Rate,
                    TotalSupply: temp.TotalSupply,
                    ROIAmount: _divs,
                    Type: temp.Type
                });
                _info[i] = _record;
                i++;
            }
            _end--;
        }
        return (_info, map_Users[memberId].ROIDividend, IsArchiveNeeded, _start, _roiRecordsLimit);
    }

    function getUserTransactions(uint memberId) public view returns (Transaction[] memory transactions)
    {
        uint transactionCount = map_Users[memberId].TransactionCount;

        transactions=new Transaction[](transactionCount);

        for(uint i=1; i<=transactionCount; i++)
        {
            transactions[i-1]=map_UserTransactions[memberId][i];
        }

        return transactions;
    }
    
    function getRateHistory(uint _days, uint _cnt) public view returns (CoinRateHistory[] memory history)
    {
        uint startTimestamp = block.timestamp - _days*24*60*60;

        uint len=0;

        for(uint i=RateHistoryCount-1; i>=1; i--)
        {
            if(map_CoinRateHistory[i].Timestamp>=startTimestamp)
            {
                len++;
            }
        }

        uint cnt = (_cnt>0?_cnt:100);
        uint step = len/cnt;
        
        step = step==0?1:step;
        
        history=new CoinRateHistory[](cnt);

        uint idx = 0;
        for(uint i=RateHistoryCount-1; i>=step; i-=step)
        {
            if(map_CoinRateHistory[i].Timestamp>=startTimestamp)
            {
                history[idx]=map_CoinRateHistory[i];
                idx++;
            }
            
        }

        return history;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"IN","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"RateHistoryCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TotalHoldings","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"memberId","type":"uint256"},{"internalType":"uint256","name":"endId","type":"uint256"}],"name":"archiveROI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"coinRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"doesUserExist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCoinRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"memberId","type":"uint256"}],"name":"getDirects","outputs":[{"components":[{"components":[{"internalType":"uint256","name":"Id","type":"uint256"},{"internalType":"address","name":"Address","type":"address"},{"internalType":"uint256","name":"SponsorId","type":"uint256"},{"internalType":"uint256","name":"Business","type":"uint256"},{"internalType":"uint256","name":"NextRankBusiness","type":"uint256"},{"internalType":"uint256","name":"Investment","type":"uint256"},{"internalType":"uint8","name":"RankId","type":"uint8"},{"internalType":"uint256[]","name":"DirectIds","type":"uint256[]"},{"internalType":"uint256","name":"ROIDividend","type":"uint256"},{"internalType":"uint256[]","name":"LevelDividend","type":"uint256[]"},{"internalType":"uint256","name":"DividendWithdrawn","type":"uint256"},{"internalType":"uint256","name":"ROIDistributionId_Start","type":"uint256"},{"internalType":"uint256","name":"ROIDistributionId_Register","type":"uint256"},{"internalType":"uint256","name":"TransactionCount","type":"uint256"},{"internalType":"uint256","name":"LastSellTime","type":"uint256"}],"internalType":"struct Fakhama.User","name":"UserInfo","type":"tuple"},{"internalType":"string","name":"CurrentRankName","type":"string"},{"internalType":"string","name":"NextRankName","type":"string"},{"internalType":"uint256","name":"RequiredBusinessForNextRank","type":"uint256"},{"internalType":"uint256","name":"CoinRate","type":"uint256"},{"internalType":"uint256","name":"CoinsHolding","type":"uint256"},{"internalType":"uint256","name":"CurrentRankId","type":"uint256"},{"internalType":"uint256","name":"TotalLevelDividend","type":"uint256"},{"internalType":"uint256","name":"TotalROIDividend","type":"uint256"}],"internalType":"struct Fakhama.UserInfo[]","name":"Directs","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"memberId","type":"uint256"}],"name":"getMemberLevelDividend","outputs":[{"components":[{"internalType":"uint256","name":"MemberCount","type":"uint256"},{"internalType":"uint256","name":"Investment","type":"uint256"}],"internalType":"struct Fakhama.UserLevelInfo[]","name":"LevelInfo","type":"tuple[]"},{"internalType":"uint256[]","name":"Percentage","type":"uint256[]"},{"internalType":"uint256[]","name":"LevelIncome","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"memberId","type":"uint256"},{"internalType":"uint256","name":"cnt","type":"uint256"}],"name":"getMemberROIDividendInfo","outputs":[{"components":[{"internalType":"uint256","name":"DistributionId","type":"uint256"},{"internalType":"uint256","name":"OnMemberId","type":"uint256"},{"internalType":"address","name":"OnMemberAddress","type":"address"},{"internalType":"uint256","name":"OnAmount","type":"uint256"},{"internalType":"uint256","name":"DistributionAmount","type":"uint256"},{"internalType":"uint256","name":"Rate","type":"uint256"},{"internalType":"string","name":"Type","type":"string"},{"internalType":"uint256","name":"TotalSupply","type":"uint256"},{"internalType":"uint256","name":"ROIAmount","type":"uint256"}],"internalType":"struct Fakhama.UserROIDistributionInfo[]","name":"ROIRecords","type":"tuple[]"},{"internalType":"uint256","name":"ArchivedROI","type":"uint256"},{"internalType":"bool","name":"IsArchiveNeeded","type":"bool"},{"internalType":"uint256","name":"StartId","type":"uint256"},{"internalType":"uint256","name":"RecordsLimit","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"memberId","type":"uint256"}],"name":"getMemberTotalLevelDividend","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_days","type":"uint256"},{"internalType":"uint256","name":"_cnt","type":"uint256"}],"name":"getRateHistory","outputs":[{"components":[{"internalType":"uint256","name":"Rate","type":"uint256"},{"internalType":"uint256","name":"Timestamp","type":"uint256"}],"internalType":"struct Fakhama.CoinRateHistory[]","name":"history","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"memberId","type":"uint256"}],"name":"getUserBalanceDividend","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"memberId","type":"uint256"}],"name":"getUserInfo","outputs":[{"components":[{"components":[{"internalType":"uint256","name":"Id","type":"uint256"},{"internalType":"address","name":"Address","type":"address"},{"internalType":"uint256","name":"SponsorId","type":"uint256"},{"internalType":"uint256","name":"Business","type":"uint256"},{"internalType":"uint256","name":"NextRankBusiness","type":"uint256"},{"internalType":"uint256","name":"Investment","type":"uint256"},{"internalType":"uint8","name":"RankId","type":"uint8"},{"internalType":"uint256[]","name":"DirectIds","type":"uint256[]"},{"internalType":"uint256","name":"ROIDividend","type":"uint256"},{"internalType":"uint256[]","name":"LevelDividend","type":"uint256[]"},{"internalType":"uint256","name":"DividendWithdrawn","type":"uint256"},{"internalType":"uint256","name":"ROIDistributionId_Start","type":"uint256"},{"internalType":"uint256","name":"ROIDistributionId_Register","type":"uint256"},{"internalType":"uint256","name":"TransactionCount","type":"uint256"},{"internalType":"uint256","name":"LastSellTime","type":"uint256"}],"internalType":"struct Fakhama.User","name":"UserInfo","type":"tuple"},{"internalType":"string","name":"CurrentRankName","type":"string"},{"internalType":"string","name":"NextRankName","type":"string"},{"internalType":"uint256","name":"RequiredBusinessForNextRank","type":"uint256"},{"internalType":"uint256","name":"CoinRate","type":"uint256"},{"internalType":"uint256","name":"CoinsHolding","type":"uint256"},{"internalType":"uint256","name":"CurrentRankId","type":"uint256"},{"internalType":"uint256","name":"TotalLevelDividend","type":"uint256"},{"internalType":"uint256","name":"TotalROIDividend","type":"uint256"}],"internalType":"struct Fakhama.UserInfo","name":"userInfo","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"memberId","type":"uint256"}],"name":"getUserRanks","outputs":[{"components":[{"internalType":"uint256","name":"Id","type":"uint256"},{"internalType":"string","name":"RankName","type":"string"},{"internalType":"uint256","name":"ReqBusiness","type":"uint256"},{"internalType":"uint256","name":"UserBusiness","type":"uint256"},{"internalType":"string","name":"Status","type":"string"}],"internalType":"struct Fakhama.RankInfo[]","name":"rankInfo","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"memberId","type":"uint256"},{"internalType":"uint256","name":"endId","type":"uint256"}],"name":"getUserTotalROIDividend","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"memberId","type":"uint256"}],"name":"getUserTransactions","outputs":[{"components":[{"internalType":"uint256","name":"Amount","type":"uint256"},{"internalType":"uint256","name":"TokenAmount","type":"uint256"},{"internalType":"uint256","name":"Rate","type":"uint256"},{"internalType":"string","name":"Type","type":"string"}],"internalType":"struct Fakhama.Transaction[]","name":"transactions","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"SponsorAddress","type":"address"}],"name":"invest","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"map_CoinRateHistory","outputs":[{"internalType":"uint256","name":"Rate","type":"uint256"},{"internalType":"uint256","name":"Timestamp","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"map_UserIds","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"map_Users","outputs":[{"internalType":"uint256","name":"Id","type":"uint256"},{"internalType":"address","name":"Address","type":"address"},{"internalType":"uint256","name":"SponsorId","type":"uint256"},{"internalType":"uint256","name":"Business","type":"uint256"},{"internalType":"uint256","name":"NextRankBusiness","type":"uint256"},{"internalType":"uint256","name":"Investment","type":"uint256"},{"internalType":"uint8","name":"RankId","type":"uint8"},{"internalType":"uint256","name":"ROIDividend","type":"uint256"},{"internalType":"uint256","name":"DividendWithdrawn","type":"uint256"},{"internalType":"uint256","name":"ROIDistributionId_Start","type":"uint256"},{"internalType":"uint256","name":"ROIDistributionId_Register","type":"uint256"},{"internalType":"uint256","name":"TransactionCount","type":"uint256"},{"internalType":"uint256","name":"LastSellTime","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"map_ranks","outputs":[{"internalType":"uint256","name":"Id","type":"uint256"},{"internalType":"string","name":"Name","type":"string"},{"internalType":"uint256","name":"Business","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"newInvestment","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenAmount","type":"uint256"}],"name":"tokensToMatic","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"updateROIRecordsLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdrawDividend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenAmount","type":"uint256"}],"name":"withdrawHolding","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526000600e556003600f556305f5e10060105560006011556001601255614e20601355600060145560016015553480156200003d57600080fd5b5060408051808201909152600c81526b5072697a6d6120546573743160a01b6020820152600b9062000070908262000e5a565b50604080518082019091526004815263282926ad60e11b6020820152600c906200009b908262000e5a565b506103847fabd6e7cb50984ff9c2f3e18a2660c3353dadf4e3291deeb275dae2cd1e44fe0581905561012c7f91da3fd0782e51c6b3986e9e672fd566868e71f3dbc2d6c2cd6fbb3e361af2a78190557f2e174c10e159ea99b867ce3205125c24a42d128804e4070ed6fcc8cc98166aa05560c87f1a1e6821cde7d0159c0d293177871e09677b4e42307c7db3ba94f8648a5a050f8190557f04cde762ef08b6b6c5ded8e8c4c0b3f4e5c9ad7342c88fcc93681b4588b73f055560af7fc59312466997bb42aaaf719ece141047820e6b34531e1670dc1852a453648f0f8190557fbeb3bad75134cb432e5707980e3245c52c5998a1125ee30f2f0dbf3925b1e5515560967f2645749a946633740611cfc8178319f0958659d6922e4bf7e3a08b44789f53a48190557f4ad5a04d53b5856f318545bb721f67d3f6d0a5a999f25eec7e20eaeb4c47b9338190557f5c6b02db8b672415ffad906d7ccee10bd53dbad7d0b29e2bc0e50c93d5f31093557f1471eb6eb2c5e789fc3de43f8ce62938c7d1836ec861730447e2ada8fd81017b556104b07f89832631fb3c3307a103ba2c84ab569c64d6182a18893dcd163f0f1c2090733a556105dc7fa9bc9a3a348c357ba16b37005d7e6b3236198c0e939f4af8c5f19b8deeb8ebc0556106a47f3eec716f11ba9e820c81ca75eb978ffb45831ef8b7a53e5e422c26008e1ca6d55561076c7f458b30c2d72bfd2c6317304a4594ecbafe5f729d3111b65fdc3a33bd48e5432d5561081b7f069400f22b28c6c362558d92f66163cec5671cba50b61abd2eecfcd0eaeac518556108ca7feddb6698d7c569ff62ff64f1f1492bf14a54594835ba0faac91f84b4f5d81460556109607ffb33122aa9f93cc639ebe80a7bc4784c11e6053dde89c6f4f7e268c6a623da1e556109f67fc0a4a8be475dfebc377ebef2d7c4ff47656f572a08dd92b81017efcdba0febe155610a8c7fa18b128af1c8fc61ff46f02d146e54546f34d340574cf2cef6a753cba6b6701d55600d80546001600160a01b03191633179055604080516060810182526001808252825180840184526003808252622217a960e91b60208381019190915284810192835260009585018690529290945292905280517fa15bc60c955c405d20d9149c709e2460f1c2d9a497496a7f46004d1772c3054c90815591519091907fa15bc60c955c405d20d9149c709e2460f1c2d9a497496a7f46004d1772c3054d9062000422908262000e5a565b5060409182015160029182015581516060810183528181528251808401845260038082526246433160e81b6020838101919091528084019283526005958401959095526000939093529190925281517fc3a24b0501bd2c13a7e57f2db4369ec4c223447539fc0724a9d55ac4a06ebd4d90815590517fc3a24b0501bd2c13a7e57f2db4369ec4c223447539fc0724a9d55ac4a06ebd4e90620004c5908262000e5a565b5060409182015160029091015580516060810182526003808252825180840184528181526223219960e91b602082810191909152808401918252600a948401949094526000829052925280517fcbc4e5fb02c3d1de23a9f1e014b4d2ee5aeaea9505df5e855c9210bf472495af90815591519091907fcbc4e5fb02c3d1de23a9f1e014b4d2ee5aeaea9505df5e855c9210bf472495b09062000568908262000e5a565b50604091820151600290910155805160608101825260048082528251808401845260038082526246433360e81b602083810191909152808501928352600f95850195909552600092909252925280517f83ec6a1f0257b830b5e016457c9cf1435391bf56cc98f369a58a54fe9377246590815591519091907f83ec6a1f0257b830b5e016457c9cf1435391bf56cc98f369a58a54fe93772466906200060e908262000e5a565b5060409182015160029091015580516060810182526005808252825180840184526003808252621190cd60ea1b602083810191909152808501928352601495850195909552600092909252925280517f405aad32e1adbac89bb7f176e338b8fc6e994ca210c9bb7bdca249b46594225090815591519091907f405aad32e1adbac89bb7f176e338b8fc6e994ca210c9bb7bdca249b46594225190620006b4908262000e5a565b50604091820151600290910155805160608101825260068082528251808401845260038082526246433560e81b602083810191909152808501928352601995850195909552600092909252925280517fc69056f16cbaa3c616b828e333ab7d3a32310765507f8f58359e99ebb7a885f390815591519091907fc69056f16cbaa3c616b828e333ab7d3a32310765507f8f58359e99ebb7a885f4906200075a908262000e5a565b50604091820151600290910155805160608101825260078082528251808401845260038082526223219b60e91b602083810191909152808501928352601e95850195909552600092909252925280517ff2c49132ed1cee2a7e75bde50d332a2f81f1d01e5456d8a19d1df09bd561dbd290815591519091907ff2c49132ed1cee2a7e75bde50d332a2f81f1d01e5456d8a19d1df09bd561dbd39062000800908262000e5a565b50604091820151600290910155805160608101825260088082528251808401845260038082526246433760e81b602083810191909152808501928352602395850195909552600092909252925280517f85aaa47b6dc46495bb8824fad4583769726fea36efd831a35556690b830a8fbe90815591519091907f85aaa47b6dc46495bb8824fad4583769726fea36efd831a35556690b830a8fbf90620008a6908262000e5a565b50604091820151600290910155805160608101825260098082528251808401845260038082526208c86760eb1b602083810191909152808501928352602895850195909552600092909252925280517f8a8dc4e5242ea8b1ab1d60606dae757e6c2cca9f92a2cced9f72c19960bcb45890815591519091907f8a8dc4e5242ea8b1ab1d60606dae757e6c2cca9f92a2cced9f72c19960bcb459906200094c908262000e5a565b506040918201516002909101558051606081018252600a8082528251808401845260038082526246433960e81b602083810191909152808501928352602d95850195909552600092909252925280517f9dcb9783ba5cd0b54745f65f4f918525e461e91888c334e5342cb380ac558d5390815591519091907f9dcb9783ba5cd0b54745f65f4f918525e461e91888c334e5342cb380ac558d5490620009f2908262000e5a565b50604082015181600201559050506000600e54600162000a13919062000f3c565b604080516101e08101825282815273ba9c6a2f87c2c28f7c64b457b9145a57b3f0c38960208201526000918101829052606081018290526080810182905260a08101829052600160c08201529192509060e081018260405190808252806020026020018201604052801562000a92578160200160208202803683370190505b5081526000602082015260408051600a808252610160820183529190920191908160200160208202803683375050508152600060208083018290526012546040808501829052606080860192909252608080860185905260a0958601859052888552600180855294829020875181558785015195810180546001600160a01b0319166001600160a01b0390971696909617909555908601516002850155908501516003840155840151600483015591830151600582015560c083015160068201805460ff191660ff90921691909117905560e083015180519394508493919262000b859260078501929091019062000d4e565b506101008201516008820155610120820151805162000baf91600984019160209091019062000d4e565b50610140820151600a820155610160820151600b820155610180820151600c8201556101a0820151600d8201556101c090910151600e9182015573ba9c6a2f87c2c28f7c64b457b9145a57b3f0c389600090815260026020527fc96e268c0b1791f507d7ae514fc3e3d13d94506872eec7f5ca0e242e076a7b5a8490558154919062000c3b8362000f57565b91905055506000604051806040016040528062000c5d62000ca760201b60201c565b8152426020918201526015805460009081526009835260408120845181559284015160019093019290925580549293509062000c998362000f57565b919050555050505062000fb8565b600069152d02c7e14af6800000601154101562000d0e57620186a0601154600962000cd3919062000f73565b62000cdf919062000f95565b62000cf390670de0b6b3a764000062000f3c565b62000d099069021e19e0c9bab240000062000f95565b905090565b670de0b6b3a7640000601154101562000d28575060105490565b60115460105462000d4290670de0b6b3a764000062000f73565b62000d09919062000f95565b82805482825590600052602060002090810192821562000d8c579160200282015b8281111562000d8c57825182559160200191906001019062000d6f565b5062000d9a92915062000d9e565b5090565b5b8082111562000d9a576000815560010162000d9f565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168062000de057607f821691505b60208210810362000e0157634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111562000e5557600081815260208120601f850160051c8101602086101562000e305750805b601f850160051c820191505b8181101562000e515782815560010162000e3c565b5050505b505050565b81516001600160401b0381111562000e765762000e7662000db5565b62000e8e8162000e87845462000dcb565b8462000e07565b602080601f83116001811462000ec6576000841562000ead5750858301515b600019600386901b1c1916600185901b17855562000e51565b600085815260208120601f198616915b8281101562000ef75788860151825594840194600190910190840162000ed6565b508582101562000f165787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b6000821982111562000f525762000f5262000f26565b500190565b60006001820162000f6c5762000f6c62000f26565b5060010190565b600081600019048311821515161562000f905762000f9062000f26565b500290565b60008262000fb357634e487b7160e01b600052601260045260246000fd5b500490565b613c9d8062000fc86000396000f3fe6080604052600436106101e55760003560e01c80639140f96811610101578063c25acf151161009a578063e3f7146b1161006c578063e3f7146b146106ea578063e969c49414610717578063ecb4105414610744578063ee06fa391461078c578063f571545b146107a257005b8063c25acf1514610668578063d379dadf14610688578063d4d6e96e146106b5578063d6567998146106ca57005b8063a6669b9b116100d3578063a6669b9b146105db578063a7a2f47e14610608578063b85c740914610628578063be3b571f1461064857005b80639140f9681461058057806395d89b41146105885780639d1727701461059d578063a5ece941146105b357005b80634df49ca01161017e578063695dd0f511610150578063695dd0f5146103cf5780636d13f5a7146104ca57806370a08231146104ea57806383b2fbea146105205780638da5cb5b1461054057005b80634df49ca01461033d5780634eadbc85146103535780635d9bd8b214610382578063670829cf146103a257005b80632929f7df116101b75780632929f7df1461027a578063313ce567146102ab57806339ab5249146102c75780633ccc9860146102f457005b806303f9c793146101ee57806306fdde031461020157806309be84681461022c57806318160ddd1461025b57005b366101ec57005b005b6101ec6101fc3660046133a6565b6107b7565b34801561020d57600080fd5b506102166107c3565b6040516102239190613423565b60405180910390f35b34801561023857600080fd5b5061024c610247366004613436565b610855565b6040516102239392919061344f565b34801561026757600080fd5b50600a545b604051908152602001610223565b34801561028657600080fd5b5061029a610295366004613478565b610900565b60405161022395949392919061349a565b3480156102b757600080fd5b5060405160008152602001610223565b3480156102d357600080fd5b506102e76102e2366004613436565b610cbf565b604051610223919061358c565b34801561030057600080fd5b5061032861030f366004613436565b6009602052600090815260409020805460019091015482565b60408051928352602083019190915201610223565b34801561034957600080fd5b5061026c60115481565b34801561035f57600080fd5b5061037361036e366004613436565b610f65565b6040516102239392919061366e565b34801561038e57600080fd5b506101ec61039d366004613436565b611110565b3480156103ae57600080fd5b506103c26103bd366004613436565b6113b6565b6040516102239190613866565b3480156103db57600080fd5b5061045e6103ea366004613436565b6001602081905260009182526040909120805491810154600282015460038301546004840154600585015460068601546008870154600a880154600b890154600c8a0154600d8b0154600e909b01546001600160a01b03909a169a989997989697959660ff9095169593949293919290918d565b604080519d8e526001600160a01b03909c1660208e01529a8c019990995260608b019790975260808a019590955260a089019390935260ff90911660c088015260e08701526101008601526101208501526101408401526101608301526101808201526101a001610223565b3480156104d657600080fd5b5061026c6104e5366004613478565b6114d3565b3480156104f657600080fd5b5061026c6105053660046133a6565b6001600160a01b031660009081526020819052604090205490565b34801561052c57600080fd5b506101ec61053b366004613478565b611614565b34801561054c57600080fd5b5061056873ba9c6a2f87c2c28f7c64b457b9145a57b3f0c38981565b6040516001600160a01b039091168152602001610223565b6101ec6117b6565b34801561059457600080fd5b506102166118a0565b3480156105a957600080fd5b5061026c60145481565b3480156105bf57600080fd5b50610568737be81ee18269e8cebd26fe561f681d4c09b5a6a081565b3480156105e757600080fd5b506105fb6105f6366004613478565b6118af565b60405161022391906138c8565b34801561061457600080fd5b5061026c610623366004613436565b611a6f565b34801561063457600080fd5b5061026c610643366004613436565b611b1f565b34801561065457600080fd5b506101ec610663366004613436565b611b6e565b34801561067457600080fd5b5061026c610683366004613436565b611b93565b34801561069457600080fd5b506106a86106a3366004613436565b611bce565b604051610223919061391f565b3480156106c157600080fd5b5061026c611f74565b3480156106d657600080fd5b506101ec6106e5366004613436565b611f7f565b3480156106f657600080fd5b5061026c6107053660046133a6565b60026020526000908152604090205481565b34801561072357600080fd5b50610737610732366004613436565b612352565b6040516102239190613932565b34801561075057600080fd5b5061077c61075f3660046133a6565b6001600160a01b0316600090815260026020526040902054151590565b6040519015158152602001610223565b34801561079857600080fd5b5061026c60155481565b3480156107ae57600080fd5b5061026c61250b565b6107c0816125a4565b50565b6060600b80546107d2906139af565b80601f01602080910402602001604051908101604052809291908181526020018280546107fe906139af565b801561084b5780601f106108205761010080835404028352916020019161084b565b820191906000526020600020905b81548152906001019060200180831161082e57829003601f168201915b5050505050905090565b60036020526000908152604090208054600182018054919291610877906139af565b80601f01602080910402602001604051908101604052809291908181526020018280546108a3906139af565b80156108f05780601f106108c5576101008083540402835291602001916108f0565b820191906000526020600020905b8154815290600101906020018083116108d357829003601f168201915b5050505050908060020154905083565b6000828152600160205260408120600b015460609190819081908190600a87101561092a57600a96505b6000888152600160208181526040808420909201546001600160a01b031683528290528120549061095b89846139ff565b90506012546013548461096e91906139ff565b111561097b57600061097e565b60015b955060125481111561099257601254610994565b805b90506013548111156109a8576013546109aa565b805b905060006109b88483613a17565b67ffffffffffffffff8111156109d0576109d0613a2e565b604051908082528060200260200182016040528015610a5957816020015b610a46604051806101200160405280600081526020016000815260200160006001600160a01b031681526020016000815260200160008152602001600081526020016060815260200160008152602001600081525090565b8152602001906001900390816109ee5790505b509050600082610a6881613a44565b9350505b848310610c93576000838152600760205260409020600101548c14801590610aa4575060008381526007602052604090206001015415155b15610c81576000600760008581526020019081526020016000206040518060e00160405290816000820154815260200160018201548152602001600282015481526020016003820154815260200160048201548152602001600582018054610b0b906139af565b80601f0160208091040260200160405190810160405280929190818152602001828054610b37906139af565b8015610b845780601f10610b5957610100808354040283529160200191610b84565b820191906000526020600020905b815481529060010190602001808311610b6757829003601f168201915b50505091835250506006919091015460209182015260008681526007909152604081206004015491925090610bb99087613a5b565b905060006040518061012001604052808460000151815260200184602001518152602001600160008660200151815260200190815260200160002060010160009054906101000a90046001600160a01b03166001600160a01b031681526020018460400151815260200184606001518152602001846080015181526020018460a0015181526020018460c00151815260200183815250905080858581518110610c6457610c64613a7a565b60200260200101819052508380610c7a90613a90565b9450505050505b82610c8b81613a44565b935050610a6c565b5060009a8b5260016020526040909a20600801546013549a9b909a969950929750949550909350505050565b60008181526001602052604080822060068101546003909101548251600a808252610160820190945260609460ff90931693919291816020015b610d2b6040518060a0016040528060008152602001606081526020016000815260200160008152602001606081525090565b815260200190600190039081610cf957905050905060015b600a8111610f5c5760006003600083815260200190815260200160002060405180606001604052908160008201548152602001600182018054610d85906139af565b80601f0160208091040260200160405190810160405280929190818152602001828054610db1906139af565b8015610dfe5780601f10610dd357610100808354040283529160200191610dfe565b820191906000526020600020905b815481529060010190602001808311610de157829003601f168201915b50505050508152602001600282015481525050905060006040518060a0016040528084815260200183602001518152602001836040015181526020018360400151670de0b6b3a7640000610e529190613a5b565b8711610e5e5786610e75565b6040840151610e7590670de0b6b3a7640000613a5b565b815260200184881015610eb0576040518060400160405280601081526020016f139bdd081e595d081858da1a595d995960821b815250610ed2565b604051806040016040528060088152602001671058da1a595d995960c21b8152505b905290508084610ee3600186613a17565b81518110610ef357610ef3613a7a565b60200260200101819052508160400151670de0b6b3a7640000610f169190613a5b565b851015610f24576000610f45565b6040820151610f3b90670de0b6b3a7640000613a5b565b610f459086613a17565b945050508080610f5490613a90565b915050610d43565b50949350505050565b60408051600a80825261016082019092526060918291829160009190816020015b6040805180820190915260008082526020820152815260200190600190039081610f8657505060408051600a808252610160820190925291925060009190602082016101408036833701905050905060015b600a8160ff161161109657600087815260066020908152604080832060ff851684528252918290208251808401909352805483526001908101549183019190915284906110259084613aa9565b60ff168151811061103857611038613a7a565b60209081029190910181019190915260ff821660009081526004909152604090205482611066600184613aa9565b60ff168151811061107957611079613a7a565b60209081029190910101528061108e81613acc565b915050610fd8565b50818160016000898152602001908152602001600020600901808054806020026020016040519081016040528092919081815260200182805480156110fa57602002820191906000526020600020905b8154815260200190600101908083116110e6575b5050505050905094509450945050509193909250565b336000908152600260205260408120549061112a82611b93565b9050600082116111555760405162461bcd60e51b815260040161114c90613aeb565b60405180910390fd5b828110156111b05760405162461bcd60e51b815260206004820152602260248201527f496e73756666696369656e74206469766964656e6420746f2077697468647261604482015261772160f01b606482015260840161114c565b6111bc82601254611614565b600060646111cb85600a613a5b565b6111d59190613b12565b905060006111e38286613a17565b90508460016000868152602001908152602001600020600a01600082825461120b91906139ff565b909155505060408051608081018252868152600060208083018290528284018290528351808501855260128152712234bb34b232b732102bb4ba34323930bbb760711b81830152606084015287825260088152838220600191829052938220600d01549293849390929161127f91906139ff565b81526020808201929092526040908101600020835181559183015160018301558201516002820155606082015160038201906112bb9082613b82565b5050506000858152600160205260408120600d018054916112db83613a90565b909155506000905060646112f088600a613a5b565b6112fa9190613b12565b905061132a8688836040518060400160405280600a81526020016915da5d1a191c985dd85b60b21b81525061292d565b604051339084156108fc029085906000818181858888f19350505050158015611357573d6000803e3d6000fd5b506000604051806040016040528061136d61250b565b815242602091820152601580546000908152600983526040812084518155928401516001909301929092558054929350906113a783613a90565b91905055505050505050505050565b600081815260016020908152604080832060070180548251818502810185019093528083526060949383018282801561140e57602002820191906000526020600020905b8154815260200190600101908083116113fa575b505050505090506000815167ffffffffffffffff81111561143157611431613a2e565b60405190808252806020026020018201604052801561146a57816020015b611457613277565b81526020019060019003908161144f5790505b50905060005b82518110156114cb5761149b83828151811061148e5761148e613a7a565b6020026020010151611bce565b8282815181106114ad576114ad613a7a565b602002602001018190525080806114c390613a90565b915050611470565b509392505050565b60008281526001602052604081206008810154600b909101546012548411156114fe57601254611500565b835b93506013548161151091906139ff565b8411156115855760405162461bcd60e51b815260206004820152603c60248201527f546f6f206d616e792063616c63756c6174696f6e732120506c6561736520747260448201527f7920746f206172636869766520796f757220504f492066697273742e00000000606482015260840161114c565b6000858152600160208181526040808420909201546001600160a01b031683528290529020545b8482101561160a5760008281526007602052604090206001015486146115f8576000828152600760205260408120600401546115e89083613a5b565b90506115f481856139ff565b9350505b8161160281613a90565b9250506115ac565b5090949350505050565b6000828152600160205260409020600b01546012548211156116385760125461163a565b815b91506116478160646139ff565b82111561165e576116598160646139ff565b611660565b815b6000848152600160208181526040808420909201546001600160a01b031683528290529020549092505b8282101561174a57600e546001036116d557600082815260076020908152604080832060030154878452600190925282206008018054919290916116cf9084906139ff565b90915550505b6000828152600760205260409020600101548414611738576000828152600760205260408120600401546117099083613a5b565b90508060016000878152602001908152602001600020600801600082825461173191906139ff565b9091555050505b8161174281613a90565b92505061168a565b600084815260016020526040808220600b0185905580518082019091528061177061250b565b815242602091820152601580546000908152600983526040812084518155928401516001909301929092558054929350906117aa83613a90565b91905055505050505050565b336000818152600260205260409020546117e25760405162461bcd60e51b815260040161114c90613aeb565b600034116118245760405162461bcd60e51b815260206004820152600f60248201526e496e76616c696420616d6f756e742160881b604482015260640161114c565b674563918244f4000034101561187c5760405162461bcd60e51b815260206004820152601b60248201527f4d696e696d756d20696e7665737420616d6f756e742069732035210000000000604482015260640161114c565b6001600160a01b0381166000908152600260205260408120546107c09134906129f0565b6060600c80546107d2906139af565b606060006118be846018613a5b565b6118c990603c613a5b565b6118d490603c613a5b565b6118de9042613a17565b905060008060016015546118f29190613a17565b90505b60018110611935576000818152600960205260409020600101548311611923578161191f81613a90565b9250505b8061192d81613a44565b9150506118f5565b506000808511611946576064611948565b845b905060006119568284613b12565b905080156119645780611967565b60015b90508167ffffffffffffffff81111561198257611982613a2e565b6040519080825280602002602001820160405280156119c757816020015b60408051808201909152600080825260208201528152602001906001900390816119a05790505b50945060008060016015546119dc9190613a17565b90505b828110611a63576000818152600960205260409020600101548611611a525760008181526009602090815260409182902082518084019093528054835260010154908201528751889084908110611a3857611a38613a7a565b60200260200101819052508180611a4e90613a90565b9250505b611a5c8382613a17565b90506119df565b50505050505092915050565b6000818152600160209081526040808320600901805482518185028101850190935280835284938493929190830182828015611aca57602002820191906000526020600020905b815481526020019060010190808311611ab6575b5050505050905060005b8151811015611b1657818181518110611aef57611aef613a7a565b602002602001015183611b0291906139ff565b925080611b0e81613a90565b915050611ad4565b50909392505050565b600073ba9c6a2f87c2c28f7c64b457b9145a57b3f0c388193301611b44575047919050565b611b4c611f74565b611b5e83670de0b6b3a7640000613a5b565b611b689190613b12565b92915050565b3373ba9c6a2f87c2c28f7c64b457b9145a57b3f0c38914611b8e57600080fd5b601355565b6000818152600160205260408120600a0154611bae83611a6f565b611bba846012546114d3565b611bc491906139ff565b611b689190613a17565b611bd6613277565b600082815260016020818152604080842081516101e08101835281548152938101546001600160a01b0316848401526002810154848301526003810154606085015260048101546080850152600581015460a0850152600681015460ff1660c0850152600781018054835181860281018601909452808452919360e08601939290830182828015611c8657602002820191906000526020600020905b815481526020019060010190808311611c72575b505050505081526020016008820154815260200160098201805480602002602001604051908101604052809291908181526020018280548015611ce857602002820191906000526020600020905b815481526020019060010190808311611cd4575b50505050508152602001600a8201548152602001600b8201548152602001600c8201548152602001600d8201548152602001600e8201548152505090506000600360008360c0015160ff1681526020019081526020016000206001018054611d4f906139af565b80601f0160208091040260200160405190810160405280929190818152602001828054611d7b906139af565b8015611dc85780601f10611d9d57610100808354040283529160200191611dc8565b820191906000526020600020905b815481529060010190602001808311611dab57829003601f168201915b50505050509050600060048360c0015160ff1610611df55760405180602001604052806000815250611ea8565b600360008460c001516001611e0a9190613c42565b60ff1681526020019081526020016000206001018054611e29906139af565b80601f0160208091040260200160405190810160405280929190818152602001828054611e55906139af565b8015611ea25780601f10611e7757610100808354040283529160200191611ea2565b820191906000526020600020905b815481529060010190602001808311611e8557829003601f168201915b50505050505b90506000600360008560c001516001611ec19190613c42565b60ff1681526020019081526020016000206002015490506000611ee2611f74565b6020808701516001600160a01b03166000908152908190526040812054919250611f0b89611a6f565b90506000611f1b8a6012546114d3565b60408051610120810182528a81526020810199909952880196909652506060860193909352608085019190915260a084015260c09384015160ff169383019390935260e082019290925261010081019190915292915050565b600080611b6861250b565b3360009081526002602052604090205480611fac5760405162461bcd60e51b815260040161114c90613aeb565b6000818152600160205260408120600e0154611fc89042613a17565b90506201518081101561201d5760405162461bcd60e51b815260206004820152601f60248201527f596f752063616e207769746864726177206f6e636520696e2061206461792100604482015260640161114c565b3360009081526020819052604090205483111561207c5760405162461bcd60e51b815260206004820152601b60248201527f496e73756666696369656e7420746f6b656e2062616c616e6365210000000000604482015260640161114c565b600061208784611b1f565b9050804710156120d95760405162461bcd60e51b815260206004820152601e60248201527f496e73756666696369656e742066756e6420696e20636f6e7472616374210000604482015260640161114c565b33600090815260208190526040902054600a906064906120fa906005613a5b565b6121049190613b12565b8511801561213957503360009081526020819052604090205460649061212b906019613a5b565b6121359190613b12565b8511155b1561214657506032612179565b33600090815260208190526040902054606490612164906019613a5b565b61216e9190613b12565b851115612179575060505b600060646121878385613a5b565b6121919190613b12565b9050600061219f8285613a17565b9050600060405180608001604052808681526020018981526020016121c2611f74565b8152604080518082018252600a81526929b2b636102a37b5b2b760b11b6020828101919091529283015260008a815260088352818120600193849052918120600d0154939450849391929091612217916139ff565b81526020808201929092526040908101600020835181559183015160018301558201516002820155606082015160038201906122539082613b82565b5050506000878152600160205260408120600d0180549161227383613a90565b9091555050600087815260016020526040902042600e9091015560125461229b908890611614565b6122a53389612fce565b84601154106122cb5784601160008282546122c09190613a17565b909155506122d19050565b60016011555b604051339083156108fc029084906000818181858888f193505050501580156122fe573d6000803e3d6000fd5b5082156123485760405173ba9c6a2f87c2c28f7c64b457b9145a57b3f0c3899084156108fc029085906000818181858888f19350505050158015612346573d6000803e3d6000fd5b505b5050505050505050565b6000818152600160205260409020600d01546060908067ffffffffffffffff81111561238057612380613a2e565b6040519080825280602002602001820160405280156123dc57816020015b6123c96040518060800160405280600081526020016000815260200160008152602001606081525090565b81526020019060019003908161239e5790505b50915060015b81811161250457600860008581526020019081526020016000206000828152602001908152602001600020604051806080016040529081600082015481526020016001820154815260200160028201548152602001600382018054612446906139af565b80601f0160208091040260200160405190810160405280929190818152602001828054612472906139af565b80156124bf5780601f10612494576101008083540402835291602001916124bf565b820191906000526020600020905b8154815290600101906020018083116124a257829003601f168201915b505050505081525050836001836124d69190613a17565b815181106124e6576124e6613a7a565b602002602001018190525080806124fc90613a90565b9150506123e2565b5050919050565b600069152d02c7e14af6800000601154101561256957620186a060115460096125349190613a5b565b61253e9190613b12565b61255090670de0b6b3a76400006139ff565b6125649069021e19e0c9bab2400000613b12565b905090565b670de0b6b3a76400006011541015612582575060105490565b60115460105461259a90670de0b6b3a7640000613a5b565b6125649190613b12565b33346125e45760405162461bcd60e51b815260206004820152600f60248201526e496e76616c696420616d6f756e742160881b604482015260640161114c565b674563918244f4000034101561263c5760405162461bcd60e51b815260206004820152601b60248201527f4d696e696d756d20696e7665737420616d6f756e742069732035210000000000604482015260640161114c565b6001600160a01b038116600090815260026020526040902054612921576001600160a01b0382166000908152600260205260409020546126b15760405162461bcd60e51b815260206004820152601060248201526f496e76616c69642073706f6e736f722160801b604482015260640161114c565b6001600160a01b038216600090815260026020526040812054600e549091906126db9060016139ff565b90506000604051806101e00160405280838152602001856001600160a01b03168152602001848152602001600081526020016000815260200160008152602001600160ff168152602001600067ffffffffffffffff81111561273f5761273f613a2e565b604051908082528060200260200182016040528015612768578160200160208202803683370190505b5081526000602082015260408051600a808252610160820183529190920191908160200160208202803683375050508152600060208083018290526012546040808501829052606080860192909252608080860185905260a0958601859052888552600180855294829020875181558785015195810180546001600160a01b0319166001600160a01b0390971696909617909555908601516002850155908501516003840155840151600483015591830151600582015560c083015160068201805460ff191660ff90921691909117905560e083015180519394508493919261285992600785019290910190613346565b5061010082015160088201556101208201518051612881916009840191602090910190613346565b50610140820151600a820155610160820151600b820155610180820151600c8201556101a0820151600d8201556101c090910151600e918201556001600160a01b0385166000908152600260205260408120849055815491906128e383613a90565b90915550506000838152600160208181526040832060070180548084018255908452922090910183905561291a90839034906129f0565b5050505050565b6129296117b6565b5050565b600a546000901561294857600a546129459084613b12565b90505b6040805160e0810182526012548082526020808301898152838501898152606085018981526080860188815260a087018a8152600a5460c089015260009687526007909552969094208551815591516001830155516002820155915160038301559251600482015591519091829160058201906129c59082613b82565b5060c09190910151600690910155601280549060006129e383613a90565b9190505550505050505050565b60006129fa61250b565b9050600068056bc75e2d6310000082612a1486603c613a5b565b612a1e9190613a5b565b612a289190613b12565b905083600160008781526020019081526020016000206005016000828254612a5091906139ff565b92505081905550612a6385601254611614565b604080516080810182528581526020808201849052818301859052825180840184526009815268213abc902a37b5b2b760b91b818301526060830152600088815260088252838120600192839052938120600d0154929384939092612ac891906139ff565b8152602080820192909252604090810160002083518155918301516001830155820151600282015560608201516003820190612b049082613b82565b5050506000868152600160205260408120600d01805491612b2483613a90565b91905055508460146000828254612b3b91906139ff565b90915550506000868152600160208190526040909120600201545b8015612e105760008181526001602052604081206003018054899290612b7d9084906139ff565b909155505060008181526001602052604081206004018054899290612ba39084906139ff565b9091555050600160ff83161115612be957600081815260066020908152604080832060ff8616845290915281206001018054899290612be39084906139ff565b90915550505b8515612c1d57600081815260066020908152604080832060ff861684529091528120805491612c1783613a90565b91905055505b600a8260ff1611612de35760008181526001602052604081206006015460ff808516911610612d755760ff831660009081526004602052604090205461271090612c67908a613a5b565b612c719190613b12565b90508260ff16600103612d1a5760008281526001602090815260408083206006015460ff1680845260059092529091205461271090612cb0908b613a5b565b612cba9190613b12565b91508160016000858152602001908152602001600020600901600186612ce09190613aa9565b60ff1681548110612cf357612cf3613a7a565b906000526020600020016000828254612d0c91906139ff565b90915550909350612de19050565b8060016000848152602001908152602001600020600901600185612d3e9190613aa9565b60ff1681548110612d5157612d51613a7a565b906000526020600020016000828254612d6a91906139ff565b90915550612de19050565b60016000819052602081905281907fcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688793890612daf9086613aa9565b60ff1681548110612dc257612dc2613a7a565b906000526020600020016000828254612ddb91906139ff565b90915550505b505b612dec81613136565b60009081526001602052604090206002015481612e0881613acc565b925050612b56565b600a8260ff1611612ec85760ff821660009081526004602052604081205461271090612e3c908a613a5b565b612e469190613b12565b60016000819052602081905290915081907fcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688793890612e839086613aa9565b60ff1681548110612e9657612e96613a7a565b906000526020600020016000828254612eaf91906139ff565b90915550839050612ebf81613acc565b93505050612e10565b612f0988886064612eda82600a613a5b565b612ee49190613b12565b6040518060400160405280600781526020016611195c1bdcda5d60ca1b81525061292d565b600e54600103612f1f57612f1f88601254611614565b60008881526001602081905260409091200154612f45906001600160a01b0316856131d9565b6064612f5288603c613a5b565b612f5c9190613b12565b60116000828254612f6d91906139ff565b9091555050600f54737be81ee18269e8cebd26fe561f681d4c09b5a6a0906108fc90606490612f9c908b613a5b565b612fa69190613b12565b6040518115909202916000818181858888f19350505050158015612346573d6000803e3d6000fd5b6001600160a01b03821661302e5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b606482015260840161114c565b6001600160a01b038216600090815260208190526040902054818110156130a25760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b606482015260840161114c565b81600a5410156130f45760405162461bcd60e51b815260206004820152601960248201527f496e76616c696420616d6f756e74206f6620746f6b656e732100000000000000604482015260640161114c565b6130fe8282613a17565b6001600160a01b038416600090815260208190526040812091909155600a805484929061312c908490613a17565b9091555050505050565b600081815260016020819052604082206006015460ff16919061315a908390613c42565b60ff811660009081526003602052604090206002015490915061318590670de0b6b3a7640000613a5b565b600084815260016020526040902060040154108015906131a85750600a8260ff16105b156131d45760008381526001602052604081206004810191909155600601805460ff191660ff83161790555b505050565b6001600160a01b03821661322f5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640161114c565b80600a600082825461324191906139ff565b90915550506001600160a01b0382166000908152602081905260408120805483929061326e9084906139ff565b90915550505050565b604051806101200160405280613308604051806101e001604052806000815260200160006001600160a01b0316815260200160008152602001600081526020016000815260200160008152602001600060ff16815260200160608152602001600081526020016060815260200160008152602001600081526020016000815260200160008152602001600081525090565b815260200160608152602001606081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b828054828255906000526020600020908101928215613381579160200282015b82811115613381578251825591602001919060010190613366565b5061338d929150613391565b5090565b5b8082111561338d5760008155600101613392565b6000602082840312156133b857600080fd5b81356001600160a01b03811681146133cf57600080fd5b9392505050565b6000815180845260005b818110156133fc576020818501810151868301820152016133e0565b8181111561340e576000602083870101525b50601f01601f19169290920160200192915050565b6020815260006133cf60208301846133d6565b60006020828403121561344857600080fd5b5035919050565b83815260606020820152600061346860608301856133d6565b9050826040830152949350505050565b6000806040838503121561348b57600080fd5b50508035926020909101359150565b600060a080830181845280895180835260c092508286019150828160051b8701016020808d0160005b8481101561355e5760bf198a850301865281516101208151865284820151858701526040808301516134ff828901826001600160a01b03169052565b50506060828101519087015260808083015190870152898201518a87015288820151898701829052613533828801826133d6565b60e08481015190890152610100938401519390970192909252505094820194908201906001016134c3565b505087018b9052891515604088015294506135799350505050565b6060820193909352608001529392505050565b60006020808301818452808551808352604092508286019150828160051b87010184880160005b8381101561362557603f19898403018552815160a08151855288820151818a8701526135e1828701826133d6565b915050878201518886015260608083015181870152506080808301519250858203818701525061361181836133d6565b9689019694505050908601906001016135b3565b509098975050505050505050565b600081518084526020808501945080840160005b8381101561366357815187529582019590820190600101613647565b509495945050505050565b606080825284519082018190526000906020906080840190828801845b828110156136bb576136a884835180518252602090810151910152565b604093909301929084019060010161368b565b505050838103828501526136cf8187613633565b91505082810360408401526136e48185613633565b9695505050505050565b60006101e082518452602083015161371160208601826001600160a01b03169052565b5060408301516040850152606083015160608501526080830151608085015260a083015160a085015260c083015161374e60c086018260ff169052565b5060e08301518160e086015261376682860182613633565b915050610100808401518186015250610120808401518583038287015261378d8382613633565b6101408681015190880152610160808701519088015261018080870151908801526101a080870151908801526101c095860151959096019490945250929392505050565b600061012082518185526137e7828601826136ee565b9150506020830151848203602086015261380182826133d6565b9150506040830151848203604086015261381b82826133d6565b915050606083015160608501526080830151608085015260a083015160a085015260c083015160c085015260e083015160e08501526101008084015181860152508091505092915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156138bb57603f198886030184526138a98583516137d1565b9450928501929085019060010161388d565b5092979650505050505050565b602080825282518282018190526000919060409081850190868401855b828110156139125761390284835180518252602090810151910152565b92840192908501906001016138e5565b5091979650505050505050565b6020815260006133cf60208301846137d1565b60006020808301818452808551808352604092508286019150828160051b87010184880160005b8381101561362557888303603f190185528151805184528781015188850152868101518785015260609081015160809185018290529061399b818601836133d6565b968901969450505090860190600101613959565b600181811c908216806139c357607f821691505b6020821081036139e357634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b60008219821115613a1257613a126139e9565b500190565b600082821015613a2957613a296139e9565b500390565b634e487b7160e01b600052604160045260246000fd5b600081613a5357613a536139e9565b506000190190565b6000816000190483118215151615613a7557613a756139e9565b500290565b634e487b7160e01b600052603260045260246000fd5b600060018201613aa257613aa26139e9565b5060010190565b600060ff821660ff841680821015613ac357613ac36139e9565b90039392505050565b600060ff821660ff8103613ae257613ae26139e9565b60010192915050565b6020808252600d908201526c496e76616c696420757365722160981b604082015260600190565b600082613b2f57634e487b7160e01b600052601260045260246000fd5b500490565b601f8211156131d457600081815260208120601f850160051c81016020861015613b5b5750805b601f850160051c820191505b81811015613b7a57828155600101613b67565b505050505050565b815167ffffffffffffffff811115613b9c57613b9c613a2e565b613bb081613baa84546139af565b84613b34565b602080601f831160018114613be55760008415613bcd5750858301515b600019600386901b1c1916600185901b178555613b7a565b600085815260208120601f198616915b82811015613c1457888601518255948401946001909101908401613bf5565b5085821015613c325787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600060ff821660ff84168060ff03821115613c5f57613c5f6139e9565b01939250505056fea2646970667358221220503997b941f1c685d23ff02e8379359ce24bddd2ad576ae0a176cf0ab8ccb91b64736f6c634300080f0033

Deployed ByteCode Sourcemap

621:25840:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4810:111;;;;;;:::i;:::-;;:::i;3637:106::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;801:36;;;;;;;;;;-1:-1:-1;801:36:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;3979:114::-;;;;;;;;;;-1:-1:-1;4073:12:0;;3979:114;;;1705:25:1;;;1693:2;1678:18;3979:114:0;1559:177:1;23230:1906:0;;;;;;;;;;-1:-1:-1;23230:1906:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;:::i;3873:98::-;;;;;;;;;;-1:-1:-1;3873:98:0;;3931:5;4457:36:1;;4445:2;4430:18;3873:98:0;4315:184:1;20381:890:0;;;;;;;;;;-1:-1:-1;20381:890:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;1136:57::-;;;;;;;;;;-1:-1:-1;1136:57:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;6081:25:1;;;6137:2;6122:18;;6115:34;;;;6054:18;1136:57:0;5907:248:1;3472:27:0;;;;;;;;;;;;;;;;22682:540;;;;;;;;;;-1:-1:-1;22682:540:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;15589:1210::-;;;;;;;;;;-1:-1:-1;15589:1210:0;;;;;:::i;:::-;;:::i;19977:396::-;;;;;;;;;;-1:-1:-1;19977:396:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;710:36::-;;;;;;;;;;-1:-1:-1;710:36:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;710:36:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11551:25:1;;;-1:-1:-1;;;;;11612:32:1;;;11607:2;11592:18;;11585:60;11661:18;;;11654:34;;;;11719:2;11704:18;;11697:34;;;;11762:3;11747:19;;11740:35;;;;11632:3;11791:19;;11784:35;;;;11868:4;11856:17;;;11850:3;11835:19;;11828:46;11905:3;11890:19;;11883:35;11949:3;11934:19;;11927:35;11993:3;11978:19;;11971:35;12037:3;12022:19;;12015:36;12082:3;12067:19;;12060:36;12127:3;12112:19;;12105:36;11538:3;11523:19;710:36:0;11069:1078:1;21524:817:0;;;;;;;;;;-1:-1:-1;21524:817:0;;;;;:::i;:::-;;:::i;11765:133::-;;;;;;;;;;-1:-1:-1;11765:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;11872:18:0;11839:7;11872:18;;;;;;;;;;;;11765:133;5309:1097;;;;;;;;;;-1:-1:-1;5309:1097:0;;;;;:::i;:::-;;:::i;1202:72::-;;;;;;;;;;;;1232:42;1202:72;;;;;-1:-1:-1;;;;;12316:32:1;;;12298:51;;12286:2;12271:18;1202:72:0;12152:203:1;4929:372:0;;;:::i;3755:110::-;;;;;;;;;;;;;:::i;3573:16::-;;;;;;;;;;;;;;;;1281:83;;;;;;;;;;;;1322:42;1281:83;;25572:886;;;;;;;;;;-1:-1:-1;25572:886:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;22349:325::-;;;;;;;;;;-1:-1:-1;22349:325:0;;;;;:::i;:::-;;:::i;12035:202::-;;;;;;;;;;-1:-1:-1;12035:202:0;;;;;:::i;:::-;;:::i;18648:143::-;;;;;;;;;;-1:-1:-1;18648:143:0;;;;;:::i;:::-;;:::i;21279:237::-;;;;;;;;;;-1:-1:-1;21279:237:0;;;;;:::i;:::-;;:::i;18799:1170::-;;;;;;;;;;-1:-1:-1;18799:1170:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;12566:119::-;;;;;;;;;;;;;:::i;16807:1833::-;;;;;;;;;;-1:-1:-1;16807:1833:0;;;;;:::i;:::-;;:::i;753:41::-;;;;;;;;;;-1:-1:-1;753:41:0;;;;;:::i;:::-;;;;;;;;;;;;;;25144:416;;;;;;;;;;-1:-1:-1;25144:416:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;11906:121::-;;;;;;;;;;-1:-1:-1;11906:121:0;;;;;:::i;:::-;-1:-1:-1;;;;;11996:21:0;11967:4;11996:21;;;:11;:21;;;;;;:23;;;11906:121;;;;14740:14:1;;14733:22;14715:41;;14703:2;14688:18;11906:121:0;14575:187:1;3598:30:0;;;;;;;;;;;;;;;;12245:313;;;;;;;;;;;;;:::i;4810:111::-;4883:30;4898:14;4883;:30::i;:::-;4810:111;:::o;3637:106::-;3691:13;3730:5;3723:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3637:106;:::o;801:36::-;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;23230:1906::-;23365:16;23468:19;;;:9;:19;;;;;:43;;;23320;;23365:16;;;;;;;23531:2;23527:6;;23524:38;;;23554:2;23550:6;;23524:38;23574:16;23603:19;;;:9;:19;;;;;;;;:27;;;;-1:-1:-1;;;;;23603:27:0;23593:38;;;;;;;;;23652:10;23659:3;23652:6;:10;:::i;:::-;23640:22;;23716:17;;23698:16;;23691:6;:23;;;;:::i;:::-;:42;;:53;;23739:5;23691:53;;;23734:4;23691:53;23673:71;;23768:17;;23762:4;:23;;:46;;23791:17;;23762:46;;;23786:4;23762:46;23755:53;;23832:16;;23826:4;:22;;:44;;23854:16;;23826:44;;;23849:4;23826:44;23819:51;-1:-1:-1;23883:38:0;23954:11;23959:6;23819:51;23954:11;:::i;:::-;23924:42;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23924:42:0;;;;;;;;;;;;;;;;-1:-1:-1;23883:83:0;-1:-1:-1;23981:6:0;24002;;;;:::i;:::-;;;;24019:1009;24031:6;24025:4;:12;24019:1009;;24066:29;;;;:23;:29;;;;;:40;;;:50;;;;;:97;;-1:-1:-1;24120:29:0;;;;:23;:29;;;;;:40;;;:43;;24066:97;24063:933;;;24197:31;24231:23;:29;24255:4;24231:29;;;;;;;;;;;24197:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;24197:63:0;;;-1:-1:-1;;24197:63:0;;;;;;;;;;;-1:-1:-1;24304:29:0;;;:23;:29;;;;;;:34;;;24197:63;;-1:-1:-1;;24292:46:0;;:11;:46;:::i;:::-;24279:59;;24375:38;24416:505;;;;;;;;24479:4;:19;;;24416:505;;;;24533:4;:15;;;24416:505;;;;24588:9;:26;24598:4;:15;;;24588:26;;;;;;;;;;;:34;;;;;;;;;;-1:-1:-1;;;;;24588:34:0;-1:-1:-1;;;;;24416:505:0;;;;;24655:4;:13;;;24416:505;;;;24711:4;:23;;;24416:505;;;;24763:4;:9;;;24416:505;;;;24892:4;:9;;;24416:505;;;;24808:4;:16;;;24416:505;;;;24858:5;24416:505;;;24375:546;;24951:7;24940:5;24946:1;24940:8;;;;;;;;:::i;:::-;;;;;;:18;;;;24977:3;;;;;:::i;:::-;;;;24178:818;;;24063:933;25010:6;;;;:::i;:::-;;;;24019:1009;;;-1:-1:-1;25053:19:0;;;;:9;:19;;;;;;:31;;;25111:16;;25046:5;;25053:31;;23230:1906;;-1:-1:-1;25103:6:0;;-1:-1:-1;25111:16:0;;-1:-1:-1;23230:1906:0;;-1:-1:-1;;;;23230:1906:0:o;20381:890::-;20483:17;20503:19;;;:9;:19;;;;;;:26;;;;20562:28;;;;;20633:18;;20648:2;20633:18;;;;;;;;;20439:26;;20503;;;;;20562:28;;20483:17;20633:18;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20633:18:0;;;;;;;;;;;;;;;-1:-1:-1;20603:48:0;-1:-1:-1;20675:1:0;20664:573;20680:2;20677:1;:5;20664:573;;20712:13;20728:9;:12;20738:1;20728:12;;;;;;;;;;;20712:28;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20755:29;20787:293;;;;;;;;20818:1;20787:293;;;;20847:1;:6;;;20787:293;;;;20884:1;:10;;;20787:293;;;;20941:1;:10;;;20952:7;20941:18;;;;:::i;:::-;20926:14;:33;:67;;20979:14;20926:67;;;20960:10;;;;:18;;20971:7;20960:18;:::i;:::-;20787:293;;;;21033:1;21019:12;:15;;:45;;;;;;;;;;;;;;;-1:-1:-1;;;21019:45:0;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;21019:45:0;;;;20787:293;;20755:325;-1:-1:-1;20755:325:0;21095:9;21105:3;21107:1;21105;:3;:::i;:::-;21095:14;;;;;;;;:::i;:::-;;;;;;:28;;;;21169:1;:10;;;21180:7;21169:18;;;;:::i;:::-;21153:14;:34;;:72;;21224:1;21153:72;;;21204:10;;;;:18;;21215:7;21204:18;:::i;:::-;21188:35;;:14;:35;:::i;:::-;21138:87;;20697:540;;20683:3;;;;;:::i;:::-;;;;20664:573;;;-1:-1:-1;21254:9:0;20381:890;-1:-1:-1;;;;20381:890:0:o;22682:540::-;22884:23;;;22904:2;22884:23;;;;;;;;;22750:32;;;;;;22853:28;;22884:23;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;22884:23:0;;;;;;;;;;;;-1:-1:-1;;22951:14:0;;;22962:2;22951:14;;;;;;;;;22853:54;;-1:-1:-1;22918:30:0;;22951:14;;;;;;;;;;;-1:-1:-1;;22918:47:0;-1:-1:-1;22988:1:0;22976:159;22994:2;22991:1;:5;;;22976:159;;23038:27;;;;:17;:27;;;;;;;;:30;;;;;;;;;;;23027:41;;;;;;;;;;;;;;;;;;;;;;;;:5;;23033:3;;23066:1;23033:3;:::i;:::-;23027:10;;;;;;;;;;:::i;:::-;;;;;;;;;;;:41;;;;23105:18;;;;;;;:15;:18;;;;;;;23083:16;23100:3;23102:1;23121;23100:3;:::i;:::-;23083:21;;;;;;;;;;:::i;:::-;;;;;;;;;;:40;22998:3;;;;:::i;:::-;;;;22976:159;;;;23155:5;23162:16;23180:9;:19;23190:8;23180:19;;;;;;;;;;;:33;;23147:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22682:540;;;;;:::o;15589:1210::-;15679:10;15651:13;15667:23;;;:11;:23;;;;;;;15724:32;15667:23;15724:22;:32::i;:::-;15701:55;;15784:1;15775:8;:10;15767:36;;;;-1:-1:-1;;;15767:36:0;;;;;;;:::i;:::-;;;;;;;;;15839:6;15822:15;:23;;15814:70;;;;-1:-1:-1;;;15814:70:0;;17189:2:1;15814:70:0;;;17171:21:1;17228:2;17208:18;;;17201:30;17267:34;17247:18;;;17240:62;-1:-1:-1;;;17318:18:1;;;17311:32;17360:19;;15814:70:0;16987:398:1;15814:70:0;15897:39;15908:8;15918:17;;15897:10;:39::i;:::-;15949:14;15976:3;15966:9;:6;15973:2;15966:9;:::i;:::-;:13;;;;:::i;:::-;15949:30;-1:-1:-1;15990:19:0;16012:16;15949:30;16012:6;:16;:::i;:::-;15990:38;;16088:6;16049:9;:19;16059:8;16049:19;;;;;;;;;;;:37;;;:45;;;;;;;:::i;:::-;;;;-1:-1:-1;;16130:141:0;;;;;;;;;;;16107:20;16130:141;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;16130:141:0;;;;;;;;16284:30;;;:20;:30;;;;;16315:9;:19;;;;;;;:36;;;16130:141;;;;16284:30;;16107:20;16315:38;;:36;:38;:::i;:::-;16284:70;;;;;;;;;;;;;;-1:-1:-1;16284:70:0;:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;16371:19:0;;;;:9;:19;;;;;:36;;:38;;;;;;:::i;:::-;;;;-1:-1:-1;16422:8:0;;-1:-1:-1;16443:3:0;16433:9;:6;16440:2;16433:9;:::i;:::-;:13;;;;:::i;:::-;16422:24;;16457:50;16471:8;16481:6;16489:3;16457:50;;;;;;;;;;;;;-1:-1:-1;;;16457:50:0;;;:13;:50::i;:::-;16520:44;;16528:10;;16520:44;;;;;16549:14;;16520:44;;;;16549:14;16528:10;16520:44;;;;;;;;;;;;;;;;;;;;;16585:24;16612:98;;;;;;;;16648:10;:8;:10::i;:::-;16612:98;;16683:15;16612:98;;;;;16741:16;;;-1:-1:-1;16721:37:0;;;:19;:37;;;;;:41;;;;;;;;;;;;;;;;16773:18;;16585:125;;-1:-1:-1;16741:16:0;16773:18;;;:::i;:::-;;;;;;15640:1159;;;;;;;15589:1210;:::o;19977:396::-;20076:23;20102:19;;;:9;:19;;;;;;;;:29;;20076:55;;;;;;;;;;;;;;;;;20033:25;;20076:23;:55;;20102:29;20076:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20142:30;20188:9;:16;20173:32;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;20142:63;;20222:6;20218:118;20234:9;:16;20232:1;:18;20218:118;;;20299:25;20311:9;20321:1;20311:12;;;;;;;;:::i;:::-;;;;;;;20299:11;:25::i;:::-;20281:12;20294:1;20281:15;;;;;;;;:::i;:::-;;;;;;:43;;;;20252:3;;;;;:::i;:::-;;;;20218:118;;;-1:-1:-1;20353:12:0;19977:396;-1:-1:-1;;;19977:396:0:o;21524:817::-;21605:4;21642:19;;;:9;:19;;;;;:31;;;;21709:43;;;;;21780:17;;21773:24;;;:48;;21804:17;;21773:48;;;21798:5;21773:48;21765:56;;21865:16;;21857:7;:24;;;;:::i;:::-;21850:5;:31;;21842:104;;;;-1:-1:-1;;;21842:104:0;;20018:2:1;21842:104:0;;;20000:21:1;20057:2;20037:18;;;20030:30;20096:34;20076:18;;;20069:62;20167:30;20147:18;;;20140:58;20215:19;;21842:104:0;19816:424:1;21842:104:0;21959:16;21988:19;;;:9;:19;;;;;;;;:27;;;;-1:-1:-1;;;;;21988:27:0;21978:38;;;;;;;;22027:282;22041:5;22033:7;:13;22027:282;;;22076:32;;;;:23;:32;;;;;:43;;;:53;;22072:202;;22163:10;22188:32;;;:23;:32;;;;;:37;;;22176:49;;:11;:49;:::i;:::-;22163:62;-1:-1:-1;22244:14:0;22163:62;22244:14;;:::i;:::-;;;22144:130;22072:202;22288:9;;;;:::i;:::-;;;;22027:282;;;-1:-1:-1;22326:7:0;;21524:817;-1:-1:-1;;;;21524:817:0:o;5309:1097::-;5379:12;5394:19;;;:9;:19;;;;;:43;;;5465:17;;5458:24;;;:48;;5489:17;;5458:48;;;5483:5;5458:48;5450:56;-1:-1:-1;5542:11:0;:7;5550:3;5542:11;:::i;:::-;5535:5;:18;;:36;;5560:11;:7;5568:3;5560:11;:::i;:::-;5535:36;;;5554:5;5535:36;5584:16;5613:19;;;:9;:19;;;;;;;;:27;;;;-1:-1:-1;;;;;5613:27:0;5603:38;;;;;;;;5527:44;;-1:-1:-1;5652:460:0;5666:5;5658:7;:13;5652:460;;;5701:9;;5714:1;5701:14;5697:139;;5769:32;;;;:23;:32;;;;;;;;:51;;;5736:19;;;:9;:19;;;;;:31;;:84;;5769:51;;5736:31;;:84;;5769:51;;5736:84;:::i;:::-;;;;-1:-1:-1;;5697:139:0;5854:32;;;;:23;:32;;;;;:43;;;:53;;5850:227;;5942:10;5967:32;;;:23;:32;;;;;:37;;;5955:49;;:11;:49;:::i;:::-;5942:62;;6056:5;6023:9;:19;6033:8;6023:19;;;;;;;;;;;:31;;;:38;;;;;;;:::i;:::-;;;;-1:-1:-1;;;5850:227:0;6091:9;;;;:::i;:::-;;;;5652:460;;;6122:19;;;;:9;:19;;;;;;:43;;:49;;;6219:98;;;;;;;;;6255:10;:8;:10::i;:::-;6219:98;;6290:15;6219:98;;;;;6348:16;;;-1:-1:-1;6328:37:0;;;:19;:37;;;;;:41;;;;;;;;;;;;;;;;6380:18;;6192:125;;-1:-1:-1;6348:16:0;6380:18;;;:::i;:::-;;;;;;5368:1038;;;5309:1097;;:::o;4929:372::-;5010:10;11967:4;11996:21;;;:11;:21;;;;;;5031:55;;;;-1:-1:-1;;;5031:55:0;;;;;;;:::i;:::-;5115:1;5105:9;:11;5097:39;;;;-1:-1:-1;;;5097:39:0;;20447:2:1;5097:39:0;;;20429:21:1;20486:2;20466:18;;;20459:30;-1:-1:-1;;;20505:18:1;;;20498:45;20560:18;;5097:39:0;20245:339:1;5097:39:0;5167:11;5155:9;:24;;5147:64;;;;-1:-1:-1;;;5147:64:0;;20791:2:1;5147:64:0;;;20773:21:1;20830:2;20810:18;;;20803:30;20869:29;20849:18;;;20842:57;20916:18;;5147:64:0;20589:351:1;5147:64:0;-1:-1:-1;;;;;5247:27:0;;;;;;:11;:27;;;;;;5224:69;;5276:9;;5224:22;:69::i;3755:110::-;3811:13;3850:7;3843:14;;;;;:::i;25572:886::-;25640:32;25690:19;25730:8;:5;25736:2;25730:8;:::i;:::-;:11;;25739:2;25730:11;:::i;:::-;:14;;25742:2;25730:14;:::i;:::-;25712:32;;:15;:32;:::i;:::-;25690:54;;25757:8;25784:6;25808:1;25791:16;;:18;;;;:::i;:::-;25784:25;;25780:183;25814:1;25811;:4;25780:183;;25849:22;;;;:19;:22;;;;;:32;;;:48;-1:-1:-1;25846:106:0;;25931:5;;;;:::i;:::-;;;;25846:106;25817:3;;;;:::i;:::-;;;;25780:183;;;;25975:8;25992:1;25987:4;:6;:15;;25999:3;25987:15;;;25994:4;25987:15;25975:28;-1:-1:-1;26014:9:0;26026:7;25975:28;26026:3;:7;:::i;:::-;26014:19;-1:-1:-1;26061:7:0;;:14;;26071:4;26061:14;;;26069:1;26061:14;26054:21;;26126:3;26104:26;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;26104:26:0;;;;;;;;;;;;;;;;26096:34;;26143:8;26170:6;26194:1;26177:16;;:18;;;;:::i;:::-;26170:25;;26166:258;26200:4;26197:1;:7;26166:258;;26242:22;;;;:19;:22;;;;;:32;;;:48;-1:-1:-1;26239:160:0;;26337:22;;;;:19;:22;;;;;;;;;26324:35;;;;;;;;;;;;;;;;;;;:12;;:7;;26332:3;;26324:12;;;;;;:::i;:::-;;;;;;:35;;;;26378:5;;;;;:::i;:::-;;;;26239:160;26206:7;26209:4;26206:7;;:::i;:::-;;;26166:258;;;;26436:14;;;;;25572:886;;;;:::o;22349:325::-;22422:4;22498:19;;;:9;:19;;;;;;;;:33;;22469:62;;;;;;;;;;;;;;;;;22422:4;;;;22469:62;22498:33;22469:62;;;22498:33;22469:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22546:6;22542:100;22557:12;:19;22555:1;:21;22542:100;;;22615:12;22628:1;22615:15;;;;;;;;:::i;:::-;;;;;;;22606:24;;;;;:::i;:::-;;-1:-1:-1;22577:3:0;;;;:::i;:::-;;;;22542:100;;;-1:-1:-1;22659:7:0;;22349:325;-1:-1:-1;;;22349:325:0:o;12035:202::-;12097:4;-1:-1:-1;;12122:10:0;:19;12119:110;;-1:-1:-1;12150:21:0;;12035:202;-1:-1:-1;12035:202:0:o;12119:110::-;12216:13;:11;:13::i;:::-;12194:21;:11;12207:7;12194:21;:::i;:::-;:35;;;;:::i;:::-;12187:42;12035:202;-1:-1:-1;;12035:202:0:o;18648:143::-;18727:10;1232:42;18727:17;18719:26;;;;;;18756:16;:27;18648:143::o;21279:237::-;21347:4;21471:19;;;:9;:19;;;;;:37;;;21431;21481:8;21431:27;:37::i;:::-;21376:52;21400:8;21410:17;;21376:23;:52::i;:::-;:92;;;;:::i;:::-;:132;;;;:::i;18799:1170::-;18855:24;;:::i;:::-;18897:21;18921:19;;;:9;:19;;;;;;;;18897:43;;;;;;;;;;;;;;;-1:-1:-1;;;;;18897:43:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18921:19;;18897:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18951:30;18984:9;:27;18994:9;:16;;;18984:27;;;;;;;;;;;;;:32;;18951:65;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19027:27;19074:1;19057:9;:16;;;:18;;;:56;;;;;;;;;;;;;;;;;19076:9;:29;19086:9;:16;;;19103:1;19086:18;;;;:::i;:::-;19076:29;;;;;;;;;;;;;:34;;19057:56;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19027:86;;19124:33;19160:9;:29;19170:9;:16;;;19187:1;19170:18;;;;:::i;:::-;19160:29;;;;;;;;;;;;;:38;;;19124:74;;19209:14;19226:13;:11;:13::i;:::-;19281:17;;;;;-1:-1:-1;;;;;19271:28:0;19250:18;19271:28;;;;;;;;;;;19209:30;;-1:-1:-1;19337:37:0;19365:8;19337:27;:37::i;:::-;19310:64;;19385:22;19410:52;19434:8;19444:17;;19410:23;:52::i;:::-;19495:443;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;19495:443:0;;;;;;;;;;;;;;;;;;;19806:16;;;;19495:443;;;;;;;;;;;;;;;;;;;;;;;;18799:1170;-1:-1:-1;;18799:1170:0:o;12566:119::-;12609:4;12631:10;12644;:8;:10::i;16807:1833::-;16901:10;16873:13;16889:23;;;:11;:23;;;;;;16931:10;16923:36;;;;-1:-1:-1;;;16923:36:0;;;;;;;:::i;:::-;16970:13;17004:19;;;:9;:19;;;;;:32;;;16986:50;;:15;:50;:::i;:::-;16970:66;;17067:8;17055;:20;;17047:64;;;;-1:-1:-1;;;17047:64:0;;21356:2:1;17047:64:0;;;21338:21:1;21395:2;21375:18;;;21368:30;21434:33;21414:18;;;21407:61;21485:18;;17047:64:0;21154:355:1;17047:64:0;17140:10;17130:9;:21;;;;;;;;;;;:34;-1:-1:-1;17130:34:0;17122:74;;;;-1:-1:-1;;;17122:74:0;;21716:2:1;17122:74:0;;;21698:21:1;21755:2;21735:18;;;21728:30;21794:29;21774:18;;;21767:57;21841:18;;17122:74:0;21514:351:1;17122:74:0;17209:16;17228:26;17242:11;17228:13;:26::i;:::-;17209:45;;17298:11;17275:21;:34;;17267:77;;;;-1:-1:-1;;;17267:77:0;;22072:2:1;17267:77:0;;;22054:21:1;22111:2;22091:18;;;22084:30;22150:32;22130:18;;;22123:60;22200:18;;17267:77:0;21870:354:1;17267:77:0;17428:10;17357:24;17418:21;;;;;;;;;;;17384:2;;17443:3;;17418:23;;17440:1;17418:23;:::i;:::-;17417:29;;;;:::i;:::-;17402:11;:45;:96;;;;-1:-1:-1;17478:10:0;17468:9;:21;;;;;;;;;;;17494:3;;17468:24;;17490:2;17468:24;:::i;:::-;17467:30;;;;:::i;:::-;17451:11;:47;;17402:96;17399:287;;;-1:-1:-1;17546:2:0;17399:287;;;17604:10;17594:9;:21;;;;;;;;;;;17620:3;;17594:24;;17616:2;17594:24;:::i;:::-;17593:30;;;;:::i;:::-;17578:11;:46;17575:111;;;-1:-1:-1;17672:2:0;17575:111;17698:14;17749:3;17716:31;17728:19;17716:11;:31;:::i;:::-;17715:37;;;;:::i;:::-;17698:54;-1:-1:-1;17763:19:0;17785:21;17698:54;17785:11;:21;:::i;:::-;17763:43;;17827:20;17850:160;;;;;;;;17884:11;17850:160;;;;17922:11;17850:160;;;;17953:13;:11;:13::i;:::-;17850:160;;;;;;;;;;;;;-1:-1:-1;;;17850:160:0;;;;;;;;;;;;-1:-1:-1;18023:30:0;;;:20;:30;;;;;18054:9;:19;;;;;;;:36;;;17827:183;;-1:-1:-1;17827:183:0;;18023:30;;-1:-1:-1;;18054:38:0;;;:::i;:::-;18023:70;;;;;;;;;;;;;;-1:-1:-1;18023:70:0;:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;18110:19:0;;;;:9;:19;;;;;:36;;:38;;;;;;:::i;:::-;;;;-1:-1:-1;;18161:19:0;;;;:9;:19;;;;;18196:15;18161:32;;;;:50;18245:17;;18224:39;;18171:8;;18224:10;:39::i;:::-;18276:30;18282:10;18294:11;18276:5;:30::i;:::-;18337:11;18322:13;;:26;18319:159;;18389:11;18374:13;;:26;;;;;;;:::i;:::-;;;;-1:-1:-1;18319:159:0;;-1:-1:-1;18319:159:0;;18465:1;18451:13;:15;18319:159;18490:44;;18498:10;;18490:44;;;;;18519:14;;18490:44;;;;18519:14;18498:10;18490:44;;;;;;;;;;;;;;;;;;;;-1:-1:-1;18550:11:0;;18547:86;;18587:34;;1232:42;;18587:34;;;;;18611:9;;18587:34;;;;18611:9;1232:42;18587:34;;;;;;;;;;;;;;;;;;;;;18547:86;16862:1778;;;;;;;16807:1833;:::o;25144:416::-;25260:21;25284:19;;;:9;:19;;;;;:36;;;25209:33;;25284:36;25346:35;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25346:35:0;;;;;;;;;;;;;;;;-1:-1:-1;25333:48:0;-1:-1:-1;25405:1:0;25394:127;25411:16;25408:1;:19;25394:127;;25476:20;:30;25497:8;25476:30;;;;;;;;;;;:33;25507:1;25476:33;;;;;;;;;;;25458:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:12;25473:1;25471;:3;;;;:::i;:::-;25458:17;;;;;;;;:::i;:::-;;;;;;:51;;;;25429:3;;;;;:::i;:::-;;;;25394:127;;;;25533:19;25144:416;;;:::o;12245:313::-;12285:4;12327:16;12311:13;;:32;12307:244;;;12411:6;12397:13;;12395:1;:15;;;;:::i;:::-;:22;;;;:::i;:::-;12384:34;;12385:7;12384:34;:::i;:::-;12367:52;;:15;:52;:::i;:::-;12360:59;;12245:313;:::o;12307:244::-;12473:7;12457:13;;:24;;:82;;-1:-1:-1;12523:16:0;;;12245:313::o;12457:82::-;12509:13;;12482:16;;:26;;12500:7;12482:26;:::i;:::-;:40;;;;:::i;6414:1399::-;6513:10;6544:9;6536:39;;;;-1:-1:-1;;;6536:39:0;;20447:2:1;6536:39:0;;;20429:21:1;20486:2;20466:18;;;20459:30;-1:-1:-1;;;20505:18:1;;;20498:45;20560:18;;6536:39:0;20245:339:1;6536:39:0;6606:11;6594:9;:24;;6586:64;;;;-1:-1:-1;;;6586:64:0;;20791:2:1;6586:64:0;;;20773:21:1;20830:2;20810:18;;;20803:30;20869:29;20849:18;;;20842:57;20916:18;;6586:64:0;20589:351:1;6586:64:0;-1:-1:-1;;;;;11996:21:0;;11967:4;11996:21;;;:11;:21;;;;;;6663:1143;;-1:-1:-1;;;;;11996:21:0;;11967:4;11996:21;;;:11;:21;;;;;;6726:59;;;;-1:-1:-1;;;6726:59:0;;22431:2:1;6726:59:0;;;22413:21:1;22470:2;22450:18;;;22443:30;-1:-1:-1;;;22489:18:1;;;22482:46;22545:18;;6726:59:0;22229:340:1;6726:59:0;-1:-1:-1;;;;;6819:28:0;;6802:14;6819:28;;;:11;:28;;;;;;6870:9;;6819:28;;6802:14;6870:11;;6880:1;6870:11;:::i;:::-;6862:19;;6898:13;6914:601;;;;;;;;6941:2;6914:601;;;;6970:14;-1:-1:-1;;;;;6914:601:0;;;;;7013:9;6914:601;;;;7050:1;6914:601;;;;7087:1;6914:601;;;;7118:1;6914:601;;;;7145:1;6914:601;;;;;;7186:1;7175:13;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7175:13:0;-1:-1:-1;6914:601:0;;7219:1;6914:601;;;;;7253:14;;7264:2;7253:14;;;;;;;;6914:601;;;;;7253:14;;;;;;;;;;;-1:-1:-1;;;6914:601:0;;7304:1;6914:601;;;;;;;7348:17;;6914:601;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7532:13;;;:9;:13;;;;;;;:15;;;;;;;;;;;;;-1:-1:-1;;;;;;7532:15:0;-1:-1:-1;;;;;7532:15:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7532:15:0;;;;;;;;;;;;;;;;;;;-1:-1:-1;7532:15:0;;:13;;:15;;;;;;;;;;;:::i;:::-;-1:-1:-1;7532:15:0;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;7532:15:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7562:27:0;;-1:-1:-1;7562:27:0;;;:11;:27;;;;;:32;;;7611:11;;;7532:15;7611:11;;;:::i;:::-;;;;-1:-1:-1;;7639:20:0;;;;:9;:20;;;;;;;:30;;:39;;;;;;;;;;;;;;;;;;7695:43;;7675:2;;7722:9;;7695:22;:43::i;:::-;6697:1053;;;6477:1336;6414:1399;:::o;6663:1143::-;7779:15;:13;:15::i;:::-;6477:1336;6414:1399;:::o;11112:645::-;11252:12;;11224:10;;11252:14;11249:80;;11305:12;;11300:17;;:4;:17;:::i;:::-;11292:25;;11249:80;11374:282;;;;;;;;11425:17;;11374:282;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11606:12;;11374:282;;;;11339:32;11669:42;;;:23;:42;;;;;;;:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11374:282;;;;11669:50;;;;;;;;:::i;:::-;-1:-1:-1;11669:50:0;;;;;;;;;;;11730:17;:19;;;:17;:19;;;:::i;:::-;;;;;;11213:544;;11112:645;;;;:::o;7821:2685::-;7931:10;7944;:8;:10::i;:::-;7931:23;-1:-1:-1;7965:11:0;7998;7931:23;7980:9;:6;7987:2;7980:9;:::i;:::-;:15;;;;:::i;:::-;7979:31;;;;:::i;:::-;7965:45;;8055:6;8023:9;:19;8033:8;8023:19;;;;;;;;;;;:30;;;:38;;;;;;;:::i;:::-;;;;;;;;8074:39;8085:8;8095:17;;8074:10;:39::i;:::-;8149:141;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;8149:141:0;;;;;;;;8126:20;8303:30;;;:20;:30;;;;;8334:9;:19;;;;;;;:36;;;8149:141;;;;8303:30;;8334:38;;:36;:38;:::i;:::-;8303:70;;;;;;;;;;;;;;-1:-1:-1;8303:70:0;:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;8390:19:0;;;;:9;:19;;;;;:36;;:38;;;;;;:::i;:::-;;;;;;8445:6;8441:2;;:10;;;;;;;:::i;:::-;;;;-1:-1:-1;;8464:11:0;8501:19;;;8476:1;8501:19;;;;;;;;:29;;;8541:1396;8547:7;;8541:1396;;8580:16;;;;:9;:16;;;;;:25;;:33;;8607:6;;8580:16;:33;;8607:6;;8580:33;:::i;:::-;;;;-1:-1:-1;;8642:16:0;;;;:9;:16;;;;;:33;;:41;;8677:6;;8642:16;:41;;8677:6;;8642:41;:::i;:::-;;;;-1:-1:-1;;8706:1:0;8700:7;;;;8697:75;;;8722:24;;;;:17;:24;;;;;;;;:31;;;;;;;;;;:42;;:50;;8766:6;;8722:24;:50;;8766:6;;8722:50;:::i;:::-;;;;-1:-1:-1;;8697:75:0;8790:18;8787:116;;;8842:24;;;;:17;:24;;;;;;;;:31;;;;;;;;;;:45;;;;;;:::i;:::-;;;;;;8787:116;8927:2;8920:5;:9;;;8917:894;;8973:17;9013:16;;;:9;:16;;;;;:23;;;:30;;;;:23;;:30;9010:785;;9107:22;;;;;;;:15;:22;;;;;;9132:7;;9100:29;;:6;:29;:::i;:::-;9099:41;;;;:::i;:::-;9084:56;;9166:5;:8;;9173:1;9166:8;9163:467;;9224:17;9242:16;;;:9;:16;;;;;;;;:23;;;;;9315:26;;;:13;:26;;;;;;;9344:7;;9308:33;;:6;:33;:::i;:::-;9307:45;;;;:::i;:::-;9292:60;;9420:12;9379:9;:16;9389:5;9379:16;;;;;;;;;;;:30;;9416:1;9410:5;:7;;;;:::i;:::-;9379:39;;;;;;;;;;:::i;:::-;;;;;;;;;:53;;;;;;;:::i;:::-;;;;-1:-1:-1;9465:11:0;;-1:-1:-1;9010:785:0;;-1:-1:-1;9010:785:0;9163:467;9594:12;9553:9;:16;9563:5;9553:16;;;;;;;;;;;:30;;9590:1;9584:5;:7;;;;:::i;:::-;9553:39;;;;;;;;;;:::i;:::-;;;;;;;;;:53;;;;;;;:::i;:::-;;;;-1:-1:-1;9010:785:0;;-1:-1:-1;9010:785:0;;9726:9;:12;;;;;;;;9763;;9726:26;;9753:7;;:5;:7;:::i;:::-;9726:35;;;;;;;;;;:::i;:::-;;;;;;;;;:49;;;;;;;:::i;:::-;;;;-1:-1:-1;;9010:785:0;8944:867;8917:894;9836:17;9847:5;9836:10;:17::i;:::-;9877:16;;;;:9;:16;;;;;:26;;;9918:7;;;;:::i;:::-;;;;8541:1396;;;9962:2;9955:5;:9;;;9949:200;;10018:22;;;9990:17;10018:22;;;:15;:22;;;;;;10043:7;;10011:29;;:6;:29;:::i;:::-;10010:41;;;;:::i;:::-;10066:9;:12;;;;;;;;9990:61;;-1:-1:-1;9990:61:0;;10066:26;;10093:7;;:5;:7;:::i;:::-;10066:35;;;;;;;;;;:::i;:::-;;;;;;;;;:49;;;;;;;:::i;:::-;;;;-1:-1:-1;10130:7:0;;-1:-1:-1;10130:7:0;;;:::i;:::-;;;;9975:174;9949:200;;;10159:57;10173:8;10183:6;10201:3;10191:9;10183:6;10198:2;10191:9;:::i;:::-;:13;;;;:::i;:::-;10159:57;;;;;;;;;;;;;-1:-1:-1;;;10159:57:0;;;:13;:57::i;:::-;10230:9;;10243:1;10230:14;10227:84;;10260:39;10271:8;10281:17;;10260:10;:39::i;:::-;10329:19;;;;:9;:19;;;;;;;;:27;;10323:42;;-1:-1:-1;;;;;10329:27:0;10358:6;10323:5;:42::i;:::-;10404:3;10394:9;:6;10401:2;10394:9;:::i;:::-;:13;;;;:::i;:::-;10378;;:30;;;;;;;:::i;:::-;;;;-1:-1:-1;;10471:22:0;;1322:42;;10429:69;;10494:3;;10464:29;;:6;:29;:::i;:::-;:33;;;;:::i;:::-;10429:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4338:464;-1:-1:-1;;;;;4428:21:0;;4420:67;;;;-1:-1:-1;;;4420:67:0;;22776:2:1;4420:67:0;;;22758:21:1;22815:2;22795:18;;;22788:30;22854:34;22834:18;;;22827:62;-1:-1:-1;;;22905:18:1;;;22898:31;22946:19;;4420:67:0;22574:397:1;4420:67:0;-1:-1:-1;;;;;4525:18:0;;4500:22;4525:18;;;;;;;;;;;4562:24;;;;4554:71;;;;-1:-1:-1;;;4554:71:0;;23178:2:1;4554:71:0;;;23160:21:1;23217:2;23197:18;;;23190:30;23256:34;23236:18;;;23229:62;-1:-1:-1;;;23307:18:1;;;23300:32;23349:19;;4554:71:0;22976:398:1;4554:71:0;4658:6;4644:12;;:20;;4636:58;;;;-1:-1:-1;;;4636:58:0;;23581:2:1;4636:58:0;;;23563:21:1;23620:2;23600:18;;;23593:30;23659:27;23639:18;;;23632:55;23704:18;;4636:58:0;23379:349:1;4636:58:0;4728:23;4745:6;4728:14;:23;:::i;:::-;-1:-1:-1;;;;;4707:18:0;;:9;:18;;;;;;;;;;:44;;;;4772:12;:22;;4788:6;;4707:9;4772:22;;4788:6;;4772:22;:::i;:::-;;;;-1:-1:-1;;;;;4338:464:0:o;10515:471::-;10576:17;10596:20;;;:9;:20;;;;;;;:27;;;;;;10576:17;10651:13;;10596:27;;10651:13;:::i;:::-;10719:19;;;;;;;:9;:19;;;;;:28;;;10634:30;;-1:-1:-1;10719:38:0;;10749:7;10719:38;:::i;:::-;10680:20;;;;:9;:20;;;;;:37;;;:77;;;;:153;;;10831:2;10819:11;:14;;;10680:153;10677:302;;;10905:1;10867:20;;;:9;:20;;;;;:37;;;:39;;;;10925:27;;:38;;-1:-1:-1;;10925:38:0;;;;;;;10677:302;10565:421;;10515:471;:::o;4101:229::-;-1:-1:-1;;;;;4191:21:0;;4183:65;;;;-1:-1:-1;;;4183:65:0;;23935:2:1;4183:65:0;;;23917:21:1;23974:2;23954:18;;;23947:30;24013:33;23993:18;;;23986:61;24064:18;;4183:65:0;23733:355:1;4183:65:0;4277:6;4261:12;;:22;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;4294:18:0;;:9;:18;;;;;;;;;;:28;;4316:6;;4294:9;:28;;4316:6;;4294:28;:::i;:::-;;;;-1:-1:-1;;;;4101:229:0:o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:286:1;73:6;126:2;114:9;105:7;101:23;97:32;94:52;;;142:1;139;132:12;94:52;168:23;;-1:-1:-1;;;;;220:31:1;;210:42;;200:70;;266:1;263;256:12;200:70;289:5;14:286;-1:-1:-1;;;14:286:1:o;305:472::-;347:3;385:5;379:12;412:6;407:3;400:19;437:1;447:162;461:6;458:1;455:13;447:162;;;523:4;579:13;;;575:22;;569:29;551:11;;;547:20;;540:59;476:12;447:162;;;627:6;624:1;621:13;618:87;;;693:1;686:4;677:6;672:3;668:16;664:27;657:38;618:87;-1:-1:-1;759:2:1;738:15;-1:-1:-1;;734:29:1;725:39;;;;766:4;721:50;;305:472;-1:-1:-1;;305:472:1:o;782:220::-;931:2;920:9;913:21;894:4;951:45;992:2;981:9;977:18;969:6;951:45;:::i;1007:180::-;1066:6;1119:2;1107:9;1098:7;1094:23;1090:32;1087:52;;;1135:1;1132;1125:12;1087:52;-1:-1:-1;1158:23:1;;1007:180;-1:-1:-1;1007:180:1:o;1192:362::-;1397:6;1386:9;1379:25;1440:2;1435;1424:9;1420:18;1413:30;1360:4;1460:45;1501:2;1490:9;1486:18;1478:6;1460:45;:::i;:::-;1452:53;;1541:6;1536:2;1525:9;1521:18;1514:34;1192:362;;;;;;:::o;1741:248::-;1809:6;1817;1870:2;1858:9;1849:7;1845:23;1841:32;1838:52;;;1886:1;1883;1876:12;1838:52;-1:-1:-1;;1909:23:1;;;1979:2;1964:18;;;1951:32;;-1:-1:-1;1741:248:1:o;2199:2031::-;2527:4;2556:3;2597:2;2586:9;2582:18;2627:2;2616:9;2609:21;2650:6;2685;2679:13;2716:6;2708;2701:22;2742:3;2732:13;;2776:2;2765:9;2761:18;2754:25;;2838:2;2828:6;2825:1;2821:14;2810:9;2806:30;2802:39;2860:4;2899:2;2891:6;2887:15;2920:1;2930:1084;2944:6;2941:1;2938:13;2930:1084;;;3037:3;3033:8;3021:9;3013:6;3009:22;3005:37;3000:3;2993:50;3072:6;3066:13;3102:6;3142:2;3136:9;3128:6;3121:25;3197:2;3193;3189:11;3183:18;3178:2;3170:6;3166:15;3159:43;3225:4;3276:2;3272;3268:11;3262:18;3293:49;3338:2;3330:6;3326:15;3312:12;-1:-1:-1;;;;;2060:31:1;2048:44;;1994:104;3293:49;-1:-1:-1;;3365:4:1;3412:11;;;3406:18;3389:15;;;3382:43;3448:4;3495:11;;;3489:18;3472:15;;;3465:43;3551:11;;;3545:18;3528:15;;;3521:43;3605:11;;;3599:18;3637:15;;;3630:27;;;3684:50;3718:15;;;3599:18;3684:50;:::i;:::-;3757:4;3804:11;;;3798:18;3781:15;;;3774:43;3841:6;3891:12;;;3885:19;3867:16;;;;3860:45;;;;-1:-1:-1;;3992:12:1;;;;3957:15;;;;2966:1;2959:9;2930:1084;;;-1:-1:-1;;4053:18:1;;4046:34;;;2173:13;;2166:21;4128:4;4113:20;;2154:34;4031:6;-1:-1:-1;4089:45:1;;-1:-1:-1;;;;2103:91:1;4089:45;4165:4;4150:20;;4143:36;;;;4210:4;4195:20;4188:36;2199:2031;;-1:-1:-1;;;2199:2031:1:o;4504:1398::-;4696:4;4725:2;4765;4754:9;4750:18;4795:2;4784:9;4777:21;4818:6;4853;4847:13;4884:6;4876;4869:22;4910:2;4900:12;;4943:2;4932:9;4928:18;4921:25;;5005:2;4995:6;4992:1;4988:14;4977:9;4973:30;4969:39;5043:2;5035:6;5031:15;5064:1;5074:799;5088:6;5085:1;5082:13;5074:799;;;5181:2;5177:7;5165:9;5157:6;5153:22;5149:36;5144:3;5137:49;5215:6;5209:13;5245:4;5283:2;5277:9;5269:6;5262:25;5334:2;5330;5326:11;5320:18;5375:2;5370;5362:6;5358:15;5351:27;5405:48;5449:2;5441:6;5437:15;5423:12;5405:48;:::i;:::-;5391:62;;;5504:2;5500;5496:11;5490:18;5485:2;5477:6;5473:15;5466:43;5532:4;5587:2;5583;5579:11;5573:18;5568:2;5560:6;5556:15;5549:43;;5615:4;5668:2;5664;5660:11;5654:18;5632:40;;5721:6;5713;5709:19;5704:2;5696:6;5692:15;5685:44;;5752:41;5786:6;5770:14;5752:41;:::i;:::-;5851:12;;;;5742:51;-1:-1:-1;;;5816:15:1;;;;5110:1;5103:9;5074:799;;;-1:-1:-1;5890:6:1;;4504:1398;-1:-1:-1;;;;;;;;4504:1398:1:o;6319:435::-;6372:3;6410:5;6404:12;6437:6;6432:3;6425:19;6463:4;6492:2;6487:3;6483:12;6476:19;;6529:2;6522:5;6518:14;6550:1;6560:169;6574:6;6571:1;6568:13;6560:169;;;6635:13;;6623:26;;6669:12;;;;6704:15;;;;6596:1;6589:9;6560:169;;;-1:-1:-1;6745:3:1;;6319:435;-1:-1:-1;;;;;6319:435:1:o;6759:1100::-;7165:2;7177:21;;;7247:13;;7150:18;;;7269:22;;;7117:4;;7345;;7322:3;7307:19;;;7372:15;;;7117:4;7415:196;7429:6;7426:1;7423:13;7415:196;;;7478:51;7525:3;7516:6;7510:13;6239:12;;6227:25;;6301:4;6290:16;;;6284:23;6268:14;;6261:47;6160:154;7478:51;7558:4;7549:14;;;;;7586:15;;;;7451:1;7444:9;7415:196;;;7419:3;;;7656:9;7651:3;7647:19;7642:2;7631:9;7627:18;7620:47;7690:41;7727:3;7719:6;7690:41;:::i;:::-;7676:55;;;7781:9;7773:6;7769:22;7762:4;7751:9;7747:20;7740:52;7809:44;7846:6;7838;7809:44;:::i;:::-;7801:52;6759:1100;-1:-1:-1;;;;;;6759:1100:1:o;7864:1412::-;7911:3;7939:6;7972:5;7966:12;7961:3;7954:25;8025:4;8018:5;8014:16;8008:23;8040:48;8082:4;8077:3;8073:14;8059:12;-1:-1:-1;;;;;2060:31:1;2048:44;;1994:104;8040:48;;8137:4;8130:5;8126:16;8120:23;8113:4;8108:3;8104:14;8097:47;8193:4;8186:5;8182:16;8176:23;8169:4;8164:3;8160:14;8153:47;8249:4;8242:5;8238:16;8232:23;8225:4;8220:3;8216:14;8209:47;8305:4;8298:5;8294:16;8288:23;8281:4;8276:3;8272:14;8265:47;8360:4;8353:5;8349:16;8343:23;8375:48;8417:4;8412:3;8408:14;8392;4302:4;4291:16;4279:29;;4235:75;8375:48;;8471:4;8464:5;8460:16;8454:23;8509:2;8502:4;8497:3;8493:14;8486:26;8533:58;8587:2;8582:3;8578:12;8562:14;8533:58;:::i;:::-;8521:70;;;8610:6;8663:2;8656:5;8652:14;8646:21;8641:2;8636:3;8632:12;8625:43;;8687:6;8741:2;8734:5;8730:14;8724:21;8785:3;8779:4;8775:14;8770:2;8765:3;8761:12;8754:36;8813:50;8858:4;8842:14;8813:50;:::i;:::-;8882:6;8924:14;;;8918:21;8904:12;;;8897:43;8959:6;9001:14;;;8995:21;8981:12;;;8974:43;9036:6;9078:14;;;9072:21;9058:12;;;9051:43;9113:6;9155:14;;;9149:21;9135:12;;;9128:43;9190:6;9232:14;;;9226:21;9212:12;;;;9205:43;;;;-1:-1:-1;8799:64:1;;7864:1412;-1:-1:-1;;;7864:1412:1:o;9281:936::-;9332:3;9360:6;9401:5;9395:12;9428:2;9423:3;9416:15;9452:50;9498:2;9493:3;9489:12;9475;9452:50;:::i;:::-;9440:62;;;9550:4;9543:5;9539:16;9533:23;9598:3;9592:4;9588:14;9581:4;9576:3;9572:14;9565:38;9626:39;9660:4;9644:14;9626:39;:::i;:::-;9612:53;;;9713:4;9706:5;9702:16;9696:23;9763:3;9755:6;9751:16;9744:4;9739:3;9735:14;9728:40;9791:41;9825:6;9809:14;9791:41;:::i;:::-;9777:55;;;9881:4;9874:5;9870:16;9864:23;9857:4;9852:3;9848:14;9841:47;9937:4;9930:5;9926:16;9920:23;9913:4;9908:3;9904:14;9897:47;9993:4;9986:5;9982:16;9976:23;9969:4;9964:3;9960:14;9953:47;10049:4;10042:5;10038:16;10032:23;10025:4;10020:3;10016:14;10009:47;10105:4;10098:5;10094:16;10088:23;10081:4;10076:3;10072:14;10065:47;10131:6;10184:2;10177:5;10173:14;10167:21;10162:2;10157:3;10153:12;10146:43;;10205:6;10198:13;;;9281:936;;;;:::o;10222:842::-;10414:4;10443:2;10483;10472:9;10468:18;10513:2;10502:9;10495:21;10536:6;10571;10565:13;10602:6;10594;10587:22;10640:2;10629:9;10625:18;10618:25;;10702:2;10692:6;10689:1;10685:14;10674:9;10670:30;10666:39;10652:53;;10740:2;10732:6;10728:15;10761:1;10771:264;10785:6;10782:1;10779:13;10771:264;;;10878:2;10874:7;10862:9;10854:6;10850:22;10846:36;10841:3;10834:49;10906;10948:6;10939;10933:13;10906:49;:::i;:::-;10896:59;-1:-1:-1;11013:12:1;;;;10978:15;;;;10807:1;10800:9;10771:264;;;-1:-1:-1;11052:6:1;;10222:842;-1:-1:-1;;;;;;;10222:842:1:o;12360:742::-;12595:2;12647:21;;;12717:13;;12620:18;;;12739:22;;;12566:4;;12595:2;12780;;12798:18;;;;12839:15;;;12566:4;12882:194;12896:6;12893:1;12890:13;12882:194;;;12945:51;12992:3;12983:6;12977:13;6239:12;;6227:25;;6301:4;6290:16;;;6284:23;6268:14;;6261:47;6160:154;12945:51;13016:12;;;;13051:15;;;;12918:1;12911:9;12882:194;;;-1:-1:-1;13093:3:1;;12360:742;-1:-1:-1;;;;;;;12360:742:1:o;13107:259::-;13286:2;13275:9;13268:21;13249:4;13306:54;13356:2;13345:9;13341:18;13333:6;13306:54;:::i;13371:1199::-;13569:4;13598:2;13638;13627:9;13623:18;13668:2;13657:9;13650:21;13691:6;13726;13720:13;13757:6;13749;13742:22;13783:2;13773:12;;13816:2;13805:9;13801:18;13794:25;;13878:2;13868:6;13865:1;13861:14;13850:9;13846:30;13842:39;13916:2;13908:6;13904:15;13937:1;13947:594;13961:6;13958:1;13955:13;13947:594;;;14026:22;;;-1:-1:-1;;14022:36:1;14010:49;;14082:13;;14150:9;;14135:25;;14203:11;;;14197:18;14180:15;;;14173:43;14259:11;;;14253:18;14236:15;;;14229:43;14295:4;14338:11;;;14332:18;14118:4;14370:15;;;14363:27;;;14332:18;14413:48;14445:15;;;14332:18;14413:48;:::i;:::-;14519:12;;;;14403:58;-1:-1:-1;;;14484:15:1;;;;13983:1;13976:9;13947:594;;14767:380;14846:1;14842:12;;;;14889;;;14910:61;;14964:4;14956:6;14952:17;14942:27;;14910:61;15017:2;15009:6;15006:14;14986:18;14983:38;14980:161;;15063:10;15058:3;15054:20;15051:1;15044:31;15098:4;15095:1;15088:15;15126:4;15123:1;15116:15;14980:161;;14767:380;;;:::o;15152:127::-;15213:10;15208:3;15204:20;15201:1;15194:31;15244:4;15241:1;15234:15;15268:4;15265:1;15258:15;15284:128;15324:3;15355:1;15351:6;15348:1;15345:13;15342:39;;;15361:18;;:::i;:::-;-1:-1:-1;15397:9:1;;15284:128::o;15417:125::-;15457:4;15485:1;15482;15479:8;15476:34;;;15490:18;;:::i;:::-;-1:-1:-1;15527:9:1;;15417:125::o;15547:127::-;15608:10;15603:3;15599:20;15596:1;15589:31;15639:4;15636:1;15629:15;15663:4;15660:1;15653:15;15679:136;15718:3;15746:5;15736:39;;15755:18;;:::i;:::-;-1:-1:-1;;;15791:18:1;;15679:136::o;15820:168::-;15860:7;15926:1;15922;15918:6;15914:14;15911:1;15908:21;15903:1;15896:9;15889:17;15885:45;15882:71;;;15933:18;;:::i;:::-;-1:-1:-1;15973:9:1;;15820:168::o;15993:127::-;16054:10;16049:3;16045:20;16042:1;16035:31;16085:4;16082:1;16075:15;16109:4;16106:1;16099:15;16125:135;16164:3;16185:17;;;16182:43;;16205:18;;:::i;:::-;-1:-1:-1;16252:1:1;16241:13;;16125:135::o;16265:195::-;16303:4;16340;16337:1;16333:12;16372:4;16369:1;16365:12;16397:3;16392;16389:12;16386:38;;;16404:18;;:::i;:::-;16441:13;;;16265:195;-1:-1:-1;;;16265:195:1:o;16465:175::-;16502:3;16546:4;16539:5;16535:16;16575:4;16566:7;16563:17;16560:43;;16583:18;;:::i;:::-;16632:1;16619:15;;16465:175;-1:-1:-1;;16465:175:1:o;16645:337::-;16847:2;16829:21;;;16886:2;16866:18;;;16859:30;-1:-1:-1;;;16920:2:1;16905:18;;16898:43;16973:2;16958:18;;16645:337::o;17390:217::-;17430:1;17456;17446:132;;17500:10;17495:3;17491:20;17488:1;17481:31;17535:4;17532:1;17525:15;17563:4;17560:1;17553:15;17446:132;-1:-1:-1;17592:9:1;;17390:217::o;17738:545::-;17840:2;17835:3;17832:11;17829:448;;;17876:1;17901:5;17897:2;17890:17;17946:4;17942:2;17932:19;18016:2;18004:10;18000:19;17997:1;17993:27;17987:4;17983:38;18052:4;18040:10;18037:20;18034:47;;;-1:-1:-1;18075:4:1;18034:47;18130:2;18125:3;18121:12;18118:1;18114:20;18108:4;18104:31;18094:41;;18185:82;18203:2;18196:5;18193:13;18185:82;;;18248:17;;;18229:1;18218:13;18185:82;;;18189:3;;;17738:545;;;:::o;18459:1352::-;18585:3;18579:10;18612:18;18604:6;18601:30;18598:56;;;18634:18;;:::i;:::-;18663:97;18753:6;18713:38;18745:4;18739:11;18713:38;:::i;:::-;18707:4;18663:97;:::i;:::-;18815:4;;18879:2;18868:14;;18896:1;18891:663;;;;19598:1;19615:6;19612:89;;;-1:-1:-1;19667:19:1;;;19661:26;19612:89;-1:-1:-1;;18416:1:1;18412:11;;;18408:24;18404:29;18394:40;18440:1;18436:11;;;18391:57;19714:81;;18861:944;;18891:663;17685:1;17678:14;;;17722:4;17709:18;;-1:-1:-1;;18927:20:1;;;19045:236;19059:7;19056:1;19053:14;19045:236;;;19148:19;;;19142:26;19127:42;;19240:27;;;;19208:1;19196:14;;;;19075:19;;19045:236;;;19049:3;19309:6;19300:7;19297:19;19294:201;;;19370:19;;;19364:26;-1:-1:-1;;19453:1:1;19449:14;;;19465:3;19445:24;19441:37;19437:42;19422:58;19407:74;;19294:201;-1:-1:-1;;;;;19541:1:1;19525:14;;;19521:22;19508:36;;-1:-1:-1;18459:1352:1:o;20945:204::-;20983:3;21019:4;21016:1;21012:12;21051:4;21048:1;21044:12;21086:3;21080:4;21076:14;21071:3;21068:23;21065:49;;;21094:18;;:::i;:::-;21130:13;;20945:204;-1:-1:-1;;;20945:204:1:o

Swarm Source

ipfs://503997b941f1c685d23ff02e8379359ce24bddd2ad576ae0a176cf0ab8ccb91b
Block Transaction Gas Used Reward
Age Block Fee Address BC Fee Address Voting Power Jailed Incoming
Validator ID :
0 FTM

Amount Staked
0

Amount Delegated
0

Staking Total
0

Staking Start Epoch
0

Staking Start Time
0

Proof of Importance
0

Origination Score
0

Validation Score
0

Active
0

Online
0

Downtime
0 s
Address Amount claimed Rewards Created On Epoch Created On
Block Uncle Number Difficulty Gas Used Reward
Loading
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.