ETH Price: $3,338.88 (-1.14%)

Token

MOJI Experience Points (MEXP)
 

Overview

Max Total Supply

15,750.50860274922690297 MEXP

Holders

726 (0.00%)

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
3 MEXP

Value
$0.00
0x2292F0627802c44A0Cb94903fAC599eDE68E1c36
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

Niftymoji offers limited number of MOJIs (3186 units) NFT for minting based on OpenMoji 12.0. Each Niftymoji is engraved with a unique emoji and power+luck scores. MOJI Experience Points ($MEXP) Tokens are rewards for owning a MOJI.

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
MEXPToken

Compiler Version
v0.5.16+commit.9c3226ce

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2020-04-11
*/

pragma solidity 0.5.16; /*

___________________________________________________________________
  _      _                                        ______           
  |  |  /          /                                /              
--|-/|-/-----__---/----__----__---_--_----__-------/-------__------
  |/ |/    /___) /   /   ' /   ) / /  ) /___)     /      /   )     
__/__|____(___ _/___(___ _(___/_/_/__/_(___ _____/______(___/__o_o_





███╗   ███╗███████╗██╗  ██╗██████╗     ████████╗ ██████╗ ██╗  ██╗███████╗███╗   ██╗
████╗ ████║██╔════╝╚██╗██╔╝██╔══██╗    ╚══██╔══╝██╔═══██╗██║ ██╔╝██╔════╝████╗  ██║
██╔████╔██║█████╗   ╚███╔╝ ██████╔╝       ██║   ██║   ██║█████╔╝ █████╗  ██╔██╗ ██║
██║╚██╔╝██║██╔══╝   ██╔██╗ ██╔═══╝        ██║   ██║   ██║██╔═██╗ ██╔══╝  ██║╚██╗██║
██║ ╚═╝ ██║███████╗██╔╝ ██╗██║            ██║   ╚██████╔╝██║  ██╗███████╗██║ ╚████║
╚═╝     ╚═╝╚══════╝╚═╝  ╚═╝╚═╝            ╚═╝    ╚═════╝ ╚═╝  ╚═╝╚══════╝╚═╝  ╚═══╝
                                                                                   


                                                                             


=== 'MEXP' Token contract with following features ===
    => TRC20 Compliance
    => Higher degree of control by owner - safeguard functionality
    => SafeMath implementation 
    => Burnable and minting ( For MOJI Players)


======================= Quick Stats ===================
    => Name        : "MOJI Experience Points"
    => Symbol      : MEXP
    => Total supply: 0 (Minted only by MOJI players only)
    => Decimals    : 18
*/


//*******************************************************************//
//------------------------ SafeMath Library -------------------------//
//*******************************************************************//
/**
    * @title SafeMath
    * @dev Math operations with safety checks that throw on error
    */
library SafeMath {
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
    if (a == 0) {
        return 0;
    }
    uint256 c = a * b;
    require(c / a == b);
    return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
    // assert(b > 0); // Solidity automatically throws when dividing by 0
    uint256 c = a / b;
    // assert(a == b * c + a % b); // There is no case in which this doesn't hold
    return c;
    }

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

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


//*******************************************************************//
//------------------ Contract to Manage Ownership -------------------//
//*******************************************************************//
    
contract owned {
    address payable public owner;
    address payable private newOwner;

    /**
        Signer is deligated admin wallet, which can do sub-owner functions.
        Signer calls following four functions:
            => claimOwnerTokens
            => distributeMainDividend
            => distributeLeaders1
            => distributeLeaders2
    */
    address public signer;

    event OwnershipTransferred(address indexed _from, address indexed _to);

    constructor() public {
        owner = msg.sender;
        signer = msg.sender;
    }

    modifier onlyOwner {
        require(msg.sender == owner);
        _;
    }

    modifier onlySigner {
        require(msg.sender == signer);
        _;
    }

    function changeSigner(address _signer) public onlyOwner {
        signer = _signer;
    }

    function transferOwnership(address payable _newOwner) public onlyOwner {
        newOwner = _newOwner;
    }

    //this flow is to prevent transferring ownership to wrong wallet by mistake
    function acceptOwnership() public {
        require(msg.sender == newOwner);
        emit OwnershipTransferred(owner, newOwner);
        owner = newOwner;
        newOwner = address(0);
    }
}


//**************************************************************************//
//-------------------    NIFTYMOJI CONTRACT INTERFACE    --------------------//
//**************************************************************************//

interface niftyMoji 
{
    function ownerOf(uint256 tokenId) external view returns (address);
    function powerNLucks(uint256 tokenID) external view returns(uint256, uint256);
    function totalSupply() external view returns(uint256);
} 
    

    
//****************************************************************************//
//---------------------    MEXP MAIN CODE STARTS HERE   ---------------------//
//****************************************************************************//
    
