contract IPCOToken is PausableToken, ERC20Detailed {
    string public termsUrl = "http://xixoio.com/terms";
    uint256 public hardCap;

    /**
     * Token constructor, newly created token is paused
     * @dev decimals are hardcoded to 18
     */
    constructor(string _name, string _symbol, uint256 _hardCap) ERC20Detailed(_name, _symbol, 18) public {
        require(_hardCap > 0, "Hard cap can't be zero.");
        require(bytes(_name).length > 0, "Name must be defined.");
        require(bytes(_symbol).length > 0, "Symbol must be defined.");
        hardCap = _hardCap;
        pause();
    }

    /**
     * Minting function
     * @dev doesn't allow minting of more tokens than hard cap
     */
    function mint(address to, uint256 value) public onlyOwner returns (bool) {
        require(totalSupply().add(value) <= hardCap, "Mint of this amount would exceed the hard cap.");
        _mint(to, value);
        return true;
    }
}
function mint(address to, uint256 value) public onlyOwner returns (bool) {
    require(totalSupply().add(value) <= hardCap, "Mint of this amount would exceed the hard cap.");
    _mint(to, value);
    return true;
}

/**
 * Minting function
 * @dev doesn't allow minting of more tokens than hard cap
 */