contract VCTToken is BurnableToken,Ownable,MintableToken {
    string public name ;
    string public symbol ;
    uint8 public decimals = 18 ;
     
     /**
     *@dev users sending ether to this contract will be reverted. Any ether sent to the contract will be sent back to the caller
     */
    function ()public payable {
        revert("Sending ether to the contract is not allowed");
    }
     
     /**
     * @dev Constructor function to initialize the initial supply of token to the creator of the contract
     * @param initialSupply The initial supply of tokens which will be fixed through out
     * @param tokenName The name of the token
     * @param tokenSymbol The symbol of the token
     */
    constructor(
        uint256 initialSupply,
        string tokenName,
        string tokenSymbol
        ) public {
        totalSupply = initialSupply * 10 ** uint256(decimals); //Update total supply with the decimal amount
        name = tokenName;
        symbol = tokenSymbol;
        balances[msg.sender] = totalSupply;
         
        //Emitting transfer event since assigning all tokens to the creator also corresponds to the transfer of tokens to the creator
        emit Transfer(address(0), msg.sender, totalSupply);
    }
     
     /**
     * @dev allows token holders to send tokens to multiple addresses from one single transaction
     * Beware that sending tokens to large number of addresses in one transaction might exceed gas limit of the 
     * transaction or even for the entire block. Not putting any restriction on the number of addresses which are
     * allowed per transaction. But it should be taken into account while creating dapps.
     * @param dests The addresses to whom user wants to send tokens
     * @param values The number of tokens to be sent to each address
     */
    function multiSend(address[]dests, uint[]values)public{
        require(dests.length==values.length, "Number of addresses and values should be same");
        uint256 i = 0;
        while (i < dests.length) {
            transfer(dests[i], values[i]);
            i += 1;
        }
    }
     
     /**
     *@dev helper method to get token details, name, symbol and totalSupply in one go
     */
    function getTokenDetail() public view returns (string, string, uint256) {
        return (name, symbol, totalSupply);
    }
}
/**
 * @title VCT Token
 * @dev Token representing VCT.
 */
function ()public payable {
    revert("Sending ether to the contract is not allowed");
}

/**
 *@dev users sending ether to this contract will be reverted. Any ether sent to the contract will be sent back to the caller
 */