contract MEXPToken is owned {

    /*===============================
    =         DATA STORAGE          =
    ===============================*/

    // Public variables of the token
    using SafeMath for uint256;
    uint256 public withdrawnByAdmin; 
    string public constant name = "MOJI Experience Points";
    string public constant symbol = "MEXP";
    uint256 public constant decimals = 18; 
    uint256 public totalSupply;
    uint256 public burnTracker;     //mainly used in mintToken function..
    uint256 public mintingMultiplier=10000;  // 10000 = 1, 123 = 0.0123 admin can set it minting per day, will be factored as luck %
    address public niftyMojiContractAddress = 0xde544E54a330Abd1eA8a0E6693D46BFe95D9A684;  // admin can set / change this address 
    uint256 public battleFees=1;  // default is 0.000000000000000001 Ether for battle fees, which admin can change
    uint256 public mintTokenFee = 0.001 ether;
    uint256 public battleWinReward= 10**18; // = 1 token with 18 decimal places, admin can change
    uint256 public battleLooseReward = 10**17; // = 0.1 token with 10 decimal places, admin can change
    uint256 public maxBattlePerDay=10;  //daily 10 max battles
    bool public globalHalt; // Emergency Break
    uint256 public lastFinishedIndex;

    // This creates a mapping with all data storage
    mapping (address => uint256) public balanceOf;
    mapping(uint256 => uint256) public totalMintedForTokenId;
    mapping(uint256 => uint256) public totalMintedByOwnerForTokenID;
    mapping(uint256 => uint256) public totalMintedByUserForTokenID;
    mapping(uint256 => uint256) public totalMintedByBattleForTokenID;
    mapping(uint256 => uint256) public dayTracker;
    mapping (address => mapping (address => uint256)) public allowance;
    
    mapping(address => uint256) public BattleCountEndTime;
    mapping (address => uint256) public userBattleCount;
    mapping(address => bool) public blackListedUser;
    mapping(uint256 => bool) public blackListedToken;
    


    struct battleInfo
    {
        uint256 tokenID;
        uint256 userSeed;
        uint256 rewardAmount;
        uint256 blockNo;
        uint256 opponentTokenID;
    }

    battleInfo[] public battleInfos;

    /*===============================
    =         PUBLIC EVENTS         =
    ===============================*/

    // This generates a public event of token transfer
    event Transfer(address indexed from, address indexed to, uint256 value);

    // This notifies clients about the amount burnt
    event Burn(address indexed indexed from, uint256 value);

    // This trackes approvals
    event Approval(address indexed owner, address indexed spender, uint256 value );

    /*======================================
    =       STANDARD TRC20 FUNCTIONS       =
    ======================================*/

    /* Internal transfer, only can be called by this contract */
    function _transfer(address _from, address _to, uint _value) internal {
        
        //checking conditions
        require(!globalHalt, "paused by admin");
        require (_to != address(0x0));                      // Prevent transfer to 0x0 address. Use burn() instead      
        // overflow and undeflow checked by SafeMath Library
        balanceOf[_from] = balanceOf[_from].sub(_value);    // Subtract from the sender
        balanceOf[_to] = balanceOf[_to].add(_value);        // Add the same to the recipient       
        // emit Transfer event
        emit Transfer(_from, _to, _value);
    }

    /**
        * Transfer tokens
        *
        * Send `_value` tokens to `_to` from your account
        *
        * @param _to The address of the recipient
        * @param _value the amount to send
        */
    function transfer(address _to, uint256 _value) public returns (bool success) {
        require(!blackListedUser[msg.sender], "you are not allowed");
        //no need to check for input validations, as that is ruled by SafeMath
        _transfer(msg.sender, _to, _value);
        
        return true;
    }

    /**
        * Transfer tokens from other address
        *
        * Send `_value` tokens to `_to` in behalf of `_from`
        *
        * @param _from The address of the sender
        * @param _to The address of the recipient
        * @param _value the amount to send
        */
    function transferFrom(address _from, address _to, uint256 _value) public returns (bool success) {
        require(!blackListedUser[msg.sender], "you are not allowed");
        //require(_value <= allowance[_from][msg.sender]);     // no need for this condition as it is already checked by SafeMath below
        allowance[_from][msg.sender] = allowance[_from][msg.sender].sub(_value);
        _transfer(_from, _to, _value);
        
        return true;
    }

    /**
        * Set allowance for other address
        *
        * Allows `_spender` to spend no more than `_value` tokens in your behalf
        *
        * @param _spender The address authorized to spend
        * @param _value the max amount they can spend
        */
    function approve(address _spender, uint256 _value) public returns (bool success) {
        require(!blackListedUser[msg.sender], "you are not allowed");
        require(!globalHalt, "paused by admin");
        allowance[msg.sender][_spender] = _value;
        emit Approval(msg.sender, _spender, _value);
        return true;
    }


    /*=====================================
    =       CUSTOM PUBLIC FUNCTIONS       =
    ======================================*/

    /**
        Constructor function
    */
    constructor() public 
    {
        battleInfo memory temp;
        battleInfos.push(temp);
        
    }

    /**
        * Fallback function. It just accepts incoming Ether
    */
    function () payable external {}
    

    /**
        * Destroy tokens
        *
        * Remove `_value` tokens from the system irreversibly
        *
        * @param _value the amount of money to burn
        */
    function burn(uint256 _value) public returns (bool success) {

        require(!globalHalt, "paused by admin");
        require(!blackListedUser[msg.sender], "you are not allowed");
        //checking of enough token balance is done by SafeMath
        balanceOf[msg.sender] = balanceOf[msg.sender].sub(_value);  // Subtract from the sender
        totalSupply = totalSupply.sub(_value);                      // Updates totalSupply
        burnTracker = burnTracker.add(_value);
        
        emit Transfer(msg.sender, address(0), _value);
        //althogh we can track all the "burn" from the Transfer function, we just kept it as it is. As that is no much harm
        emit Burn(msg.sender, _value);
        return true;
    }

    /**
        * Destroy tokens from other account
        *
        * Remove `_value` tokens from the system irreversibly on behalf of `_from`.
        *
        * @param _from the address of the sender
        * @param _value the amount of money to burn
        */
    function burnFrom(address _from, uint256 _value) public returns (bool success) {

        require(!globalHalt, "paused by admin");
        require(!blackListedUser[msg.sender], "you are not allowed");
        //checking of allowance and token value is done by SafeMath
        balanceOf[_from] = balanceOf[_from].sub(_value);                         // Subtract from the targeted balance
        allowance[_from][msg.sender] = allowance[_from][msg.sender].sub(_value); // Subtract from the sender's allowance
        totalSupply = totalSupply.sub(_value);                                   // Update totalSupply
        burnTracker = burnTracker.add(_value);
        
        emit Transfer(_from, address(0), _value);
        emit  Burn(_from, _value);
        return true;
    }

    function mintTokenOwnerOnly(address user, uint256 _tokenID, uint256 tokenAmount) public onlyOwner returns(bool)
    {
        require(user != address(this) && user != address(0), "invalid address" );
        require(tokenAmount > 0 , "Invalid token to mint");
        require(!blackListedToken[_tokenID], "this token is blacklisted");
        if(_tokenID != 0)
        {
            require(niftyMoji(niftyMojiContractAddress).ownerOf(_tokenID) == user,"user is not the owner of this tokenID");
            totalMintedForTokenId[_tokenID] = totalMintedForTokenId[_tokenID].add(tokenAmount);
            totalMintedByOwnerForTokenID[_tokenID] = totalMintedByOwnerForTokenID[_tokenID].add(tokenAmount);
        }
        totalSupply = totalSupply.add(tokenAmount);
        balanceOf[user] = balanceOf[user].add(tokenAmount);
        //emitting Transfer event
        emit Transfer(address(0),user,tokenAmount);
        return true;
    }       


    function blackListUser(address user) public onlyOwner returns(bool)
    {
        blackListedUser[user] = true;
        return true;
    }


    function removeUserFromBlackList(address user) public onlyOwner returns(bool)
    {
        blackListedUser[user] = false;
        return true;
    }




    function blackListToken(uint256 _tokenID) public onlyOwner returns(bool)
    {
        blackListedToken[_tokenID] = true;
        return true;
    }


    function removeTokenFromBlackList(uint256 _tokenID) public onlyOwner returns(bool)
    {
        blackListedToken[_tokenID] = false;
        return true;
    }

    //Minting according to luck percent of the given token id 
    function mintToken(uint256 _tokenID)  public payable returns(bool) {
        require(!globalHalt, "paused by admin");
        address caller = niftyMoji(niftyMojiContractAddress).ownerOf(_tokenID);
        require(!blackListedUser[caller], "you are not allowed");
        require(!blackListedToken[_tokenID], "this token is blacklisted");
        require(caller == msg.sender,"caller is not the owner of this tokenID");
        require(msg.value >= mintTokenFee, 'Not enough token minting fee');
        uint256 dt = dayTracker[_tokenID];
        if (dt != 0)
        {
            uint256 secPassed  =  now - dt ;
            require(secPassed > 0 , "already minted for the day");
            (,uint256 luckPercent ) = niftyMoji(niftyMojiContractAddress).powerNLucks(_tokenID);
            uint256 mintAmount = (( (mintingMultiplier * (10 ** 18) * ((luckPercent + 9 ) / 10 ) ) / 100000 ) /  86400 ) * secPassed ;
            dayTracker[_tokenID] = now ;            
            totalMintedByUserForTokenID[_tokenID] = totalMintedByUserForTokenID[_tokenID].add(mintAmount);
            totalMintedForTokenId[_tokenID] = totalMintedForTokenId[_tokenID].add(mintAmount);
            totalSupply = totalSupply.add(mintAmount);
            balanceOf[caller] = balanceOf[caller].add(mintAmount);
            //emitting Transfer event
            emit Transfer(address(0),caller,mintAmount);
        }
        else
        {
           dayTracker[_tokenID] = now; 
        }
        owner.transfer(msg.value);
        return true;
    }

    function viewAmountIfIMintNow(uint256 _tokenID) public view returns(uint256 amount)
    {
        uint256 dt = dayTracker[_tokenID];
        if (dt != 0)
        {
            uint256 secPassed  =  now - dt ;
            (,uint256 luckPercent ) = niftyMoji(niftyMojiContractAddress).powerNLucks(_tokenID);
            amount = (( (mintingMultiplier * (10 ** 18) * ((luckPercent + 9 ) / 10 ) ) / 100000 ) /  86400 ) * secPassed ;
            return amount;
        }
        else
        {
           return (0);
        }        
    }

    function setMaxBattlePerDay(uint _maxBattlePerDay) public onlyOwner returns (bool)
    {
        maxBattlePerDay = _maxBattlePerDay;
        return true;
    }


    event initiateBattleEv(address caller,uint256 _tokenID,uint256 _userSeed,uint256 battleInfoIndex, uint256 blockNo);
    function initiateBattle(uint256 _tokenID, uint256 _userSeed) public payable returns (uint256 battleID)
    { 
        require(!globalHalt, "paused by admin");
        require(msg.value == battleFees, "Invalid fees amount");
        address caller = niftyMoji(niftyMojiContractAddress).ownerOf(_tokenID);
        require(!blackListedUser[caller], "you are not allowed");
        require(!blackListedToken[_tokenID], "this token is blacklisted");
        require(caller == msg.sender,"caller is not the owner of this tokenID");
        require( userBattleCount[caller] <= maxBattlePerDay, "enough for the day");
        if(BattleCountEndTime[caller] >= now )
        {
            userBattleCount[caller] += 1;
        }
        else
        {
            BattleCountEndTime[caller] = now + 86400;
            userBattleCount[caller] = 1;
        }        
        battleInfo memory temp;
        temp.tokenID = _tokenID;
        temp.userSeed = _userSeed;
        temp.blockNo = block.number;
        battleInfos.push(temp);
        //emitting Transfer event
        battleID = battleInfos.length - 1;
        address(owner).transfer(msg.value);
        emit initiateBattleEv(caller, _tokenID, _userSeed, battleID,block.number );   
        return battleID;
    }


    event finishBattleEv(address user, uint256 battleInfoIndex, uint256 _tokenID, uint256 randomToken, uint256 mintAmount);
    function finishBattle(uint256 _battleInfoIndex,bytes32 blockHashValue) public onlySigner returns (bool)  // returns winning amount minted
    { 
        require(_battleInfoIndex < battleInfos.length, "Invalid Battle Index");
        require(battleInfos[_battleInfoIndex].rewardAmount == 0, "Already finished");
        uint256 _tokenID = battleInfos[_battleInfoIndex].tokenID;
        uint256 _userSeed = battleInfos[_battleInfoIndex].userSeed;
        address caller = niftyMoji(niftyMojiContractAddress).ownerOf(_tokenID);
        bool success;
        uint256 randomToken;
        address randomTokenUser;
        for(uint256 i=0;i<50;i++)
        {
            randomToken = uint256(keccak256(abi.encodePacked(blockHashValue, _userSeed))) % niftyMoji(niftyMojiContractAddress).totalSupply() + 1;
            randomTokenUser = niftyMoji(niftyMojiContractAddress).ownerOf(_tokenID);
            if(blackListedToken[randomToken] || blackListedUser[randomTokenUser])
            {
                _userSeed += block.number%8;
            }
            else
            {
                success = true;
                break;
            }
        }
        require(success, "try again");
        (uint256 powerPercent,uint256 luckPercent ) = niftyMoji(niftyMojiContractAddress).powerNLucks(_tokenID);
        (uint256 powerPercent2,uint256 luckPercent2 ) = niftyMoji(niftyMojiContractAddress).powerNLucks(randomToken); 
        uint256 mintAmount;
        if( powerPercent + luckPercent > powerPercent2 + luckPercent2) 
        {
            mintAmount = battleWinReward ;           
        } 
        else
        {
            mintAmount = battleLooseReward;
        }
        battleInfos[_battleInfoIndex].rewardAmount = mintAmount;
        battleInfos[_battleInfoIndex].opponentTokenID = randomToken;

        emit finishBattleEv(caller,_battleInfoIndex, _tokenID, randomToken, mintAmount);   
        balanceOf[caller] = balanceOf[caller].add(mintAmount);
        totalSupply = totalSupply.add(mintAmount);
        totalMintedForTokenId[_tokenID] = totalMintedForTokenId[_tokenID].add(mintAmount);
        totalMintedByBattleForTokenID[_tokenID] = totalMintedByBattleForTokenID[_tokenID].add(mintAmount);
        dayTracker[_tokenID] = now;
        lastFinishedIndex = _battleInfoIndex;                       
        emit Transfer(address(0),caller,mintAmount);
        return true;
    }

    function multipleFinishBattle (bytes32[] memory _blockHashValue) public onlySigner returns(bool)
    {
        uint i;

        for(i=0;i<_blockHashValue.length;i++)
        {
           require(finishBattle(lastFinishedIndex + i + 1,_blockHashValue[i]),"could not fihish battle");
        }
        return true;
    }

    function lastUnFinishedIndexNBlock() public view returns (uint256 lastUnFinishedIndex, uint256 blockNo)
    {
        uint len = battleInfos.length-1;
        if(len >  lastFinishedIndex)
        {
            return (lastFinishedIndex +1, battleInfos[lastFinishedIndex +1].blockNo);
        }
        else
        {
            return (0,0);
        }
    }


    function setNiftyMojiContractAddress(address _niftyMojiContractAddress) public onlyOwner returns(bool)
    {
        niftyMojiContractAddress = _niftyMojiContractAddress;
        return true;
    }


    function setMintingMultiplier(uint256 _mintingMultiplier) public onlyOwner returns (bool)
    {
        mintingMultiplier = _mintingMultiplier;
        return true;
    }


    function setbattleFees(uint256 _battleFees) public onlyOwner returns(bool)
    {
        battleFees = _battleFees;
        return true;
    }
    
    function setMintTokenFee(uint256 _mintTokenFee) public onlyOwner returns(bool)
    {
        mintTokenFee = _mintTokenFee;
        return true;
    }
    
    
    

    function setBattleReward(uint256 winReward, uint256 looseReward) public onlyOwner returns(bool)
    {
        battleWinReward = winReward;
        battleLooseReward = looseReward;
        return true;
    }

    /**
        * If global halt is off, then this funtion will on it. And vice versa
        * This also change safeguard for token movement status
    */
    function changeGlobalHalt() onlyOwner public returns(bool) {
        if (globalHalt == false){
            globalHalt = true;
        }
        else{
            globalHalt = false;  
        }
        return true;
    }

 

    /**
        * Function to check Ether balance in this contract
    */
    function totalEtherbalanceContract() public view returns(uint256){
        return address(this).balance;
    }


    /**
     * Just in rare case, owner wants to transfer Ether from contract to owner address
     */
    function manualWithdrawEtherAdmin(uint64 Amount) public onlyOwner returns (bool){
        require (address(this).balance >= Amount);
        address(owner).transfer(Amount);
        withdrawnByAdmin = withdrawnByAdmin.add(Amount);
        return true;
    }


}

Contract Security Audit

Contract ABI

[{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Burn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_from","type":"address"},{"indexed":true,"internalType":"address","name":"_to","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"battleInfoIndex","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_tokenID","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"randomToken","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"mintAmount","type":"uint256"}],"name":"finishBattleEv","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"caller","type":"address"},{"indexed":false,"internalType":"uint256","name":"_tokenID","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_userSeed","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"battleInfoIndex","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"blockNo","type":"uint256"}],"name":"initiateBattleEv","type":"event"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"BattleCountEndTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"acceptOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_spender","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"battleFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"battleInfos","outputs":[{"internalType":"uint256","name":"tokenID","type":"uint256"},{"internalType":"uint256","name":"userSeed","type":"uint256"},{"internalType":"uint256","name":"rewardAmount","type":"uint256"},{"internalType":"uint256","name":"blockNo","type":"uint256"},{"internalType":"uint256","name":"opponentTokenID","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"battleLooseReward","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"battleWinReward","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_tokenID","type":"uint256"}],"name":"blackListToken","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"blackListUser","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"blackListedToken","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"blackListedUser","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"burn","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"burnFrom","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"burnTracker","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"changeGlobalHalt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_signer","type":"address"}],"name":"changeSigner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"dayTracker","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_battleInfoIndex","type":"uint256"},{"internalType":"bytes32","name":"blockHashValue","type":"bytes32"}],"name":"finishBattle","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"globalHalt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_tokenID","type":"uint256"},{"internalType":"uint256","name":"_userSeed","type":"uint256"}],"name":"initiateBattle","outputs":[{"internalType":"uint256","name":"battleID","type":"uint256"}],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"lastFinishedIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"lastUnFinishedIndexNBlock","outputs":[{"internalType":"uint256","name":"lastUnFinishedIndex","type":"uint256"},{"internalType":"uint256","name":"blockNo","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint64","name":"Amount","type":"uint64"}],"name":"manualWithdrawEtherAdmin","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"maxBattlePerDay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_tokenID","type":"uint256"}],"name":"mintToken","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"mintTokenFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"_tokenID","type":"uint256"},{"internalType":"uint256","name":"tokenAmount","type":"uint256"}],"name":"mintTokenOwnerOnly","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"mintingMultiplier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"bytes32[]","name":"_blockHashValue","type":"bytes32[]"}],"name":"multipleFinishBattle","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"niftyMojiContractAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"internalType":"address payable","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_tokenID","type":"uint256"}],"name":"removeTokenFromBlackList","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"removeUserFromBlackList","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"winReward","type":"uint256"},{"internalType":"uint256","name":"looseReward","type":"uint256"}],"name":"setBattleReward","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_maxBattlePerDay","type":"uint256"}],"name":"setMaxBattlePerDay","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_mintTokenFee","type":"uint256"}],"name":"setMintTokenFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_mintingMultiplier","type":"uint256"}],"name":"setMintingMultiplier","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_niftyMojiContractAddress","type":"address"}],"name":"setNiftyMojiContractAddress","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_battleFees","type":"uint256"}],"name":"setbattleFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"signer","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalEtherbalanceContract","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"totalMintedByBattleForTokenID","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"totalMintedByOwnerForTokenID","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"totalMintedByUserForTokenID","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"totalMintedForTokenId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address payable","name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"userBattleCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"_tokenID","type":"uint256"}],"name":"viewAmountIfIMintNow","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"withdrawnByAdmin","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"}]

