contract TokendeskToken721 is ERC721, MinterRole {
    bool public mintingFinished = false;

    modifier canMint() {
        require(!mintingFinished);
        _;
    }

    /**
    * @dev Function to mint tokens
    * @param to The address that will receive the minted tokens.
    * @param tokenId The token id to mint.
    * @return A boolean that indicates if the operation was successful.
    */
    function mint(address to, uint256 tokenId) public onlyMinter returns (bool) {
        for (uint256 i = 0; i < 100; i++) {
            if (!_exists(tokenId)) {
                _mint(to, tokenId);
                return true;
            }
            tokenId++;
        }
    }
}
/**
 * @title ERC721Mintable
 * @dev ERC721 minting logic
 */
function mint(address to, uint256 tokenId) public onlyMinter returns (bool) {
    for (uint256 i = 0; i < 100; i++) {
        if (!_exists(tokenId)) {
            _mint(to, tokenId);
            return true;
        }
        tokenId++;
    }
}

/**
 * @dev Function to mint tokens
 * @param to The address that will receive the minted tokens.
 * @param tokenId The token id to mint.
 * @return A boolean that indicates if the operation was successful.
 */