Parse the output of the tool and extract the verification result.
        This method always needs to be overridden.
        If the tool gave a result, this method needs to return one of the
        benchexec.result.RESULT_* strings.
        Otherwise an arbitrary string can be returned that will be shown to the user
        and should give some indication of the failure reason
        (e.g., "CRASH", "OUT_OF_MEMORY", etc.).

def determine_result(self, returncode, returnsignal, output, isTimeout):
        """
        Parse the output of the tool and extract the verification result.
        This method always needs to be overridden.
        If the tool gave a result, this method needs to return one of the
        benchexec.result.RESULT_* strings.
        Otherwise an arbitrary string can be returned that will be shown to the user
        and should give some indication of the failure reason
        (e.g., "CRASH", "OUT_OF_MEMORY", etc.).
        """
        for line in output:
            if "All test cases time out or crash, giving up!" in line:
                return "Couldn't run: all seeds time out or crash"
            if "ERROR: couldn't run FairFuzz" in line:
                return "Couldn't run FairFuzz"
            if "CRASHES FOUND" in line:
                return result.RESULT_FALSE_REACH
            if "DONE RUNNING" in line:
                return result.RESULT_DONE
        return result.RESULT_UNKNOWN