608060405261271060065573de544e54a330abd1ea8a0e6693d46bfe95d9a684600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160085566038d7ea4c68000600955670de0b6b3a7640000600a5567016345785d8a0000600b55600a600c553480156200009957600080fd5b50336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620001256200018f565b601a8190806001815401808255809150509060018203906000526020600020906005020160009091929091909150600082015181600001556020820151816001015560408201518160020155606082015181600301556080820151816004015550505050620001be565b6040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b6150d780620001ce6000396000f3fe6080604052600436106103765760003560e01c8063720099b3116101d1578063bfeb0ea811610102578063d74c5d92116100a0578063f47cf2391161006f578063f47cf239146114ea578063f57ca6d31461154f578063f603a048146115b8578063f7e1d2be146115e357610376565b8063d74c5d9214611356578063dd62ed3e146113c1578063ec9aca7814611446578063f2fde38b1461149957610376565b8063cb77baa7116100dc578063cb77baa714611168578063d295e90e14611245578063d306254d146112ae578063d724129d146112d957610376565b8063bfeb0ea814611080578063c634d032146110cf578063c6b58ccb1461111557610376565b8063a4aa3e031161016f578063aad2b72311610149578063aad2b72314610f62578063b03c1abc14610fb3578063bc10670414610fde578063bd5addb71461102d57610376565b8063a4aa3e0314610e3b578063a7fad26b14610e8a578063a9059cbb14610eef57610376565b80637c1017d2116101ab5780637c1017d214610ca45780638da5cb5b14610cf757806395d89b4114610d4e57806395eb3e4f14610dde57610376565b8063720099b314610bc757806379ba509714610c1a57806379cc679014610c3157610376565b8063338211a3116102ab578063457af8f31161024957806358f44c1f1161022357806358f44c1f14610a915780636653efd714610ac05780636feefd2714610b1357806370a0823114610b6257610376565b8063457af8f3146109ef5780634b6f0fdd14610a1a5780635217ea2914610a4557610376565b80633ed70eac116102855780633ed70eac146108bd57806342966c681461091457806343d4df8a14610967578063442e309d1461099257610376565b8063338211a3146108035780633744cc681461083557806337e9da721461086057610376565b806321d510b31161031857806323b872dd116102f257806323b872dd146106a35780632942cd96146107365780632f19063d14610789578063313ce567146107d857610376565b806321d510b3146105b85780632270a6f414610621578063238ac9331461064c57610376565b806310f448f01161035457806310f448f0146104a657806316f3a12d146104f557806318160ddd1461055e5780631d1217151461058957610376565b806306fdde0314610378578063095ea7b3146104085780630aed3f761461047b575b005b34801561038457600080fd5b5061038d61160e565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156103cd5780820151818401526020810190506103b2565b50505050905090810190601f1680156103fa5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561041457600080fd5b506104616004803603604081101561042b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611647565b604051808215151515815260200191505060405180910390f35b34801561048757600080fd5b5061049061187c565b6040518082815260200191505060405180910390f35b3480156104b257600080fd5b506104df600480360360208110156104c957600080fd5b8101908080359060200190929190505050611882565b6040518082815260200191505060405180910390f35b34801561050157600080fd5b506105446004803603602081101561051857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506119b4565b604051808215151515815260200191505060405180910390f35b34801561056a57600080fd5b50610573611a70565b6040518082815260200191505060405180910390f35b34801561059557600080fd5b5061059e611a76565b604051808215151515815260200191505060405180910390f35b3480156105c457600080fd5b50610607600480360360208110156105db57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611b30565b604051808215151515815260200191505060405180910390f35b34801561062d57600080fd5b50610636611b50565b6040518082815260200191505060405180910390f35b34801561065857600080fd5b50610661611b56565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156106af57600080fd5b5061071c600480360360608110156106c657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611b7c565b604051808215151515815260200191505060405180910390f35b34801561074257600080fd5b5061076f6004803603602081101561075957600080fd5b8101908080359060200190929190505050611d63565b604051808215151515815260200191505060405180910390f35b34801561079557600080fd5b506107c2600480360360208110156107ac57600080fd5b8101908080359060200190929190505050611dce565b6040518082815260200191505060405180910390f35b3480156107e457600080fd5b506107ed611de6565b6040518082815260200191505060405180910390f35b34801561080f57600080fd5b50610818611deb565b604051808381526020018281526020019250505060405180910390f35b34801561084157600080fd5b5061084a611e4c565b6040518082815260200191505060405180910390f35b34801561086c57600080fd5b506108a36004803603602081101561088357600080fd5b81019080803567ffffffffffffffff169060200190929190505050611e52565b604051808215151515815260200191505060405180910390f35b3480156108c957600080fd5b506108d2611f64565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561092057600080fd5b5061094d6004803603602081101561093757600080fd5b8101908080359060200190929190505050611f8a565b604051808215151515815260200191505060405180910390f35b34801561097357600080fd5b5061097c612257565b6040518082815260200191505060405180910390f35b34801561099e57600080fd5b506109d5600480360360408110156109b557600080fd5b81019080803590602001909291908035906020019092919050505061225d565b604051808215151515815260200191505060405180910390f35b3480156109fb57600080fd5b50610a046122d0565b6040518082815260200191505060405180910390f35b348015610a2657600080fd5b50610a2f6122d6565b6040518082815260200191505060405180910390f35b610a7b60048036036040811015610a5b57600080fd5b8101908080359060200190929190803590602001909291905050506122dc565b6040518082815260200191505060405180910390f35b348015610a9d57600080fd5b50610aa66129cb565b604051808215151515815260200191505060405180910390f35b348015610acc57600080fd5b50610af960048036036020811015610ae357600080fd5b81019080803590602001909291905050506129de565b604051808215151515815260200191505060405180910390f35b348015610b1f57600080fd5b50610b4c60048036036020811015610b3657600080fd5b81019080803590602001909291905050506129fe565b6040518082815260200191505060405180910390f35b348015610b6e57600080fd5b50610bb160048036036020811015610b8557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612a16565b6040518082815260200191505060405180910390f35b348015610bd357600080fd5b50610c0060048036036020811015610bea57600080fd5b8101908080359060200190929190505050612a2e565b604051808215151515815260200191505060405180910390f35b348015610c2657600080fd5b50610c2f612a99565b005b348015610c3d57600080fd5b50610c8a60048036036040811015610c5457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612c36565b604051808215151515815260200191505060405180910390f35b348015610cb057600080fd5b50610cdd60048036036020811015610cc757600080fd5b8101908080359060200190929190505050613013565b604051808215151515815260200191505060405180910390f35b348015610d0357600080fd5b50610d0c61307e565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610d5a57600080fd5b50610d636130a3565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610da3578082015181840152602081019050610d88565b50505050905090810190601f168015610dd05780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610dea57600080fd5b50610e2160048036036040811015610e0157600080fd5b8101908080359060200190929190803590602001909291905050506130dc565b604051808215151515815260200191505060405180910390f35b348015610e4757600080fd5b50610e7460048036036020811015610e5e57600080fd5b8101908080359060200190929190505050613a23565b6040518082815260200191505060405180910390f35b348015610e9657600080fd5b50610ed960048036036020811015610ead57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613a3b565b6040518082815260200191505060405180910390f35b348015610efb57600080fd5b50610f4860048036036040811015610f1257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050613a53565b604051808215151515815260200191505060405180910390f35b348015610f6e57600080fd5b50610fb160048036036020811015610f8557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613b2a565b005b348015610fbf57600080fd5b50610fc8613bc7565b6040518082815260200191505060405180910390f35b348015610fea57600080fd5b506110176004803603602081101561100157600080fd5b8101908080359060200190929190505050613bcd565b6040518082815260200191505060405180910390f35b34801561103957600080fd5b506110666004803603602081101561105057600080fd5b8101908080359060200190929190505050613be5565b604051808215151515815260200191505060405180910390f35b34801561108c57600080fd5b506110b9600480360360208110156110a357600080fd5b8101908080359060200190929190505050613c50565b6040518082815260200191505060405180910390f35b6110fb600480360360208110156110e557600080fd5b8101908080359060200190929190505050613c68565b604051808215151515815260200191505060405180910390f35b34801561112157600080fd5b5061114e6004803603602081101561113857600080fd5b81019080803590602001909291905050506143be565b604051808215151515815260200191505060405180910390f35b34801561117457600080fd5b5061122b6004803603602081101561118b57600080fd5b81019080803590602001906401000000008111156111a857600080fd5b8201836020820111156111ba57600080fd5b803590602001918460208302840111640100000000831117156111dc57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f82011690508083019250505050505050919291929050505061444e565b604051808215151515815260200191505060405180910390f35b34801561125157600080fd5b506112946004803603602081101561126857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050614566565b604051808215151515815260200191505060405180910390f35b3480156112ba57600080fd5b506112c3614622565b6040518082815260200191505060405180910390f35b3480156112e557600080fd5b5061133c600480360360608110156112fc57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190505050614628565b604051808215151515815260200191505060405180910390f35b34801561136257600080fd5b5061138f6004803603602081101561137957600080fd5b8101908080359060200190929190505050614b3d565b604051808681526020018581526020018481526020018381526020018281526020019550505050505060405180910390f35b3480156113cd57600080fd5b50611430600480360360408110156113e457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050614b80565b6040518082815260200191505060405180910390f35b34801561145257600080fd5b5061147f6004803603602081101561146957600080fd5b8101908080359060200190929190505050614ba5565b604051808215151515815260200191505060405180910390f35b3480156114a557600080fd5b506114e8600480360360208110156114bc57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050614c35565b005b3480156114f657600080fd5b506115396004803603602081101561150d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050614cd2565b6040518082815260200191505060405180910390f35b34801561155b57600080fd5b5061159e6004803603602081101561157257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050614cea565b604051808215151515815260200191505060405180910390f35b3480156115c457600080fd5b506115cd614d8f565b6040518082815260200191505060405180910390f35b3480156115ef57600080fd5b506115f8614d97565b6040518082815260200191505060405180910390f35b6040518060400160405280601681526020017f4d4f4a4920457870657269656e636520506f696e74730000000000000000000081525081565b6000601860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611709576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f796f7520617265206e6f7420616c6c6f7765640000000000000000000000000081525060200191505060405180910390fd5b600d60009054906101000a900460ff161561178c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f7061757365642062792061646d696e000000000000000000000000000000000081525060200191505060405180910390fd5b81601560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b600c5481565b60008060146000848152602001908152602001600020549050600081146119a957600081420390506000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638a4a33be866040518263ffffffff1660e01b815260040180828152602001915050604080518083038186803b15801561191e57600080fd5b505afa158015611932573d6000803e3d6000fd5b505050506040513d604081101561194857600080fd5b8101908080519060200190929190805190602001909291905050509150508162015180620186a0600a600985018161197c57fe5b04670de0b6b3a764000060065402028161199257fe5b048161199a57fe5b040293508393505050506119af565b60009150505b919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611a0f57600080fd5b6001601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060019050919050565b60045481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611ad157600080fd5b60001515600d60009054906101000a900460ff1615151415611b0d576001600d60006101000a81548160ff021916908315150217905550611b29565b6000600d60006101000a81548160ff0219169083151502179055505b6001905090565b60186020528060005260406000206000915054906101000a900460ff1681565b60035481565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611c3e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f796f7520617265206e6f7420616c6c6f7765640000000000000000000000000081525060200191505060405180910390fd5b611ccd82601560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054614d9d90919063ffffffff16565b601560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611d58848484614db7565b600190509392505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611dbe57600080fd5b8160088190555060019050919050565b60126020528060005260406000206000915090505481565b601281565b60008060006001601a80549050039050600e54811115611e39576001600e5401601a6001600e540181548110611e1d57fe5b9060005260206000209060050201600301549250925050611e48565b60008081915080905092509250505b9091565b60095481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611ead57600080fd5b8167ffffffffffffffff16471015611ec457600080fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8367ffffffffffffffff169081150290604051600060405180830381858888f19350505050158015611f35573d6000803e3d6000fd5b50611f558267ffffffffffffffff1660035461500890919063ffffffff16565b60038190555060019050919050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600d60009054906101000a900460ff161561200f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f7061757365642062792061646d696e000000000000000000000000000000000081525060200191505060405180910390fd5b601860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156120cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f796f7520617265206e6f7420616c6c6f7765640000000000000000000000000081525060200191505060405180910390fd5b61212182600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054614d9d90919063ffffffff16565b600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061217982600454614d9d90919063ffffffff16565b6004819055506121948260055461500890919063ffffffff16565b600581905550600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a33373ffffffffffffffffffffffffffffffffffffffff167fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5836040518082815260200191505060405180910390a260019050919050565b600a5481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146122b857600080fd5b82600a8190555081600b819055506001905092915050565b60065481565b600b5481565b6000600d60009054906101000a900460ff1615612361576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f7061757365642062792061646d696e000000000000000000000000000000000081525060200191505060405180910390fd5b60085434146123d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f496e76616c6964206665657320616d6f756e740000000000000000000000000081525060200191505060405180910390fd5b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e856040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561244d57600080fd5b505afa158015612461573d6000803e3d6000fd5b505050506040513d602081101561247757600080fd5b81019080805190602001909291905050509050601860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561254a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f796f7520617265206e6f7420616c6c6f7765640000000000000000000000000081525060200191505060405180910390fd5b6019600085815260200190815260200160002060009054906101000a900460ff16156125de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f7468697320746f6b656e20697320626c61636b6c69737465640000000000000081525060200191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614612662576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602781526020018061507c6027913960400191505060405180910390fd5b600c54601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115612719576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f656e6f75676820666f722074686520646179000000000000000000000000000081525060200191505060405180910390fd5b42601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054106127b2576001601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550612841565b620151804201601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b612849615027565b848160000181815250508381602001818152505043816060018181525050601a819080600181540180825580915050906001820390600052602060002090600502016000909192909190915060008201518160000155602082015181600101556040820151816002015560608201518160030155608082015181600401555050506001601a805490500392506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f1935050505015801561293c573d6000803e3d6000fd5b507f819675e3cfbb4ad979e64dcee5bde4df78a7a9fef443648b640e108849b5f8658286868643604051808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018581526020018481526020018381526020018281526020019550505050505060405180910390a1829250505092915050565b600d60009054906101000a900460ff1681565b60196020528060005260406000206000915054906101000a900460ff1681565b60116020528060005260406000206000915090505481565b600f6020528060005260406000206000915090505481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612a8957600080fd5b8160098190555060019050919050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612af357600080fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000600d60009054906101000a900460ff1615612cbb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f7061757365642062792061646d696e000000000000000000000000000000000081525060200191505060405180910390fd5b601860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612d7b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f796f7520617265206e6f7420616c6c6f7765640000000000000000000000000081525060200191505060405180910390fd5b612dcd82600f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054614d9d90919063ffffffff16565b600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612e9f82601560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054614d9d90919063ffffffff16565b601560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612f3482600454614d9d90919063ffffffff16565b600481905550612f4f8260055461500890919063ffffffff16565b600581905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a38273ffffffffffffffffffffffffffffffffffffffff167fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5836040518082815260200191505060405180910390a26001905092915050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461306e57600080fd5b8160068190555060019050919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6040518060400160405280600481526020017f4d4558500000000000000000000000000000000000000000000000000000000081525081565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461313857600080fd5b601a8054905083106131b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f496e76616c696420426174746c6520496e64657800000000000000000000000081525060200191505060405180910390fd5b6000601a84815481106131c157fe5b90600052602060002090600502016002015414613246576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f416c72656164792066696e69736865640000000000000000000000000000000081525060200191505060405180910390fd5b6000601a848154811061325557fe5b90600052602060002090600502016000015490506000601a858154811061327857fe5b90600052602060002090600502016001015490506000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e846040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561330157600080fd5b505afa158015613315573d6000803e3d6000fd5b505050506040513d602081101561332b57600080fd5b81019080805190602001909291905050509050600080600080600090505b6032811015613588576001600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156133bc57600080fd5b505afa1580156133d0573d6000803e3d6000fd5b505050506040513d60208110156133e657600080fd5b81019080805190602001909291905050508a8860405160200180838152602001828152602001925050506040516020818303038152906040528051906020012060001c8161343057fe5b06019250600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e886040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b1580156134a757600080fd5b505afa1580156134bb573d6000803e3d6000fd5b505050506040513d60208110156134d157600080fd5b810190808051906020019092919050505091506019600084815260200190815260200160002060009054906101000a900460ff16806135595750601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15613572576008438161356857fe5b068601955061357b565b60019350613588565b8080600101915050613349565b50826135fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260098152602001807f74727920616761696e000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b600080600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638a4a33be896040518263ffffffff1660e01b815260040180828152602001915050604080518083038186803b15801561367157600080fd5b505afa158015613685573d6000803e3d6000fd5b505050506040513d604081101561369b57600080fd5b81019080805190602001909291908051906020019092919050505091509150600080600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638a4a33be876040518263ffffffff1660e01b815260040180828152602001915050604080518083038186803b15801561372f57600080fd5b505afa158015613743573d6000803e3d6000fd5b505050506040513d604081101561375957600080fd5b810190808051906020019092919080519060200190929190505050915091506000818301848601111561379057600a549050613796565b600b5490505b80601a8f815481106137a457fe5b90600052602060002090600502016002018190555086601a8f815481106137c757fe5b9060005260206000209060050201600401819055507fbb6c6c2435370cfd3b48e76bc7598863c9e7a07ec23742dc69ecdcf837e7122e898f8d8a85604051808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018581526020018481526020018381526020018281526020019550505050505060405180910390a16138b181600f60008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461500890919063ffffffff16565b600f60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506139098160045461500890919063ffffffff16565b60048190555061393581601060008e81526020019081526020016000205461500890919063ffffffff16565b601060008d81526020019081526020016000208190555061397281601360008e81526020019081526020016000205461500890919063ffffffff16565b601360008d81526020019081526020016000208190555042601460008d8152602001908152602001600020819055508d600e819055508873ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a360019b50505050505050505050505092915050565b60146020528060005260406000206000915090505481565b60166020528060005260406000206000915090505481565b6000601860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613b15576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f796f7520617265206e6f7420616c6c6f7765640000000000000000000000000081525060200191505060405180910390fd5b613b20338484614db7565b6001905092915050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614613b8357600080fd5b80600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60085481565b60106020528060005260406000206000915090505481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614613c4057600080fd5b81600c8190555060019050919050565b60136020528060005260406000206000915090505481565b6000600d60009054906101000a900460ff1615613ced576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f7061757365642062792061646d696e000000000000000000000000000000000081525060200191505060405180910390fd5b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e846040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015613d6257600080fd5b505afa158015613d76573d6000803e3d6000fd5b505050506040513d6020811015613d8c57600080fd5b81019080805190602001909291905050509050601860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613e5f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f796f7520617265206e6f7420616c6c6f7765640000000000000000000000000081525060200191505060405180910390fd5b6019600084815260200190815260200160002060009054906101000a900460ff1615613ef3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f7468697320746f6b656e20697320626c61636b6c69737465640000000000000081525060200191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614613f77576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602781526020018061507c6027913960400191505060405180910390fd5b600954341015613fef576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f4e6f7420656e6f75676820746f6b656e206d696e74696e67206665650000000081525060200191505060405180910390fd5b6000601460008581526020019081526020016000205490506000811461433257600081420390506000811161408c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f616c7265616479206d696e74656420666f72207468652064617900000000000081525060200191505060405180910390fd5b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638a4a33be876040518263ffffffff1660e01b815260040180828152602001915050604080518083038186803b15801561410057600080fd5b505afa158015614114573d6000803e3d6000fd5b505050506040513d604081101561412a57600080fd5b81019080805190602001909291908051906020019092919050505091505060008262015180620186a0600a600986018161416057fe5b04670de0b6b3a764000060065402028161417657fe5b048161417e57fe5b040290504260146000898152602001908152602001600020819055506141c081601260008a81526020019081526020016000205461500890919063ffffffff16565b60126000898152602001908152602001600020819055506141fd81601060008a81526020019081526020016000205461500890919063ffffffff16565b60106000898152602001908152602001600020819055506142298160045461500890919063ffffffff16565b60048190555061428181600f60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461500890919063ffffffff16565b600f60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a350505061434b565b4260146000868152602001908152602001600020819055505b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f193505050501580156143b2573d6000803e3d6000fd5b50600192505050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461441957600080fd5b60016019600084815260200190815260200160002060006101000a81548160ff02191690831515021790555060019050919050565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146144aa57600080fd5b60008090505b825181101561455c576144dd600182600e5401018483815181106144d057fe5b60200260200101516130dc565b61454f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f636f756c64206e6f742066696869736820626174746c6500000000000000000081525060200191505060405180910390fd5b80806001019150506144b0565b6001915050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146145c157600080fd5b6000601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060019050919050565b60055481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461468357600080fd5b3073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156146ec5750600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b61475e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f696e76616c69642061646472657373000000000000000000000000000000000081525060200191505060405180910390fd5b600082116147d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f496e76616c696420746f6b656e20746f206d696e74000000000000000000000081525060200191505060405180910390fd5b6019600084815260200190815260200160002060009054906101000a900460ff1615614868576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f7468697320746f6b656e20697320626c61636b6c69737465640000000000000081525060200191505060405180910390fd5b60008314614a1c578373ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e856040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b1580156148fa57600080fd5b505afa15801561490e573d6000803e3d6000fd5b505050506040513d602081101561492457600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff16146149a1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806150576025913960400191505060405180910390fd5b6149c782601060008681526020019081526020016000205461500890919063ffffffff16565b6010600085815260200190815260200160002081905550614a0482601160008681526020019081526020016000205461500890919063ffffffff16565b60116000858152602001908152602001600020819055505b614a318260045461500890919063ffffffff16565b600481905550614a8982600f60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461500890919063ffffffff16565b600f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b601a8181548110614b4a57fe5b90600052602060002090600502016000915090508060000154908060010154908060020154908060030154908060040154905085565b6015602052816000526040600020602052806000526040600020600091509150505481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614614c0057600080fd5b60006019600084815260200190815260200160002060006101000a81548160ff02191690831515021790555060019050919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614614c8e57600080fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60176020528060005260406000206000915090505481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614614d4557600080fd5b81600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060019050919050565b600047905090565b600e5481565b600082821115614dac57600080fd5b818303905092915050565b600d60009054906101000a900460ff1615614e3a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f7061757365642062792061646d696e000000000000000000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415614e7457600080fd5b614ec681600f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054614d9d90919063ffffffff16565b600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614f5b81600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461500890919063ffffffff16565b600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b60008082840190508381101561501d57600080fd5b8091505092915050565b6040518060a001604052806000815260200160008152602001600081526020016000815260200160008152509056fe75736572206973206e6f7420746865206f776e6572206f66207468697320746f6b656e494463616c6c6572206973206e6f7420746865206f776e6572206f66207468697320746f6b656e4944a265627a7a72315820d03bbef45985d0fd5e814bc60d0bb7191b6b2252b29fa6479cd2497ca6bd0ab164736f6c63430005100032

