// Contract: StackHodlVault
// Target function: function distributeHodlToken() external
/*

 * Stack HODL Vault
 
 * Smart contract to decentralize 10% of Stack total supply reserved to reward top 10 HODLers on weekly basis

 * Official Website:
   https://DexStack.Finance
 
 * Telelgram Group:
   https://t.me/DexStackFinance
   
 */
 




pragma solidity ^0.6.0;



library SafeMath 
{
    function mul(uint256 a, uint256 b) internal pure returns (uint256) 
    {
        if (a == 0) 
        {
            return 0;
        }
        uint256 c = a * b;
        assert(c / a == b);
        return c;
    }
    
    function div(uint256 a, uint256 b) internal pure returns (uint256) 
    {
        uint256 c = a / b;
        return c;
    }
    
    function sub(uint256 a, uint256 b) internal pure returns (uint256) 
    {
        assert(b <= a);
        return a - b;
    }
    
    function add(uint256 a, uint256 b) internal pure returns (uint256) 
    {
        uint256 c = a + b;
        assert(c >= a);
        return c;
    }
    
    function ceil(uint256 a, uint256 m) internal pure returns (uint256) 
    {
        uint256 c = add(a,m);
        uint256 d = sub(c,1);
        return mul(div(d,m),m);
    }
}



contract StackHodlVault {
    
    using SafeMath for uint256;
    
    ERC20 constant StackToken = ERC20(0xdFbcaCF4D31DA9089dC6d1Ee32CE4CCF4Ef0ac50);
    
    address owner = msg.sender;
    uint256 public lastHodlTokenDistribution = now;
    
    uint256 public migrationLock;
    address public migrationRecipient;