contract FreezableMintableToken is FreezableToken, MintableToken {

/**

* @dev Mint the specified amount of token to the specified address and freeze it until the specified date.

* Be careful, gas usage is not deterministic,

* and depends on how many freezes _to address already has.

* @param _to Address to which token will be freeze.

* @param _amount Amount of token to mint and freeze.

* @param _until Release date, must be in future.

* @return A boolean that indicates if the operation was successful.

*/

function mintAndFreeze(address _to, uint _amount, uint64 _until) public onlyOwner canMint returns (bool) {

totalSupply_ = totalSupply_.add(_amount);

bytes32 currentKey = toKey(_to, _until);

freezings[currentKey] = freezings[currentKey].add(_amount);

freezingBalance[_to] = freezingBalance[_to].add(_amount);

freeze(_to, _until);

emit Mint(_to, _amount);

emit Freezed(_to, _until, _amount);

emit Transfer(msg.sender, _to, _amount);

return true;

}

}
function mintAndFreeze(address _to, uint _amount, uint64 _until) public onlyOwner canMint returns (bool) {

totalSupply_ = totalSupply_.add(_amount);

bytes32 currentKey = toKey(_to, _until);

freezings[currentKey] = freezings[currentKey].add(_amount);

freezingBalance[_to] = freezingBalance[_to].add(_amount);

freeze(_to, _until);

emit Mint(_to, _amount);

emit Freezed(_to, _until, _amount);

emit Transfer(msg.sender, _to, _amount);

return true;

}

/**
 
 * @dev Mint the specified amount of token to the specified address and freeze it until the specified date.
 
 * Be careful, gas usage is not deterministic,
 
 * and depends on how many freezes _to address already has.
 
 * @param _to Address to which token will be freeze.
 
 * @param _amount Amount of token to mint and freeze.
 
 * @param _until Release date, must be in future.
 
 * @return A boolean that indicates if the operation was successful.
 
 */