Deployed Bytecode

0x6080604052600436106103765760003560e01c8063720099b3116101d1578063bfeb0ea811610102578063d74c5d92116100a0578063f47cf2391161006f578063f47cf239146114ea578063f57ca6d31461154f578063f603a048146115b8578063f7e1d2be146115e357610376565b8063d74c5d9214611356578063dd62ed3e146113c1578063ec9aca7814611446578063f2fde38b1461149957610376565b8063cb77baa7116100dc578063cb77baa714611168578063d295e90e14611245578063d306254d146112ae578063d724129d146112d957610376565b8063bfeb0ea814611080578063c634d032146110cf578063c6b58ccb1461111557610376565b8063a4aa3e031161016f578063aad2b72311610149578063aad2b72314610f62578063b03c1abc14610fb3578063bc10670414610fde578063bd5addb71461102d57610376565b8063a4aa3e0314610e3b578063a7fad26b14610e8a578063a9059cbb14610eef57610376565b80637c1017d2116101ab5780637c1017d214610ca45780638da5cb5b14610cf757806395d89b4114610d4e57806395eb3e4f14610dde57610376565b8063720099b314610bc757806379ba509714610c1a57806379cc679014610c3157610376565b8063338211a3116102ab578063457af8f31161024957806358f44c1f1161022357806358f44c1f14610a915780636653efd714610ac05780636feefd2714610b1357806370a0823114610b6257610376565b8063457af8f3146109ef5780634b6f0fdd14610a1a5780635217ea2914610a4557610376565b80633ed70eac116102855780633ed70eac146108bd57806342966c681461091457806343d4df8a14610967578063442e309d1461099257610376565b8063338211a3146108035780633744cc681461083557806337e9da721461086057610376565b806321d510b31161031857806323b872dd116102f257806323b872dd146106a35780632942cd96146107365780632f19063d14610789578063313ce567146107d857610376565b806321d510b3146105b85780632270a6f414610621578063238ac9331461064c57610376565b806310f448f01161035457806310f448f0146104a657806316f3a12d146104f557806318160ddd1461055e5780631d1217151461058957610376565b806306fdde0314610378578063095ea7b3146104085780630aed3f761461047b575b005b34801561038457600080fd5b5061038d61160e565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156103cd5780820151818401526020810190506103b2565b50505050905090810190601f1680156103fa5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561041457600080fd5b506104616004803603604081101561042b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611647565b604051808215151515815260200191505060405180910390f35b34801561048757600080fd5b5061049061187c565b6040518082815260200191505060405180910390f35b3480156104b257600080fd5b506104df600480360360208110156104c957600080fd5b8101908080359060200190929190505050611882565b6040518082815260200191505060405180910390f35b34801561050157600080fd5b506105446004803603602081101561051857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506119b4565b604051808215151515815260200191505060405180910390f35b34801561056a57600080fd5b50610573611a70565b6040518082815260200191505060405180910390f35b34801561059557600080fd5b5061059e611a76565b604051808215151515815260200191505060405180910390f35b3480156105c457600080fd5b50610607600480360360208110156105db57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611b30565b604051808215151515815260200191505060405180910390f35b34801561062d57600080fd5b50610636611b50565b6040518082815260200191505060405180910390f35b34801561065857600080fd5b50610661611b56565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156106af57600080fd5b5061071c600480360360608110156106c657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611b7c565b604051808215151515815260200191505060405180910390f35b34801561074257600080fd5b5061076f6004803603602081101561075957600080fd5b8101908080359060200190929190505050611d63565b604051808215151515815260200191505060405180910390f35b34801561079557600080fd5b506107c2600480360360208110156107ac57600080fd5b8101908080359060200190929190505050611dce565b6040518082815260200191505060405180910390f35b3480156107e457600080fd5b506107ed611de6565b6040518082815260200191505060405180910390f35b34801561080f57600080fd5b50610818611deb565b604051808381526020018281526020019250505060405180910390f35b34801561084157600080fd5b5061084a611e4c565b6040518082815260200191505060405180910390f35b34801561086c57600080fd5b506108a36004803603602081101561088357600080fd5b81019080803567ffffffffffffffff169060200190929190505050611e52565b604051808215151515815260200191505060405180910390f35b3480156108c957600080fd5b506108d2611f64565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561092057600080fd5b5061094d6004803603602081101561093757600080fd5b8101908080359060200190929190505050611f8a565b604051808215151515815260200191505060405180910390f35b34801561097357600080fd5b5061097c612257565b6040518082815260200191505060405180910390f35b34801561099e57600080fd5b506109d5600480360360408110156109b557600080fd5b81019080803590602001909291908035906020019092919050505061225d565b604051808215151515815260200191505060405180910390f35b3480156109fb57600080fd5b50610a046122d0565b6040518082815260200191505060405180910390f35b348015610a2657600080fd5b50610a2f6122d6565b6040518082815260200191505060405180910390f35b610a7b60048036036040811015610a5b57600080fd5b8101908080359060200190929190803590602001909291905050506122dc565b6040518082815260200191505060405180910390f35b348015610a9d57600080fd5b50610aa66129cb565b604051808215151515815260200191505060405180910390f35b348015610acc57600080fd5b50610af960048036036020811015610ae357600080fd5b81019080803590602001909291905050506129de565b604051808215151515815260200191505060405180910390f35b348015610b1f57600080fd5b50610b4c60048036036020811015610b3657600080fd5b81019080803590602001909291905050506129fe565b6040518082815260200191505060405180910390f35b348015610b6e57600080fd5b50610bb160048036036020811015610b8557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612a16565b6040518082815260200191505060405180910390f35b348015610bd357600080fd5b50610c0060048036036020811015610bea57600080fd5b8101908080359060200190929190505050612a2e565b604051808215151515815260200191505060405180910390f35b348015610c2657600080fd5b50610c2f612a99565b005b348015610c3d57600080fd5b50610c8a60048036036040811015610c5457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612c36565b604051808215151515815260200191505060405180910390f35b348015610cb057600080fd5b50610cdd60048036036020811015610cc757600080fd5b8101908080359060200190929190505050613013565b604051808215151515815260200191505060405180910390f35b348015610d0357600080fd5b50610d0c61307e565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610d5a57600080fd5b50610d636130a3565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610da3578082015181840152602081019050610d88565b50505050905090810190601f168015610dd05780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610dea57600080fd5b50610e2160048036036040811015610e0157600080fd5b8101908080359060200190929190803590602001909291905050506130dc565b604051808215151515815260200191505060405180910390f35b348015610e4757600080fd5b50610e7460048036036020811015610e5e57600080fd5b8101908080359060200190929190505050613a23565b6040518082815260200191505060405180910390f35b348015610e9657600080fd5b50610ed960048036036020811015610ead57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613a3b565b6040518082815260200191505060405180910390f35b348015610efb57600080fd5b50610f4860048036036040811015610f1257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050613a53565b604051808215151515815260200191505060405180910390f35b348015610f6e57600080fd5b50610fb160048036036020811015610f8557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613b2a565b005b348015610fbf57600080fd5b50610fc8613bc7565b6040518082815260200191505060405180910390f35b348015610fea57600080fd5b506110176004803603602081101561100157600080fd5b8101908080359060200190929190505050613bcd565b6040518082815260200191505060405180910390f35b34801561103957600080fd5b506110666004803603602081101561105057600080fd5b8101908080359060200190929190505050613be5565b604051808215151515815260200191505060405180910390f35b34801561108c57600080fd5b506110b9600480360360208110156110a357600080fd5b8101908080359060200190929190505050613c50565b6040518082815260200191505060405180910390f35b6110fb600480360360208110156110e557600080fd5b8101908080359060200190929190505050613c68565b604051808215151515815260200191505060405180910390f35b34801561112157600080fd5b5061114e6004803603602081101561113857600080fd5b81019080803590602001909291905050506143be565b604051808215151515815260200191505060405180910390f35b34801561117457600080fd5b5061122b6004803603602081101561118b57600080fd5b81019080803590602001906401000000008111156111a857600080fd5b8201836020820111156111ba57600080fd5b803590602001918460208302840111640100000000831117156111dc57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f82011690508083019250505050505050919291929050505061444e565b604051808215151515815260200191505060405180910390f35b34801561125157600080fd5b506112946004803603602081101561126857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050614566565b604051808215151515815260200191505060405180910390f35b3480156112ba57600080fd5b506112c3614622565b6040518082815260200191505060405180910390f35b3480156112e557600080fd5b5061133c600480360360608110156112fc57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190505050614628565b604051808215151515815260200191505060405180910390f35b34801561136257600080fd5b5061138f6004803603602081101561137957600080fd5b8101908080359060200190929190505050614b3d565b604051808681526020018581526020018481526020018381526020018281526020019550505050505060405180910390f35b3480156113cd57600080fd5b50611430600480360360408110156113e457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050614b80565b6040518082815260200191505060405180910390f35b34801561145257600080fd5b5061147f6004803603602081101561146957600080fd5b8101908080359060200190929190505050614ba5565b604051808215151515815260200191505060405180910390f35b3480156114a557600080fd5b506114e8600480360360208110156114bc57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050614c35565b005b3480156114f657600080fd5b506115396004803603602081101561150d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050614cd2565b6040518082815260200191505060405180910390f35b34801561155b57600080fd5b5061159e6004803603602081101561157257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050614cea565b604051808215151515815260200191505060405180910390f35b3480156115c457600080fd5b506115cd614d8f565b6040518082815260200191505060405180910390f35b3480156115ef57600080fd5b506115f8614d97565b6040518082815260200191505060405180910390f35b6040518060400160405280601681526020017f4d4f4a4920457870657269656e636520506f696e74730000000000000000000081525081565b6000601860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611709576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f796f7520617265206e6f7420616c6c6f7765640000000000000000000000000081525060200191505060405180910390fd5b600d60009054906101000a900460ff161561178c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f7061757365642062792061646d696e000000000000000000000000000000000081525060200191505060405180910390fd5b81601560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b600c5481565b60008060146000848152602001908152602001600020549050600081146119a957600081420390506000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638a4a33be866040518263ffffffff1660e01b815260040180828152602001915050604080518083038186803b15801561191e57600080fd5b505afa158015611932573d6000803e3d6000fd5b505050506040513d604081101561194857600080fd5b8101908080519060200190929190805190602001909291905050509150508162015180620186a0600a600985018161197c57fe5b04670de0b6b3a764000060065402028161199257fe5b048161199a57fe5b040293508393505050506119af565b60009150505b919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611a0f57600080fd5b6001601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060019050919050565b60045481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611ad157600080fd5b60001515600d60009054906101000a900460ff1615151415611b0d576001600d60006101000a81548160ff021916908315150217905550611b29565b6000600d60006101000a81548160ff0219169083151502179055505b6001905090565b60186020528060005260406000206000915054906101000a900460ff1681565b60035481565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611c3e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f796f7520617265206e6f7420616c6c6f7765640000000000000000000000000081525060200191505060405180910390fd5b611ccd82601560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054614d9d90919063ffffffff16565b601560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611d58848484614db7565b600190509392505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611dbe57600080fd5b8160088190555060019050919050565b60126020528060005260406000206000915090505481565b601281565b60008060006001601a80549050039050600e54811115611e39576001600e5401601a6001600e540181548110611e1d57fe5b9060005260206000209060050201600301549250925050611e48565b60008081915080905092509250505b9091565b60095481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611ead57600080fd5b8167ffffffffffffffff16471015611ec457600080fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8367ffffffffffffffff169081150290604051600060405180830381858888f19350505050158015611f35573d6000803e3d6000fd5b50611f558267ffffffffffffffff1660035461500890919063ffffffff16565b60038190555060019050919050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600d60009054906101000a900460ff161561200f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f7061757365642062792061646d696e000000000000000000000000000000000081525060200191505060405180910390fd5b601860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156120cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f796f7520617265206e6f7420616c6c6f7765640000000000000000000000000081525060200191505060405180910390fd5b61212182600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054614d9d90919063ffffffff16565b600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061217982600454614d9d90919063ffffffff16565b6004819055506121948260055461500890919063ffffffff16565b600581905550600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a33373ffffffffffffffffffffffffffffffffffffffff167fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5836040518082815260200191505060405180910390a260019050919050565b600a5481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146122b857600080fd5b82600a8190555081600b819055506001905092915050565b60065481565b600b5481565b6000600d60009054906101000a900460ff1615612361576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f7061757365642062792061646d696e000000000000000000000000000000000081525060200191505060405180910390fd5b60085434146123d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f496e76616c6964206665657320616d6f756e740000000000000000000000000081525060200191505060405180910390fd5b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e856040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561244d57600080fd5b505afa158015612461573d6000803e3d6000fd5b505050506040513d602081101561247757600080fd5b81019080805190602001909291905050509050601860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561254a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f796f7520617265206e6f7420616c6c6f7765640000000000000000000000000081525060200191505060405180910390fd5b6019600085815260200190815260200160002060009054906101000a900460ff16156125de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f7468697320746f6b656e20697320626c61636b6c69737465640000000000000081525060200191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614612662576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602781526020018061507c6027913960400191505060405180910390fd5b600c54601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115612719576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f656e6f75676820666f722074686520646179000000000000000000000000000081525060200191505060405180910390fd5b42601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054106127b2576001601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550612841565b620151804201601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b612849615027565b848160000181815250508381602001818152505043816060018181525050601a819080600181540180825580915050906001820390600052602060002090600502016000909192909190915060008201518160000155602082015181600101556040820151816002015560608201518160030155608082015181600401555050506001601a805490500392506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f1935050505015801561293c573d6000803e3d6000fd5b507f819675e3cfbb4ad979e64dcee5bde4df78a7a9fef443648b640e108849b5f8658286868643604051808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018581526020018481526020018381526020018281526020019550505050505060405180910390a1829250505092915050565b600d60009054906101000a900460ff1681565b60196020528060005260406000206000915054906101000a900460ff1681565b60116020528060005260406000206000915090505481565b600f6020528060005260406000206000915090505481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612a8957600080fd5b8160098190555060019050919050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612af357600080fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000600d60009054906101000a900460ff1615612cbb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f7061757365642062792061646d696e000000000000000000000000000000000081525060200191505060405180910390fd5b601860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612d7b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f796f7520617265206e6f7420616c6c6f7765640000000000000000000000000081525060200191505060405180910390fd5b612dcd82600f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054614d9d90919063ffffffff16565b600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612e9f82601560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054614d9d90919063ffffffff16565b601560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612f3482600454614d9d90919063ffffffff16565b600481905550612f4f8260055461500890919063ffffffff16565b600581905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a38273ffffffffffffffffffffffffffffffffffffffff167fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5836040518082815260200191505060405180910390a26001905092915050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461306e57600080fd5b8160068190555060019050919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6040518060400160405280600481526020017f4d4558500000000000000000000000000000000000000000000000000000000081525081565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461313857600080fd5b601a8054905083106131b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f496e76616c696420426174746c6520496e64657800000000000000000000000081525060200191505060405180910390fd5b6000601a84815481106131c157fe5b90600052602060002090600502016002015414613246576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f416c72656164792066696e69736865640000000000000000000000000000000081525060200191505060405180910390fd5b6000601a848154811061325557fe5b90600052602060002090600502016000015490506000601a858154811061327857fe5b90600052602060002090600502016001015490506000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e846040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561330157600080fd5b505afa158015613315573d6000803e3d6000fd5b505050506040513d602081101561332b57600080fd5b81019080805190602001909291905050509050600080600080600090505b6032811015613588576001600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156133bc57600080fd5b505afa1580156133d0573d6000803e3d6000fd5b505050506040513d60208110156133e657600080fd5b81019080805190602001909291905050508a8860405160200180838152602001828152602001925050506040516020818303038152906040528051906020012060001c8161343057fe5b06019250600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e886040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b1580156134a757600080fd5b505afa1580156134bb573d6000803e3d6000fd5b505050506040513d60208110156134d157600080fd5b810190808051906020019092919050505091506019600084815260200190815260200160002060009054906101000a900460ff16806135595750601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15613572576008438161356857fe5b068601955061357b565b60019350613588565b8080600101915050613349565b50826135fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260098152602001807f74727920616761696e000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b600080600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638a4a33be896040518263ffffffff1660e01b815260040180828152602001915050604080518083038186803b15801561367157600080fd5b505afa158015613685573d6000803e3d6000fd5b505050506040513d604081101561369b57600080fd5b81019080805190602001909291908051906020019092919050505091509150600080600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638a4a33be876040518263ffffffff1660e01b815260040180828152602001915050604080518083038186803b15801561372f57600080fd5b505afa158015613743573d6000803e3d6000fd5b505050506040513d604081101561375957600080fd5b810190808051906020019092919080519060200190929190505050915091506000818301848601111561379057600a549050613796565b600b5490505b80601a8f815481106137a457fe5b90600052602060002090600502016002018190555086601a8f815481106137c757fe5b9060005260206000209060050201600401819055507fbb6c6c2435370cfd3b48e76bc7598863c9e7a07ec23742dc69ecdcf837e7122e898f8d8a85604051808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018581526020018481526020018381526020018281526020019550505050505060405180910390a16138b181600f60008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461500890919063ffffffff16565b600f60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506139098160045461500890919063ffffffff16565b60048190555061393581601060008e81526020019081526020016000205461500890919063ffffffff16565b601060008d81526020019081526020016000208190555061397281601360008e81526020019081526020016000205461500890919063ffffffff16565b601360008d81526020019081526020016000208190555042601460008d8152602001908152602001600020819055508d600e819055508873ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a360019b50505050505050505050505092915050565b60146020528060005260406000206000915090505481565b60166020528060005260406000206000915090505481565b6000601860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613b15576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f796f7520617265206e6f7420616c6c6f7765640000000000000000000000000081525060200191505060405180910390fd5b613b20338484614db7565b6001905092915050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614613b8357600080fd5b80600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60085481565b60106020528060005260406000206000915090505481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614613c4057600080fd5b81600c8190555060019050919050565b60136020528060005260406000206000915090505481565b6000600d60009054906101000a900460ff1615613ced576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f7061757365642062792061646d696e000000000000000000000000000000000081525060200191505060405180910390fd5b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e846040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015613d6257600080fd5b505afa158015613d76573d6000803e3d6000fd5b505050506040513d6020811015613d8c57600080fd5b81019080805190602001909291905050509050601860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613e5f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f796f7520617265206e6f7420616c6c6f7765640000000000000000000000000081525060200191505060405180910390fd5b6019600084815260200190815260200160002060009054906101000a900460ff1615613ef3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f7468697320746f6b656e20697320626c61636b6c69737465640000000000000081525060200191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614613f77576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602781526020018061507c6027913960400191505060405180910390fd5b600954341015613fef576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f4e6f7420656e6f75676820746f6b656e206d696e74696e67206665650000000081525060200191505060405180910390fd5b6000601460008581526020019081526020016000205490506000811461433257600081420390506000811161408c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f616c7265616479206d696e74656420666f72207468652064617900000000000081525060200191505060405180910390fd5b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638a4a33be876040518263ffffffff1660e01b815260040180828152602001915050604080518083038186803b15801561410057600080fd5b505afa158015614114573d6000803e3d6000fd5b505050506040513d604081101561412a57600080fd5b81019080805190602001909291908051906020019092919050505091505060008262015180620186a0600a600986018161416057fe5b04670de0b6b3a764000060065402028161417657fe5b048161417e57fe5b040290504260146000898152602001908152602001600020819055506141c081601260008a81526020019081526020016000205461500890919063ffffffff16565b60126000898152602001908152602001600020819055506141fd81601060008a81526020019081526020016000205461500890919063ffffffff16565b60106000898152602001908152602001600020819055506142298160045461500890919063ffffffff16565b60048190555061428181600f60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461500890919063ffffffff16565b600f60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a350505061434b565b4260146000868152602001908152602001600020819055505b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f193505050501580156143b2573d6000803e3d6000fd5b50600192505050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461441957600080fd5b60016019600084815260200190815260200160002060006101000a81548160ff02191690831515021790555060019050919050565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146144aa57600080fd5b60008090505b825181101561455c576144dd600182600e5401018483815181106144d057fe5b60200260200101516130dc565b61454f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f636f756c64206e6f742066696869736820626174746c6500000000000000000081525060200191505060405180910390fd5b80806001019150506144b0565b6001915050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146145c157600080fd5b6000601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060019050919050565b60055481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461468357600080fd5b3073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156146ec5750600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b61475e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f696e76616c69642061646472657373000000000000000000000000000000000081525060200191505060405180910390fd5b600082116147d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f496e76616c696420746f6b656e20746f206d696e74000000000000000000000081525060200191505060405180910390fd5b6019600084815260200190815260200160002060009054906101000a900460ff1615614868576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f7468697320746f6b656e20697320626c61636b6c69737465640000000000000081525060200191505060405180910390fd5b60008314614a1c578373ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e856040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b1580156148fa57600080fd5b505afa15801561490e573d6000803e3d6000fd5b505050506040513d602081101561492457600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff16146149a1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806150576025913960400191505060405180910390fd5b6149c782601060008681526020019081526020016000205461500890919063ffffffff16565b6010600085815260200190815260200160002081905550614a0482601160008681526020019081526020016000205461500890919063ffffffff16565b60116000858152602001908152602001600020819055505b614a318260045461500890919063ffffffff16565b600481905550614a8982600f60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461500890919063ffffffff16565b600f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b601a8181548110614b4a57fe5b90600052602060002090600502016000915090508060000154908060010154908060020154908060030154908060040154905085565b6015602052816000526040600020602052806000526040600020600091509150505481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614614c0057600080fd5b60006019600084815260200190815260200160002060006101000a81548160ff02191690831515021790555060019050919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614614c8e57600080fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60176020528060005260406000206000915090505481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614614d4557600080fd5b81600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060019050919050565b600047905090565b600e5481565b600082821115614dac57600080fd5b818303905092915050565b600d60009054906101000a900460ff1615614e3a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f7061757365642062792061646d696e000000000000000000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415614e7457600080fd5b614ec681600f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054614d9d90919063ffffffff16565b600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614f5b81600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461500890919063ffffffff16565b600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b60008082840190508381101561501d57600080fd5b8091505092915050565b6040518060a001604052806000815260200160008152602001600081526020016000815260200160008152509056fe75736572206973206e6f7420746865206f776e6572206f66207468697320746f6b656e494463616c6c6572206973206e6f7420746865206f776e6572206f66207468697320746f6b656e4944a265627a7a72315820d03bbef45985d0fd5e814bc60d0bb7191b6b2252b29fa6479cd2497ca6bd0ab164736f6c63430005100032

Deployed Bytecode Sourcemap

5687:18604:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5953:54;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5953:54:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;5953:54:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10886:337;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10886:337:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;10886:337:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;6845:33;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6845:33:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;16924:549;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16924:549:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;16924:549:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;14642:142;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14642:142:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;14642:142:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;6104:26;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6104:26:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;23476:228;;8:9:-1;5:2;;;30:1;27;20:12;5:2;23476:228:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;7625:47;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7625:47:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7625:47:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;5914:31;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5914:31:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;4052:21;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4052:21:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;10130:466;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10130:466:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;10130:466:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;22761:145;;8:9:-1;5:2;;;30:1;27;20:12;5:2;22761:145:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;22761:145:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;7236:62;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7236:62:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7236:62:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;6059:37;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6059:37:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;21987:369;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21987:369:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;6594:41;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6594:41:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;24022:262;;8:9:-1;5:2;;;30:1;27;20:12;5:2;24022:262:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;24022:262:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;6346:84;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6346:84:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;11845:745;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11845:745:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11845:745:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;6642:38;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6642:38:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;23097:211;;8:9:-1;5:2;;;30:1;27;20:12;5:2;23097:211:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;23097:211:0;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;6212:38;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6212:38:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;6741:41;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6741:41:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;17775:1290;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;17775:1290:0;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;6909:22;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6909:22:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;7679:48;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7679:48:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7679:48:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;7166:63;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7166:63:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7166:63:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;7051:45;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7051:45:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7051:45:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;22918:153;;8:9:-1;5:2;;;30:1;27;20:12;5:2;22918:153:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;22918:153:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;4729:196;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4729:196:0;;;:::i;:::-;;12874:792;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12874:792:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;12874:792:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;22577:174;;8:9:-1;5:2;;;30:1;27;20:12;5:2;22577:174:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;22577:174:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3692:28;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3692:28:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;6014:38;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6014:38:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;6014:38:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19200:2444;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19200:2444:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;19200:2444:0;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;7376:45;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7376:45:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7376:45:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;7507:53;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7507:53:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7507:53:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;9513:313;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9513:313:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;9513:313:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;4431:91;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4431:91:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4431:91:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;6478:27;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6478:27:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;7103:56;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7103:56:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7103:56:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;17481:163;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17481:163:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;17481:163:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;7305:64;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7305:64:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7305:64:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;15358:1558;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;15358:1558:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;14961:152;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14961:152:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;14961:152:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;21652:327;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21652:327:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;21652:327:0;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;21652:327:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;21652:327:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;21652:327:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;21652:327:0;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;14794:153;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14794:153:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;14794:153:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;6137:26;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6137:26:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;13674:951;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13674:951:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;13674:951:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;7927:31;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7927:31:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7927:31:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7428:66;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7428:66:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7428:66:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;15123:163;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15123:163:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;15123:163:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;4530:110;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4530:110:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4530:110:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;7567:51;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7567:51:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7567:51:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;22366:201;;8:9:-1;5:2;;;30:1;27;20:12;5:2;22366:201:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;22366:201:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;23794:112;;8:9:-1;5:2;;;30:1;27;20:12;5:2;23794:112:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;6957:32;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6957:32:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;5953:54;;;;;;;;;;;;;;;;;;;:::o;10886:337::-;10953:12;10987:15;:27;11003:10;10987:27;;;;;;;;;;;;;;;;;;;;;;;;;10986:28;10978:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11058:10;;;;;;;;;;;11057:11;11049:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11133:6;11099:9;:21;11109:10;11099:21;;;;;;;;;;;;;;;:31;11121:8;11099:31;;;;;;;;;;;;;;;:40;;;;11176:8;11155:38;;11164:10;11155:38;;;11186:6;11155:38;;;;;;;;;;;;;;;;;;11211:4;11204:11;;10886:337;;;;:::o;6845:33::-;;;;:::o;16924:549::-;16992:14;17024:10;17037;:20;17048:8;17037:20;;;;;;;;;;;;17024:33;;17078:1;17072:2;:7;17068:390;;17105:17;17133:2;17127:3;:8;17105:30;;17153:19;17187:24;;;;;;;;;;;17177:47;;;17225:8;17177:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17177:57:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17177:57:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;17177:57:0;;;;;;;;;;;;;;;;;;;;;;;;;17151:83;;;17348:9;17338:5;17326:6;17317:2;17311:1;17297:11;:15;17296:23;;;;;;17283:8;17262:17;;:30;:59;17261:71;;;;;;17259:84;;;;;;17258:99;17249:108;;17380:6;17373:13;;;;;;;17068:390;17444:1;17436:10;;;16924:549;;;;:::o;14642:142::-;14704:4;4309:5;;;;;;;;;;;4295:19;;:10;:19;;;4287:28;;;;;;14750:4;14726:15;:21;14742:4;14726:21;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;14772:4;14765:11;;14642:142;;;:::o;6104:26::-;;;;:::o;23476:228::-;23529:4;4309:5;;;;;;;;;;;4295:19;;:10;:19;;;4287:28;;;;;;23564:5;23550:19;;:10;;;;;;;;;;;:19;;;23546:129;;;23598:4;23585:10;;:17;;;;;;;;;;;;;;;;;;23546:129;;;23656:5;23643:10;;:18;;;;;;;;;;;;;;;;;;23546:129;23692:4;23685:11;;23476:228;:::o;7625:47::-;;;;;;;;;;;;;;;;;;;;;;:::o;5914:31::-;;;;:::o;4052:21::-;;;;;;;;;;;;;:::o;10130:466::-;10212:12;10246:15;:27;10262:10;10246:27;;;;;;;;;;;;;;;;;;;;;;;;;10245:28;10237:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10476:40;10509:6;10476:9;:16;10486:5;10476:16;;;;;;;;;;;;;;;:28;10493:10;10476:28;;;;;;;;;;;;;;;;:32;;:40;;;;:::i;:::-;10445:9;:16;10455:5;10445:16;;;;;;;;;;;;;;;:28;10462:10;10445:28;;;;;;;;;;;;;;;:71;;;;10527:29;10537:5;10544:3;10549:6;10527:9;:29::i;:::-;10584:4;10577:11;;10130:466;;;;;:::o;22761:145::-;22830:4;4309:5;;;;;;;;;;;4295:19;;:10;:19;;;4287:28;;;;;;22865:11;22852:10;:24;;;;22894:4;22887:11;;22761:145;;;:::o;7236:62::-;;;;;;;;;;;;;;;;;:::o;6059:37::-;6094:2;6059:37;:::o;21987:369::-;22045:27;22074:15;22107:8;22137:1;22118:11;:18;;;;:20;22107:31;;22159:17;;22152:3;:24;22149:200;;;22229:1;22210:17;;:20;22232:11;22263:1;22244:17;;:20;22232:33;;;;;;;;;;;;;;;;;;:41;;;22202:72;;;;;;;22149:200;22333:1;22335;22325:12;;;;;;;;;;;21987:369;;;:::o;6594:41::-;;;;:::o;24022:262::-;24097:4;4309:5;;;;;;;;;;;4295:19;;:10;:19;;;4287:28;;;;;;24147:6;24122:31;;:21;:31;;24113:41;;;;;;24173:5;;;;;;;;;;;24165:23;;:31;24189:6;24165:31;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;24165:31:0;24226:28;24247:6;24226:28;;:16;;:20;;:28;;;;:::i;:::-;24207:16;:47;;;;24272:4;24265:11;;24022:262;;;:::o;6346:84::-;;;;;;;;;;;;;:::o;11845:745::-;11891:12;11927:10;;;;;;;;;;;11926:11;11918:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11977:15;:27;11993:10;11977:27;;;;;;;;;;;;;;;;;;;;;;;;;11976:28;11968:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12127:33;12153:6;12127:9;:21;12137:10;12127:21;;;;;;;;;;;;;;;;:25;;:33;;;;:::i;:::-;12103:9;:21;12113:10;12103:21;;;;;;;;;;;;;;;:57;;;;12214:23;12230:6;12214:11;;:15;;:23;;;;:::i;:::-;12200:11;:37;;;;12306:23;12322:6;12306:11;;:15;;:23;;;;:::i;:::-;12292:11;:37;;;;12384:1;12355:40;;12364:10;12355:40;;;12388:6;12355:40;;;;;;;;;;;;;;;;;;12541:10;12536:24;;;12553:6;12536:24;;;;;;;;;;;;;;;;;;12578:4;12571:11;;11845:745;;;:::o;6642:38::-;;;;:::o;23097:211::-;23187:4;4309:5;;;;;;;;;;;4295:19;;:10;:19;;;4287:28;;;;;;23227:9;23209:15;:27;;;;23267:11;23247:17;:31;;;;23296:4;23289:11;;23097:211;;;;:::o;6212:38::-;;;;:::o;6741:41::-;;;;:::o;17775:1290::-;17860:16;17904:10;;;;;;;;;;;17903:11;17895:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17966:10;;17953:9;:23;17945:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18011:14;18038:24;;;;;;;;;;;18028:43;;;18072:8;18028:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18028:53:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18028:53:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;18028:53:0;;;;;;;;;;;;;;;;18011:70;;18101:15;:23;18117:6;18101:23;;;;;;;;;;;;;;;;;;;;;;;;;18100:24;18092:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18168:16;:26;18185:8;18168:26;;;;;;;;;;;;;;;;;;;;;18167:27;18159:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18253:10;18243:20;;:6;:20;;;18235:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18353:15;;18326;:23;18342:6;18326:23;;;;;;;;;;;;;;;;:42;;18317:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18435:3;18405:18;:26;18424:6;18405:26;;;;;;;;;;;;;;;;:33;18402:236;;18492:1;18465:15;:23;18481:6;18465:23;;;;;;;;;;;;;;;;:28;;;;;;;;;;;18402:236;;;18579:5;18573:3;:11;18544:18;:26;18563:6;18544:26;;;;;;;;;;;;;;;:40;;;;18625:1;18599:15;:23;18615:6;18599:23;;;;;;;;;;;;;;;:27;;;;18402:236;18656:22;;:::i;:::-;18704:8;18689:4;:12;;:23;;;;;18739:9;18723:4;:13;;:25;;;;;18774:12;18759:4;:12;;:27;;;;;18797:11;18814:4;18797:22;;39:1:-1;33:3;27:10;23:18;57:10;52:3;45:23;79:10;72:17;;0:93;18797:22:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18897:1;18876:11;:18;;;;:22;18865:33;;18917:5;;;;;;;;;;;18909:23;;:34;18933:9;18909:34;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18909:34:0;18959:69;18976:6;18984:8;18994:9;19005:8;19014:12;18959:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19049:8;19042:15;;;;17775:1290;;;;:::o;6909:22::-;;;;;;;;;;;;;:::o;7679:48::-;;;;;;;;;;;;;;;;;;;;;;:::o;7166:63::-;;;;;;;;;;;;;;;;;:::o;7051:45::-;;;;;;;;;;;;;;;;;:::o;22918:153::-;22991:4;4309:5;;;;;;;;;;;4295:19;;:10;:19;;;4287:28;;;;;;23028:13;23013:12;:28;;;;23059:4;23052:11;;22918:153;;;:::o;4729:196::-;4796:8;;;;;;;;;;;4782:22;;:10;:22;;;4774:31;;;;;;4849:8;;;;;;;;;;;4821:37;;4842:5;;;;;;;;;;;4821:37;;;;;;;;;;;;4877:8;;;;;;;;;;;4869:5;;:16;;;;;;;;;;;;;;;;;;4915:1;4896:8;;:21;;;;;;;;;;;;;;;;;;4729:196::o;12874:792::-;12939:12;12975:10;;;;;;;;;;;12974:11;12966:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13025:15;:27;13041:10;13025:27;;;;;;;;;;;;;;;;;;;;;;;;;13024:28;13016:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13175:28;13196:6;13175:9;:16;13185:5;13175:16;;;;;;;;;;;;;;;;:20;;:28;;;;:::i;:::-;13156:9;:16;13166:5;13156:16;;;;;;;;;;;;;;;:47;;;;13307:40;13340:6;13307:9;:16;13317:5;13307:16;;;;;;;;;;;;;;;:28;13324:10;13307:28;;;;;;;;;;;;;;;;:32;;:40;;;;:::i;:::-;13276:9;:16;13286:5;13276:16;;;;;;;;;;;;;;;:28;13293:10;13276:28;;;;;;;;;;;;;;;:71;;;;13412:23;13428:6;13412:11;;:15;;:23;;;;:::i;:::-;13398:11;:37;;;;13516:23;13532:6;13516:11;;:15;;:23;;;;:::i;:::-;13502:11;:37;;;;13589:1;13565:35;;13574:5;13565:35;;;13593:6;13565:35;;;;;;;;;;;;;;;;;;13622:5;13617:19;;;13629:6;13617:19;;;;;;;;;;;;;;;;;;13654:4;13647:11;;12874:792;;;;:::o;22577:174::-;22661:4;4309:5;;;;;;;;;;;4295:19;;:10;:19;;;4287:28;;;;;;22703:18;22683:17;:38;;;;22739:4;22732:11;;22577:174;;;:::o;3692:28::-;;;;;;;;;;;;;:::o;6014:38::-;;;;;;;;;;;;;;;;;;;:::o;19200:2444::-;19298:4;4396:6;;;;;;;;;;;4382:20;;:10;:20;;;4374:29;;;;;;19382:11;:18;;;;19363:16;:37;19355:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19490:1;19444:11;19456:16;19444:29;;;;;;;;;;;;;;;;;;:42;;;:47;19436:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19523:16;19542:11;19554:16;19542:29;;;;;;;;;;;;;;;;;;:37;;;19523:56;;19590:17;19610:11;19622:16;19610:29;;;;;;;;;;;;;;;;;;:38;;;19590:58;;19659:14;19686:24;;;;;;;;;;;19676:43;;;19720:8;19676:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19676:53:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19676:53:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;19676:53:0;;;;;;;;;;;;;;;;19659:70;;19740:12;19763:19;19793:23;19831:9;19841:1;19831:11;;19827:545;19845:2;19843:1;:4;19827:545;;;20009:1;19967:24;;;;;;;;;;;19957:47;;;:49;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19957:49:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19957:49:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;19957:49:0;;;;;;;;;;;;;;;;19926:14;19942:9;19909:43;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;19909:43:0;;;19899:54;;;;;;19891:63;;:115;;;;;;:119;19877:133;;20053:24;;;;;;;;;;;20043:43;;;20087:8;20043:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20043:53:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;20043:53:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;20043:53:0;;;;;;;;;;;;;;;;20025:71;;20114:16;:29;20131:11;20114:29;;;;;;;;;;;;;;;;;;;;;:65;;;;20147:15;:32;20163:15;20147:32;;;;;;;;;;;;;;;;;;;;;;;;;20114:65;20111:250;;;20239:1;20226:12;:14;;;;;;20213:27;;;;20111:250;;;20317:4;20307:14;;20340:5;;20111:250;19848:3;;;;;;;19827:545;;;;20390:7;20382:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20423:20;20444:19;20478:24;;;;;;;;;;;20468:47;;;20516:8;20468:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20468:57:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;20468:57:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;20468:57:0;;;;;;;;;;;;;;;;;;;;;;;;;20422:103;;;;20537:21;20559:20;20594:24;;;;;;;;;;;20584:47;;;20632:11;20584:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20584:60:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;20584:60:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;20584:60:0;;;;;;;;;;;;;;;;;;;;;;;;;20536:108;;;;20656:18;20734:12;20718:13;:28;20704:11;20689:12;:26;:57;20685:222;;;20786:15;;20773:28;;20685:222;;;20878:17;;20865:30;;20685:222;20962:10;20917:11;20929:16;20917:29;;;;;;;;;;;;;;;;;;:42;;:55;;;;21031:11;20983;20995:16;20983:29;;;;;;;;;;;;;;;;;;:45;;:59;;;;21060:74;21075:6;21082:16;21100:8;21110:11;21123:10;21060:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21168:33;21190:10;21168:9;:17;21178:6;21168:17;;;;;;;;;;;;;;;;:21;;:33;;;;:::i;:::-;21148:9;:17;21158:6;21148:17;;;;;;;;;;;;;;;:53;;;;21226:27;21242:10;21226:11;;:15;;:27;;;;:::i;:::-;21212:11;:41;;;;21298:47;21334:10;21298:21;:31;21320:8;21298:31;;;;;;;;;;;;:35;;:47;;;;:::i;:::-;21264:21;:31;21286:8;21264:31;;;;;;;;;;;:81;;;;21398:55;21442:10;21398:29;:39;21428:8;21398:39;;;;;;;;;;;;:43;;:55;;;;:::i;:::-;21356:29;:39;21386:8;21356:39;;;;;;;;;;;:97;;;;21487:3;21464:10;:20;21475:8;21464:20;;;;;;;;;;;:26;;;;21521:16;21501:17;:36;;;;21596:6;21576:38;;21593:1;21576:38;;;21603:10;21576:38;;;;;;;;;;;;;;;;;;21632:4;21625:11;;;;;;;;;;;;;19200:2444;;;;:::o;7376:45::-;;;;;;;;;;;;;;;;;:::o;7507:53::-;;;;;;;;;;;;;;;;;:::o;9513:313::-;9576:12;9610:15;:27;9626:10;9610:27;;;;;;;;;;;;;;;;;;;;;;;;;9609:28;9601:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9752:34;9762:10;9774:3;9779:6;9752:9;:34::i;:::-;9814:4;9807:11;;9513:313;;;;:::o;4431:91::-;4309:5;;;;;;;;;;;4295:19;;:10;:19;;;4287:28;;;;;;4507:7;4498:6;;:16;;;;;;;;;;;;;;;;;;4431:91;:::o;6478:27::-;;;;:::o;7103:56::-;;;;;;;;;;;;;;;;;:::o;17481:163::-;17558:4;4309:5;;;;;;;;;;;4295:19;;:10;:19;;;4287:28;;;;;;17598:16;17580:15;:34;;;;17632:4;17625:11;;17481:163;;;:::o;7305:64::-;;;;;;;;;;;;;;;;;:::o;15358:1558::-;15419:4;15445:10;;;;;;;;;;;15444:11;15436:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15486:14;15513:24;;;;;;;;;;;15503:43;;;15547:8;15503:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15503:53:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15503:53:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;15503:53:0;;;;;;;;;;;;;;;;15486:70;;15576:15;:23;15592:6;15576:23;;;;;;;;;;;;;;;;;;;;;;;;;15575:24;15567:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15643:16;:26;15660:8;15643:26;;;;;;;;;;;;;;;;;;;;;15642:27;15634:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15728:10;15718:20;;:6;:20;;;15710:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15813:12;;15800:9;:25;;15792:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15869:10;15882;:20;15893:8;15882:20;;;;;;;;;;;;15869:33;;15923:1;15917:2;:7;15913:938;;15950:17;15978:2;15972:3;:8;15950:30;;16016:1;16004:9;:13;15996:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16066:19;16100:24;;;;;;;;;;;16090:47;;;16138:8;16090:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16090:57:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16090:57:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;16090:57:0;;;;;;;;;;;;;;;;;;;;;;;;;16064:83;;;16162:18;16273:9;16263:5;16251:6;16242:2;16236:1;16222:11;:15;16221:23;;;;;;16208:8;16187:17;;:30;:59;16186:71;;;;;;16184:84;;;;;;16183:99;16162:120;;16321:3;16298:10;:20;16309:8;16298:20;;;;;;;;;;;:26;;;;16392:53;16434:10;16392:27;:37;16420:8;16392:37;;;;;;;;;;;;:41;;:53;;;;:::i;:::-;16352:27;:37;16380:8;16352:37;;;;;;;;;;;:93;;;;16494:47;16530:10;16494:21;:31;16516:8;16494:31;;;;;;;;;;;;:35;;:47;;;;:::i;:::-;16460:21;:31;16482:8;16460:31;;;;;;;;;;;:81;;;;16570:27;16586:10;16570:11;;:15;;:27;;;;:::i;:::-;16556:11;:41;;;;16632:33;16654:10;16632:9;:17;16642:6;16632:17;;;;;;;;;;;;;;;;:21;;:33;;;;:::i;:::-;16612:9;:17;16622:6;16612:17;;;;;;;;;;;;;;;:53;;;;16744:6;16724:38;;16741:1;16724:38;;;16751:10;16724:38;;;;;;;;;;;;;;;;;;15913:938;;;;;;16835:3;16812:10;:20;16823:8;16812:20;;;;;;;;;;;:26;;;;15913:938;16861:5;;;;;;;;;;;:14;;:25;16876:9;16861:25;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16861:25:0;16904:4;16897:11;;;;15358:1558;;;:::o;14961:152::-;15028:4;4309:5;;;;;;;;;;;4295:19;;:10;:19;;;4287:28;;;;;;15079:4;15050:16;:26;15067:8;15050:26;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;15101:4;15094:11;;14961:152;;;:::o;21652:327::-;21743:4;4396:6;;;;;;;;;;;4382:20;;:10;:20;;;4374:29;;;;;;21765:6;21790:1;21788:3;;21784:166;21794:15;:22;21792:1;:24;21784:166;;;21853:58;21890:1;21886;21866:17;;:21;:25;21892:15;21908:1;21892:18;;;;;;;;;;;;;;21853:12;:58::i;:::-;21845:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21817:3;;;;;;;21784:166;;;21967:4;21960:11;;;21652:327;;;:::o;14794:153::-;14866:4;4309:5;;;;;;;;;;;4295:19;;:10;:19;;;4287:28;;;;;;14912:5;14888:15;:21;14904:4;14888:21;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;14935:4;14928:11;;14794:153;;;:::o;6137:26::-;;;;:::o;13674:951::-;13780:4;4309:5;;;;;;;;;;;4295:19;;:10;:19;;;4287:28;;;;;;13826:4;13810:21;;:4;:21;;;;:43;;;;;13851:1;13835:18;;:4;:18;;;;13810:43;13802:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13907:1;13893:11;:15;13885:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13955:16;:26;13972:8;13955:26;;;;;;;;;;;;;;;;;;;;;13954:27;13946:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14037:1;14025:8;:13;14022:372;;14129:4;14072:61;;14082:24;;;;;;;;;;;14072:43;;;14116:8;14072:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14072:53:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14072:53:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;14072:53:0;;;;;;;;;;;;;;;;:61;;;14064:110;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14223:48;14259:11;14223:21;:31;14245:8;14223:31;;;;;;;;;;;;:35;;:48;;;;:::i;:::-;14189:21;:31;14211:8;14189:31;;;;;;;;;;;:82;;;;14327:55;14370:11;14327:28;:38;14356:8;14327:38;;;;;;;;;;;;:42;;:55;;;;:::i;:::-;14286:28;:38;14315:8;14286:38;;;;;;;;;;;:96;;;;14022:372;14418:28;14434:11;14418;;:15;;:28;;;;:::i;:::-;14404:11;:42;;;;14475:32;14495:11;14475:9;:15;14485:4;14475:15;;;;;;;;;;;;;;;;:19;;:32;;;;:::i;:::-;14457:9;:15;14467:4;14457:15;;;;;;;;;;;;;;;:50;;;;14578:4;14558:37;;14575:1;14558:37;;;14583:11;14558:37;;;;;;;;;;;;;;;;;;14613:4;14606:11;;13674:951;;;;;:::o;7927:31::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;7428:66::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;15123:163::-;15200:4;4309:5;;;;;;;;;;;4295:19;;:10;:19;;;4287:28;;;;;;15251:5;15222:16;:26;15239:8;15222:26;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;15274:4;15267:11;;15123:163;;;:::o;4530:110::-;4309:5;;;;;;;;;;;4295:19;;:10;:19;;;4287:28;;;;;;4623:9;4612:8;;:20;;;;;;;;;;;;;;;;;;4530:110;:::o;7567:51::-;;;;;;;;;;;;;;;;;:::o;22366:201::-;22463:4;4309:5;;;;;;;;;;;4295:19;;:10;:19;;;4287:28;;;;;;22512:25;22485:24;;:52;;;;;;;;;;;;;;;;;;22555:4;22548:11;;22366:201;;;:::o;23794:112::-;23851:7;23877:21;23870:28;;23794:112;:::o;6957:32::-;;;;:::o;3176:116::-;3234:7;3263:1;3258;:6;;3250:15;;;;;;3283:1;3279;:5;3272:12;;3176:116;;;;:::o;8663:618::-;8793:10;;;;;;;;;;;8792:11;8784:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8858:3;8843:19;;:3;:19;;;;8834:29;;;;;;9037:28;9058:6;9037:9;:16;9047:5;9037:16;;;;;;;;;;;;;;;;:20;;:28;;;;:::i;:::-;9018:9;:16;9028:5;9018:16;;;;;;;;;;;;;;;:47;;;;9124:26;9143:6;9124:9;:14;9134:3;9124:14;;;;;;;;;;;;;;;;:18;;:26;;;;:::i;:::-;9107:9;:14;9117:3;9107:14;;;;;;;;;;;;;;;:43;;;;9261:3;9245:28;;9254:5;9245:28;;;9266:6;9245:28;;;;;;;;;;;;;;;;;;8663:618;;;:::o;3300:136::-;3358:7;3374:9;3390:1;3386;:5;3374:17;;3411:1;3406;:6;;3398:15;;;;;;3427:1;3420:8;;;3300:136;;;;:::o;5687:18604::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o

Swarm Source

bzzr://d03bbef45985d0fd5e814bc60d0bb7191b6b2252b29fa6479cd2497ca6bd0ab1
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.