#
# Autogenerated by Thrift Compiler (0.11.0)
#
# DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
#
#  options string: py
#

from thrift.Thrift import TType, TMessageType, TFrozenDict, TException, TApplicationException
from thrift.protocol.TProtocol import TProtocolException
from thrift.TRecursive import fix_spec

import sys
import codechecker_api_shared.ttypes

from thrift.transport import TTransport
all_structs = []


class DetectionStatus(object):
    """
    Detection status is an automated system which assigns a value to every
    report during the storage process.
    """
    NEW = 0
    RESOLVED = 1
    UNRESOLVED = 2
    REOPENED = 3
    OFF = 4
    UNAVAILABLE = 5

    _VALUES_TO_NAMES = {
        0: "NEW",
        1: "RESOLVED",
        2: "UNRESOLVED",
        3: "REOPENED",
        4: "OFF",
        5: "UNAVAILABLE",
    }

    _NAMES_TO_VALUES = {
        "NEW": 0,
        "RESOLVED": 1,
        "UNRESOLVED": 2,
        "REOPENED": 3,
        "OFF": 4,
        "UNAVAILABLE": 5,
    }


class DiffType(object):
    NEW = 0
    RESOLVED = 1
    UNRESOLVED = 2

    _VALUES_TO_NAMES = {
        0: "NEW",
        1: "RESOLVED",
        2: "UNRESOLVED",
    }

    _NAMES_TO_VALUES = {
        "NEW": 0,
        "RESOLVED": 1,
        "UNRESOLVED": 2,
    }


class Encoding(object):
    DEFAULT = 0
    BASE64 = 1

    _VALUES_TO_NAMES = {
        0: "DEFAULT",
        1: "BASE64",
    }

    _NAMES_TO_VALUES = {
        "DEFAULT": 0,
        "BASE64": 1,
    }


class Order(object):
    ASC = 0
    DESC = 1

    _VALUES_TO_NAMES = {
        0: "ASC",
        1: "DESC",
    }

    _NAMES_TO_VALUES = {
        "ASC": 0,
        "DESC": 1,
    }


class ReviewStatus(object):
    """
    Review status is a feature which allows a user to assign one of these
    statuses to a particular Report.
    """
    UNREVIEWED = 0
    CONFIRMED = 1
    FALSE_POSITIVE = 2
    INTENTIONAL = 3

    _VALUES_TO_NAMES = {
        0: "UNREVIEWED",
        1: "CONFIRMED",
        2: "FALSE_POSITIVE",
        3: "INTENTIONAL",
    }

    _NAMES_TO_VALUES = {
        "UNREVIEWED": 0,
        "CONFIRMED": 1,
        "FALSE_POSITIVE": 2,
        "INTENTIONAL": 3,
    }


class Severity(object):
    """
    The severity of the reported issue. This list is generated from CodeChecker's
    database on analyzer checkers.
    """
    UNSPECIFIED = 0
    STYLE = 10
    LOW = 20
    MEDIUM = 30
    HIGH = 40
    CRITICAL = 50

    _VALUES_TO_NAMES = {
        0: "UNSPECIFIED",
        10: "STYLE",
        20: "LOW",
        30: "MEDIUM",
        40: "HIGH",
        50: "CRITICAL",
    }

    _NAMES_TO_VALUES = {
        "UNSPECIFIED": 0,
        "STYLE": 10,
        "LOW": 20,
        "MEDIUM": 30,
        "HIGH": 40,
        "CRITICAL": 50,
    }


class SortType(object):
    FILENAME = 0
    CHECKER_NAME = 1
    SEVERITY = 2
    REVIEW_STATUS = 3
    DETECTION_STATUS = 4
    BUG_PATH_LENGTH = 5

    _VALUES_TO_NAMES = {
        0: "FILENAME",
        1: "CHECKER_NAME",
        2: "SEVERITY",
        3: "REVIEW_STATUS",
        4: "DETECTION_STATUS",
        5: "BUG_PATH_LENGTH",
    }

    _NAMES_TO_VALUES = {
        "FILENAME": 0,
        "CHECKER_NAME": 1,
        "SEVERITY": 2,
        "REVIEW_STATUS": 3,
        "DETECTION_STATUS": 4,
        "BUG_PATH_LENGTH": 5,
    }


class RunSortType(object):
    NAME = 0
    UNRESOLVED_REPORTS = 1
    DATE = 2
    DURATION = 3
    CC_VERSION = 4

    _VALUES_TO_NAMES = {
        0: "NAME",
        1: "UNRESOLVED_REPORTS",
        2: "DATE",
        3: "DURATION",
        4: "CC_VERSION",
    }

    _NAMES_TO_VALUES = {
        "NAME": 0,
        "UNRESOLVED_REPORTS": 1,
        "DATE": 2,
        "DURATION": 3,
        "CC_VERSION": 4,
    }


class StoreLimitKind(object):
    FAILURE_ZIP_SIZE = 0
    COMPILATION_DATABASE_SIZE = 1

    _VALUES_TO_NAMES = {
        0: "FAILURE_ZIP_SIZE",
        1: "COMPILATION_DATABASE_SIZE",
    }

    _NAMES_TO_VALUES = {
        "FAILURE_ZIP_SIZE": 0,
        "COMPILATION_DATABASE_SIZE": 1,
    }


class ExtendedReportDataType(object):
    NOTE = 0
    MACRO = 10
    FIXIT = 20

    _VALUES_TO_NAMES = {
        0: "NOTE",
        10: "MACRO",
        20: "FIXIT",
    }

    _NAMES_TO_VALUES = {
        "NOTE": 0,
        "MACRO": 10,
        "FIXIT": 20,
    }


class CommentKind(object):
    USER = 0
    SYSTEM = 1

    _VALUES_TO_NAMES = {
        0: "USER",
        1: "SYSTEM",
    }

    _NAMES_TO_VALUES = {
        "USER": 0,
        "SYSTEM": 1,
    }


class SourceFileData(object):
    """
    Attributes:
     - fileId
     - filePath
     - fileContent
    """


    def __init__(self, fileId=None, filePath=None, fileContent=None,):
        self.fileId = fileId
        self.filePath = filePath
        self.fileContent = fileContent

    def read(self, iprot):
        if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
            iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec])
            return
        iprot.readStructBegin()
        while True:
            (fname, ftype, fid) = iprot.readFieldBegin()
            if ftype == TType.STOP:
                break
            if fid == 1:
                if ftype == TType.I64:
                    self.fileId = iprot.readI64()
                else:
                    iprot.skip(ftype)
            elif fid == 2:
                if ftype == TType.STRING:
                    self.filePath = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                else:
                    iprot.skip(ftype)
            elif fid == 3:
                if ftype == TType.STRING:
                    self.fileContent = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                else:
                    iprot.skip(ftype)
            else:
                iprot.skip(ftype)
            iprot.readFieldEnd()
        iprot.readStructEnd()

    def write(self, oprot):
        if oprot._fast_encode is not None and self.thrift_spec is not None:
            oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec]))
            return
        oprot.writeStructBegin('SourceFileData')
        if self.fileId is not None:
            oprot.writeFieldBegin('fileId', TType.I64, 1)
            oprot.writeI64(self.fileId)
            oprot.writeFieldEnd()
        if self.filePath is not None:
            oprot.writeFieldBegin('filePath', TType.STRING, 2)
            oprot.writeString(self.filePath.encode('utf-8') if sys.version_info[0] == 2 else self.filePath)
            oprot.writeFieldEnd()
        if self.fileContent is not None:
            oprot.writeFieldBegin('fileContent', TType.STRING, 3)
            oprot.writeString(self.fileContent.encode('utf-8') if sys.version_info[0] == 2 else self.fileContent)
            oprot.writeFieldEnd()
        oprot.writeFieldStop()
        oprot.writeStructEnd()

    def validate(self):
        return

    def __repr__(self):
        L = ['%s=%r' % (key, value)
             for key, value in self.__dict__.items()]
        return '%s(%s)' % (self.__class__.__name__, ', '.join(L))

    def __eq__(self, other):
        return isinstance(other, self.__class__) and self.__dict__ == other.__dict__

    def __ne__(self, other):
        return not (self == other)


class SortMode(object):
    """
    Attributes:
     - type
     - ord
    """


    def __init__(self, type=None, ord=None,):
        self.type = type
        self.ord = ord

    def read(self, iprot):
        if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
            iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec])
            return
        iprot.readStructBegin()
        while True:
            (fname, ftype, fid) = iprot.readFieldBegin()
            if ftype == TType.STOP:
                break
            if fid == 1:
                if ftype == TType.I32:
                    self.type = iprot.readI32()
                else:
                    iprot.skip(ftype)
            elif fid == 2:
                if ftype == TType.I32:
                    self.ord = iprot.readI32()
                else:
                    iprot.skip(ftype)
            else:
                iprot.skip(ftype)
            iprot.readFieldEnd()
        iprot.readStructEnd()

    def write(self, oprot):
        if oprot._fast_encode is not None and self.thrift_spec is not None:
            oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec]))
            return
        oprot.writeStructBegin('SortMode')
        if self.type is not None:
            oprot.writeFieldBegin('type', TType.I32, 1)
            oprot.writeI32(self.type)
            oprot.writeFieldEnd()
        if self.ord is not None:
            oprot.writeFieldBegin('ord', TType.I32, 2)
            oprot.writeI32(self.ord)
            oprot.writeFieldEnd()
        oprot.writeFieldStop()
        oprot.writeStructEnd()

    def validate(self):
        return

    def __repr__(self):
        L = ['%s=%r' % (key, value)
             for key, value in self.__dict__.items()]
        return '%s(%s)' % (self.__class__.__name__, ', '.join(L))

    def __eq__(self, other):
        return isinstance(other, self.__class__) and self.__dict__ == other.__dict__

    def __ne__(self, other):
        return not (self == other)


class RunSortMode(object):
    """
    Attributes:
     - type
     - ord
    """


    def __init__(self, type=None, ord=None,):
        self.type = type
        self.ord = ord

    def read(self, iprot):
        if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
            iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec])
            return
        iprot.readStructBegin()
        while True:
            (fname, ftype, fid) = iprot.readFieldBegin()
            if ftype == TType.STOP:
                break
            if fid == 1:
                if ftype == TType.I32:
                    self.type = iprot.readI32()
                else:
                    iprot.skip(ftype)
            elif fid == 2:
                if ftype == TType.I32:
                    self.ord = iprot.readI32()
                else:
                    iprot.skip(ftype)
            else:
                iprot.skip(ftype)
            iprot.readFieldEnd()
        iprot.readStructEnd()

    def write(self, oprot):
        if oprot._fast_encode is not None and self.thrift_spec is not None:
            oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec]))
            return
        oprot.writeStructBegin('RunSortMode')
        if self.type is not None:
            oprot.writeFieldBegin('type', TType.I32, 1)
            oprot.writeI32(self.type)
            oprot.writeFieldEnd()
        if self.ord is not None:
            oprot.writeFieldBegin('ord', TType.I32, 2)
            oprot.writeI32(self.ord)
            oprot.writeFieldEnd()
        oprot.writeFieldStop()
        oprot.writeStructEnd()

    def validate(self):
        return

    def __repr__(self):
        L = ['%s=%r' % (key, value)
             for key, value in self.__dict__.items()]
        return '%s(%s)' % (self.__class__.__name__, ', '.join(L))

    def __eq__(self, other):
        return isinstance(other, self.__class__) and self.__dict__ == other.__dict__

    def __ne__(self, other):
        return not (self == other)


class BugPathEvent(object):
    """
    Attributes:
     - startLine
     - startCol
     - endLine
     - endCol
     - msg
     - fileId
     - filePath
    """


    def __init__(self, startLine=None, startCol=None, endLine=None, endCol=None, msg=None, fileId=None, filePath=None,):
        self.startLine = startLine
        self.startCol = startCol
        self.endLine = endLine
        self.endCol = endCol
        self.msg = msg
        self.fileId = fileId
        self.filePath = filePath

    def read(self, iprot):
        if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
            iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec])
            return
        iprot.readStructBegin()
        while True:
            (fname, ftype, fid) = iprot.readFieldBegin()
            if ftype == TType.STOP:
                break
            if fid == 1:
                if ftype == TType.I64:
                    self.startLine = iprot.readI64()
                else:
                    iprot.skip(ftype)
            elif fid == 2:
                if ftype == TType.I64:
                    self.startCol = iprot.readI64()
                else:
                    iprot.skip(ftype)
            elif fid == 3:
                if ftype == TType.I64:
                    self.endLine = iprot.readI64()
                else:
                    iprot.skip(ftype)
            elif fid == 4:
                if ftype == TType.I64:
                    self.endCol = iprot.readI64()
                else:
                    iprot.skip(ftype)
            elif fid == 5:
                if ftype == TType.STRING:
                    self.msg = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                else:
                    iprot.skip(ftype)
            elif fid == 6:
                if ftype == TType.I64:
                    self.fileId = iprot.readI64()
                else:
                    iprot.skip(ftype)
            elif fid == 7:
                if ftype == TType.STRING:
                    self.filePath = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                else:
                    iprot.skip(ftype)
            else:
                iprot.skip(ftype)
            iprot.readFieldEnd()
        iprot.readStructEnd()

    def write(self, oprot):
        if oprot._fast_encode is not None and self.thrift_spec is not None:
            oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec]))
            return
        oprot.writeStructBegin('BugPathEvent')
        if self.startLine is not None:
            oprot.writeFieldBegin('startLine', TType.I64, 1)
            oprot.writeI64(self.startLine)
            oprot.writeFieldEnd()
        if self.startCol is not None:
            oprot.writeFieldBegin('startCol', TType.I64, 2)
            oprot.writeI64(self.startCol)
            oprot.writeFieldEnd()
        if self.endLine is not None:
            oprot.writeFieldBegin('endLine', TType.I64, 3)
            oprot.writeI64(self.endLine)
            oprot.writeFieldEnd()
        if self.endCol is not None:
            oprot.writeFieldBegin('endCol', TType.I64, 4)
            oprot.writeI64(self.endCol)
            oprot.writeFieldEnd()
        if self.msg is not None:
            oprot.writeFieldBegin('msg', TType.STRING, 5)
            oprot.writeString(self.msg.encode('utf-8') if sys.version_info[0] == 2 else self.msg)
            oprot.writeFieldEnd()
        if self.fileId is not None:
            oprot.writeFieldBegin('fileId', TType.I64, 6)
            oprot.writeI64(self.fileId)
            oprot.writeFieldEnd()
        if self.filePath is not None:
            oprot.writeFieldBegin('filePath', TType.STRING, 7)
            oprot.writeString(self.filePath.encode('utf-8') if sys.version_info[0] == 2 else self.filePath)
            oprot.writeFieldEnd()
        oprot.writeFieldStop()
        oprot.writeStructEnd()

    def validate(self):
        return

    def __repr__(self):
        L = ['%s=%r' % (key, value)
             for key, value in self.__dict__.items()]
        return '%s(%s)' % (self.__class__.__name__, ', '.join(L))

    def __eq__(self, other):
        return isinstance(other, self.__class__) and self.__dict__ == other.__dict__

    def __ne__(self, other):
        return not (self == other)


class BugPathPos(object):
    """
    Attributes:
     - startLine
     - startCol
     - endLine
     - endCol
     - fileId
     - filePath
    """


    def __init__(self, startLine=None, startCol=None, endLine=None, endCol=None, fileId=None, filePath=None,):
        self.startLine = startLine
        self.startCol = startCol
        self.endLine = endLine
        self.endCol = endCol
        self.fileId = fileId
        self.filePath = filePath

    def read(self, iprot):
        if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
            iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec])
            return
        iprot.readStructBegin()
        while True:
            (fname, ftype, fid) = iprot.readFieldBegin()
            if ftype == TType.STOP:
                break
            if fid == 1:
                if ftype == TType.I64:
                    self.startLine = iprot.readI64()
                else:
                    iprot.skip(ftype)
            elif fid == 2:
                if ftype == TType.I64:
                    self.startCol = iprot.readI64()
                else:
                    iprot.skip(ftype)
            elif fid == 3:
                if ftype == TType.I64:
                    self.endLine = iprot.readI64()
                else:
                    iprot.skip(ftype)
            elif fid == 4:
                if ftype == TType.I64:
                    self.endCol = iprot.readI64()
                else:
                    iprot.skip(ftype)
            elif fid == 5:
                if ftype == TType.I64:
                    self.fileId = iprot.readI64()
                else:
                    iprot.skip(ftype)
            elif fid == 6:
                if ftype == TType.STRING:
                    self.filePath = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                else:
                    iprot.skip(ftype)
            else:
                iprot.skip(ftype)
            iprot.readFieldEnd()
        iprot.readStructEnd()

    def write(self, oprot):
        if oprot._fast_encode is not None and self.thrift_spec is not None:
            oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec]))
            return
        oprot.writeStructBegin('BugPathPos')
        if self.startLine is not None:
            oprot.writeFieldBegin('startLine', TType.I64, 1)
            oprot.writeI64(self.startLine)
            oprot.writeFieldEnd()
        if self.startCol is not None:
            oprot.writeFieldBegin('startCol', TType.I64, 2)
            oprot.writeI64(self.startCol)
            oprot.writeFieldEnd()
        if self.endLine is not None:
            oprot.writeFieldBegin('endLine', TType.I64, 3)
            oprot.writeI64(self.endLine)
            oprot.writeFieldEnd()
        if self.endCol is not None:
            oprot.writeFieldBegin('endCol', TType.I64, 4)
            oprot.writeI64(self.endCol)
            oprot.writeFieldEnd()
        if self.fileId is not None:
            oprot.writeFieldBegin('fileId', TType.I64, 5)
            oprot.writeI64(self.fileId)
            oprot.writeFieldEnd()
        if self.filePath is not None:
            oprot.writeFieldBegin('filePath', TType.STRING, 6)
            oprot.writeString(self.filePath.encode('utf-8') if sys.version_info[0] == 2 else self.filePath)
            oprot.writeFieldEnd()
        oprot.writeFieldStop()
        oprot.writeStructEnd()

    def validate(self):
        return

    def __repr__(self):
        L = ['%s=%r' % (key, value)
             for key, value in self.__dict__.items()]
        return '%s(%s)' % (self.__class__.__name__, ', '.join(L))

    def __eq__(self, other):
        return isinstance(other, self.__class__) and self.__dict__ == other.__dict__

    def __ne__(self, other):
        return not (self == other)


class ExtendedReportData(object):
    """
    Attributes:
     - type
     - startLine
     - startCol
     - endLine
     - endCol
     - message
     - fileId
     - filePath
    """


    def __init__(self, type=None, startLine=None, startCol=None, endLine=None, endCol=None, message=None, fileId=None, filePath=None,):
        self.type = type
        self.startLine = startLine
        self.startCol = startCol
        self.endLine = endLine
        self.endCol = endCol
        self.message = message
        self.fileId = fileId
        self.filePath = filePath

    def read(self, iprot):
        if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
            iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec])
            return
        iprot.readStructBegin()
        while True:
            (fname, ftype, fid) = iprot.readFieldBegin()
            if ftype == TType.STOP:
                break
            if fid == 1:
                if ftype == TType.I32:
                    self.type = iprot.readI32()
                else:
                    iprot.skip(ftype)
            elif fid == 2:
                if ftype == TType.I64:
                    self.startLine = iprot.readI64()
                else:
                    iprot.skip(ftype)
            elif fid == 3:
                if ftype == TType.I64:
                    self.startCol = iprot.readI64()
                else:
                    iprot.skip(ftype)
            elif fid == 4:
                if ftype == TType.I64:
                    self.endLine = iprot.readI64()
                else:
                    iprot.skip(ftype)
            elif fid == 5:
                if ftype == TType.I64:
                    self.endCol = iprot.readI64()
                else:
                    iprot.skip(ftype)
            elif fid == 6:
                if ftype == TType.STRING:
                    self.message = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                else:
                    iprot.skip(ftype)
            elif fid == 7:
                if ftype == TType.I64:
                    self.fileId = iprot.readI64()
                else:
                    iprot.skip(ftype)
            elif fid == 8:
                if ftype == TType.STRING:
                    self.filePath = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                else:
                    iprot.skip(ftype)
            else:
                iprot.skip(ftype)
            iprot.readFieldEnd()
        iprot.readStructEnd()

    def write(self, oprot):
        if oprot._fast_encode is not None and self.thrift_spec is not None:
            oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec]))
            return
        oprot.writeStructBegin('ExtendedReportData')
        if self.type is not None:
            oprot.writeFieldBegin('type', TType.I32, 1)
            oprot.writeI32(self.type)
            oprot.writeFieldEnd()
        if self.startLine is not None:
            oprot.writeFieldBegin('startLine', TType.I64, 2)
            oprot.writeI64(self.startLine)
            oprot.writeFieldEnd()
        if self.startCol is not None:
            oprot.writeFieldBegin('startCol', TType.I64, 3)
            oprot.writeI64(self.startCol)
            oprot.writeFieldEnd()
        if self.endLine is not None:
            oprot.writeFieldBegin('endLine', TType.I64, 4)
            oprot.writeI64(self.endLine)
            oprot.writeFieldEnd()
        if self.endCol is not None:
            oprot.writeFieldBegin('endCol', TType.I64, 5)
            oprot.writeI64(self.endCol)
            oprot.writeFieldEnd()
        if self.message is not None:
            oprot.writeFieldBegin('message', TType.STRING, 6)
            oprot.writeString(self.message.encode('utf-8') if sys.version_info[0] == 2 else self.message)
            oprot.writeFieldEnd()
        if self.fileId is not None:
            oprot.writeFieldBegin('fileId', TType.I64, 7)
            oprot.writeI64(self.fileId)
            oprot.writeFieldEnd()
        if self.filePath is not None:
            oprot.writeFieldBegin('filePath', TType.STRING, 8)
            oprot.writeString(self.filePath.encode('utf-8') if sys.version_info[0] == 2 else self.filePath)
            oprot.writeFieldEnd()
        oprot.writeFieldStop()
        oprot.writeStructEnd()

    def validate(self):
        return

    def __repr__(self):
        L = ['%s=%r' % (key, value)
             for key, value in self.__dict__.items()]
        return '%s(%s)' % (self.__class__.__name__, ', '.join(L))

    def __eq__(self, other):
        return isinstance(other, self.__class__) and self.__dict__ == other.__dict__

    def __ne__(self, other):
        return not (self == other)


class ReportDetails(object):
    """
    Attributes:
     - pathEvents
     - executionPath
     - extendedData
    """


    def __init__(self, pathEvents=None, executionPath=None, extendedData=None,):
        self.pathEvents = pathEvents
        self.executionPath = executionPath
        self.extendedData = extendedData

    def read(self, iprot):
        if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
            iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec])
            return
        iprot.readStructBegin()
        while True:
            (fname, ftype, fid) = iprot.readFieldBegin()
            if ftype == TType.STOP:
                break
            if fid == 1:
                if ftype == TType.LIST:
                    self.pathEvents = []
                    (_etype3, _size0) = iprot.readListBegin()
                    for _i4 in range(_size0):
                        _elem5 = BugPathEvent()
                        _elem5.read(iprot)
                        self.pathEvents.append(_elem5)
                    iprot.readListEnd()
                else:
                    iprot.skip(ftype)
            elif fid == 2:
                if ftype == TType.LIST:
                    self.executionPath = []
                    (_etype9, _size6) = iprot.readListBegin()
                    for _i10 in range(_size6):
                        _elem11 = BugPathPos()
                        _elem11.read(iprot)
                        self.executionPath.append(_elem11)
                    iprot.readListEnd()
                else:
                    iprot.skip(ftype)
            elif fid == 3:
                if ftype == TType.LIST:
                    self.extendedData = []
                    (_etype15, _size12) = iprot.readListBegin()
                    for _i16 in range(_size12):
                        _elem17 = ExtendedReportData()
                        _elem17.read(iprot)
                        self.extendedData.append(_elem17)
                    iprot.readListEnd()
                else:
                    iprot.skip(ftype)
            else:
                iprot.skip(ftype)
            iprot.readFieldEnd()
        iprot.readStructEnd()

    def write(self, oprot):
        if oprot._fast_encode is not None and self.thrift_spec is not None:
            oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec]))
            return
        oprot.writeStructBegin('ReportDetails')
        if self.pathEvents is not None:
            oprot.writeFieldBegin('pathEvents', TType.LIST, 1)
            oprot.writeListBegin(TType.STRUCT, len(self.pathEvents))
            for iter18 in self.pathEvents:
                iter18.write(oprot)
            oprot.writeListEnd()
            oprot.writeFieldEnd()
        if self.executionPath is not None:
            oprot.writeFieldBegin('executionPath', TType.LIST, 2)
            oprot.writeListBegin(TType.STRUCT, len(self.executionPath))
            for iter19 in self.executionPath:
                iter19.write(oprot)
            oprot.writeListEnd()
            oprot.writeFieldEnd()
        if self.extendedData is not None:
            oprot.writeFieldBegin('extendedData', TType.LIST, 3)
            oprot.writeListBegin(TType.STRUCT, len(self.extendedData))
            for iter20 in self.extendedData:
                iter20.write(oprot)
            oprot.writeListEnd()
            oprot.writeFieldEnd()
        oprot.writeFieldStop()
        oprot.writeStructEnd()

    def validate(self):
        return

    def __repr__(self):
        L = ['%s=%r' % (key, value)
             for key, value in self.__dict__.items()]
        return '%s(%s)' % (self.__class__.__name__, ', '.join(L))

    def __eq__(self, other):
        return isinstance(other, self.__class__) and self.__dict__ == other.__dict__

    def __ne__(self, other):
        return not (self == other)


class AnalyzerStatistics(object):
    """
    Attributes:
     - version
     - failed
     - successful
     - failedFilePaths
    """


    def __init__(self, version=None, failed=None, successful=None, failedFilePaths=None,):
        self.version = version
        self.failed = failed
        self.successful = successful
        self.failedFilePaths = failedFilePaths

    def read(self, iprot):
        if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
            iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec])
            return
        iprot.readStructBegin()
        while True:
            (fname, ftype, fid) = iprot.readFieldBegin()
            if ftype == TType.STOP:
                break
            if fid == 1:
                if ftype == TType.STRING:
                    self.version = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                else:
                    iprot.skip(ftype)
            elif fid == 2:
                if ftype == TType.I64:
                    self.failed = iprot.readI64()
                else:
                    iprot.skip(ftype)
            elif fid == 3:
                if ftype == TType.I64:
                    self.successful = iprot.readI64()
                else:
                    iprot.skip(ftype)
            elif fid == 4:
                if ftype == TType.LIST:
                    self.failedFilePaths = []
                    (_etype24, _size21) = iprot.readListBegin()
                    for _i25 in range(_size21):
                        _elem26 = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                        self.failedFilePaths.append(_elem26)
                    iprot.readListEnd()
                else:
                    iprot.skip(ftype)
            else:
                iprot.skip(ftype)
            iprot.readFieldEnd()
        iprot.readStructEnd()

    def write(self, oprot):
        if oprot._fast_encode is not None and self.thrift_spec is not None:
            oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec]))
            return
        oprot.writeStructBegin('AnalyzerStatistics')
        if self.version is not None:
            oprot.writeFieldBegin('version', TType.STRING, 1)
            oprot.writeString(self.version.encode('utf-8') if sys.version_info[0] == 2 else self.version)
            oprot.writeFieldEnd()
        if self.failed is not None:
            oprot.writeFieldBegin('failed', TType.I64, 2)
            oprot.writeI64(self.failed)
            oprot.writeFieldEnd()
        if self.successful is not None:
            oprot.writeFieldBegin('successful', TType.I64, 3)
            oprot.writeI64(self.successful)
            oprot.writeFieldEnd()
        if self.failedFilePaths is not None:
            oprot.writeFieldBegin('failedFilePaths', TType.LIST, 4)
            oprot.writeListBegin(TType.STRING, len(self.failedFilePaths))
            for iter27 in self.failedFilePaths:
                oprot.writeString(iter27.encode('utf-8') if sys.version_info[0] == 2 else iter27)
            oprot.writeListEnd()
            oprot.writeFieldEnd()
        oprot.writeFieldStop()
        oprot.writeStructEnd()

    def validate(self):
        return

    def __repr__(self):
        L = ['%s=%r' % (key, value)
             for key, value in self.__dict__.items()]
        return '%s(%s)' % (self.__class__.__name__, ', '.join(L))

    def __eq__(self, other):
        return isinstance(other, self.__class__) and self.__dict__ == other.__dict__

    def __ne__(self, other):
        return not (self == other)


class RunData(object):
    """
    Attributes:
     - runId
     - runDate
     - name
     - duration
     - resultCount
     - runCmd
     - detectionStatusCount
     - versionTag
     - codeCheckerVersion
     - analyzerStatistics
     - description
    """


    def __init__(self, runId=None, runDate=None, name=None, duration=None, resultCount=None, runCmd=None, detectionStatusCount=None, versionTag=None, codeCheckerVersion=None, analyzerStatistics=None, description=None,):
        self.runId = runId
        self.runDate = runDate
        self.name = name
        self.duration = duration
        self.resultCount = resultCount
        self.runCmd = runCmd
        self.detectionStatusCount = detectionStatusCount
        self.versionTag = versionTag
        self.codeCheckerVersion = codeCheckerVersion
        self.analyzerStatistics = analyzerStatistics
        self.description = description

    def read(self, iprot):
        if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
            iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec])
            return
        iprot.readStructBegin()
        while True:
            (fname, ftype, fid) = iprot.readFieldBegin()
            if ftype == TType.STOP:
                break
            if fid == 1:
                if ftype == TType.I64:
                    self.runId = iprot.readI64()
                else:
                    iprot.skip(ftype)
            elif fid == 2:
                if ftype == TType.STRING:
                    self.runDate = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                else:
                    iprot.skip(ftype)
            elif fid == 3:
                if ftype == TType.STRING:
                    self.name = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                else:
                    iprot.skip(ftype)
            elif fid == 4:
                if ftype == TType.I64:
                    self.duration = iprot.readI64()
                else:
                    iprot.skip(ftype)
            elif fid == 5:
                if ftype == TType.I64:
                    self.resultCount = iprot.readI64()
                else:
                    iprot.skip(ftype)
            elif fid == 6:
                if ftype == TType.STRING:
                    self.runCmd = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                else:
                    iprot.skip(ftype)
            elif fid == 7:
                if ftype == TType.MAP:
                    self.detectionStatusCount = {}
                    (_ktype29, _vtype30, _size28) = iprot.readMapBegin()
                    for _i32 in range(_size28):
                        _key33 = iprot.readI32()
                        _val34 = iprot.readI32()
                        self.detectionStatusCount[_key33] = _val34
                    iprot.readMapEnd()
                else:
                    iprot.skip(ftype)
            elif fid == 8:
                if ftype == TType.STRING:
                    self.versionTag = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                else:
                    iprot.skip(ftype)
            elif fid == 9:
                if ftype == TType.STRING:
                    self.codeCheckerVersion = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                else:
                    iprot.skip(ftype)
            elif fid == 10:
                if ftype == TType.MAP:
                    self.analyzerStatistics = {}
                    (_ktype36, _vtype37, _size35) = iprot.readMapBegin()
                    for _i39 in range(_size35):
                        _key40 = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                        _val41 = AnalyzerStatistics()
                        _val41.read(iprot)
                        self.analyzerStatistics[_key40] = _val41
                    iprot.readMapEnd()
                else:
                    iprot.skip(ftype)
            elif fid == 11:
                if ftype == TType.STRING:
                    self.description = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                else:
                    iprot.skip(ftype)
            else:
                iprot.skip(ftype)
            iprot.readFieldEnd()
        iprot.readStructEnd()

    def write(self, oprot):
        if oprot._fast_encode is not None and self.thrift_spec is not None:
            oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec]))
            return
        oprot.writeStructBegin('RunData')
        if self.runId is not None:
            oprot.writeFieldBegin('runId', TType.I64, 1)
            oprot.writeI64(self.runId)
            oprot.writeFieldEnd()
        if self.runDate is not None:
            oprot.writeFieldBegin('runDate', TType.STRING, 2)
            oprot.writeString(self.runDate.encode('utf-8') if sys.version_info[0] == 2 else self.runDate)
            oprot.writeFieldEnd()
        if self.name is not None:
            oprot.writeFieldBegin('name', TType.STRING, 3)
            oprot.writeString(self.name.encode('utf-8') if sys.version_info[0] == 2 else self.name)
            oprot.writeFieldEnd()
        if self.duration is not None:
            oprot.writeFieldBegin('duration', TType.I64, 4)
            oprot.writeI64(self.duration)
            oprot.writeFieldEnd()
        if self.resultCount is not None:
            oprot.writeFieldBegin('resultCount', TType.I64, 5)
            oprot.writeI64(self.resultCount)
            oprot.writeFieldEnd()
        if self.runCmd is not None:
            oprot.writeFieldBegin('runCmd', TType.STRING, 6)
            oprot.writeString(self.runCmd.encode('utf-8') if sys.version_info[0] == 2 else self.runCmd)
            oprot.writeFieldEnd()
        if self.detectionStatusCount is not None:
            oprot.writeFieldBegin('detectionStatusCount', TType.MAP, 7)
            oprot.writeMapBegin(TType.I32, TType.I32, len(self.detectionStatusCount))
            for kiter42, viter43 in self.detectionStatusCount.items():
                oprot.writeI32(kiter42)
                oprot.writeI32(viter43)
            oprot.writeMapEnd()
            oprot.writeFieldEnd()
        if self.versionTag is not None:
            oprot.writeFieldBegin('versionTag', TType.STRING, 8)
            oprot.writeString(self.versionTag.encode('utf-8') if sys.version_info[0] == 2 else self.versionTag)
            oprot.writeFieldEnd()
        if self.codeCheckerVersion is not None:
            oprot.writeFieldBegin('codeCheckerVersion', TType.STRING, 9)
            oprot.writeString(self.codeCheckerVersion.encode('utf-8') if sys.version_info[0] == 2 else self.codeCheckerVersion)
            oprot.writeFieldEnd()
        if self.analyzerStatistics is not None:
            oprot.writeFieldBegin('analyzerStatistics', TType.MAP, 10)
            oprot.writeMapBegin(TType.STRING, TType.STRUCT, len(self.analyzerStatistics))
            for kiter44, viter45 in self.analyzerStatistics.items():
                oprot.writeString(kiter44.encode('utf-8') if sys.version_info[0] == 2 else kiter44)
                viter45.write(oprot)
            oprot.writeMapEnd()
            oprot.writeFieldEnd()
        if self.description is not None:
            oprot.writeFieldBegin('description', TType.STRING, 11)
            oprot.writeString(self.description.encode('utf-8') if sys.version_info[0] == 2 else self.description)
            oprot.writeFieldEnd()
        oprot.writeFieldStop()
        oprot.writeStructEnd()

    def validate(self):
        return

    def __repr__(self):
        L = ['%s=%r' % (key, value)
             for key, value in self.__dict__.items()]
        return '%s(%s)' % (self.__class__.__name__, ', '.join(L))

    def __eq__(self, other):
        return isinstance(other, self.__class__) and self.__dict__ == other.__dict__

    def __ne__(self, other):
        return not (self == other)


class RunHistoryData(object):
    """
    Attributes:
     - runId
     - runName
     - versionTag
     - user
     - time
     - id
     - checkCommand
     - codeCheckerVersion
     - analyzerStatistics
     - description
    """


    def __init__(self, runId=None, runName=None, versionTag=None, user=None, time=None, id=None, checkCommand=None, codeCheckerVersion=None, analyzerStatistics=None, description=None,):
        self.runId = runId
        self.runName = runName
        self.versionTag = versionTag
        self.user = user
        self.time = time
        self.id = id
        self.checkCommand = checkCommand
        self.codeCheckerVersion = codeCheckerVersion
        self.analyzerStatistics = analyzerStatistics
        self.description = description

    def read(self, iprot):
        if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
            iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec])
            return
        iprot.readStructBegin()
        while True:
            (fname, ftype, fid) = iprot.readFieldBegin()
            if ftype == TType.STOP:
                break
            if fid == 1:
                if ftype == TType.I64:
                    self.runId = iprot.readI64()
                else:
                    iprot.skip(ftype)
            elif fid == 2:
                if ftype == TType.STRING:
                    self.runName = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                else:
                    iprot.skip(ftype)
            elif fid == 3:
                if ftype == TType.STRING:
                    self.versionTag = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                else:
                    iprot.skip(ftype)
            elif fid == 4:
                if ftype == TType.STRING:
                    self.user = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                else:
                    iprot.skip(ftype)
            elif fid == 5:
                if ftype == TType.STRING:
                    self.time = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                else:
                    iprot.skip(ftype)
            elif fid == 6:
                if ftype == TType.I64:
                    self.id = iprot.readI64()
                else:
                    iprot.skip(ftype)
            elif fid == 7:
                if ftype == TType.STRING:
                    self.checkCommand = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                else:
                    iprot.skip(ftype)
            elif fid == 8:
                if ftype == TType.STRING:
                    self.codeCheckerVersion = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                else:
                    iprot.skip(ftype)
            elif fid == 9:
                if ftype == TType.MAP:
                    self.analyzerStatistics = {}
                    (_ktype47, _vtype48, _size46) = iprot.readMapBegin()
                    for _i50 in range(_size46):
                        _key51 = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                        _val52 = AnalyzerStatistics()
                        _val52.read(iprot)
                        self.analyzerStatistics[_key51] = _val52
                    iprot.readMapEnd()
                else:
                    iprot.skip(ftype)
            elif fid == 11:
                if ftype == TType.STRING:
                    self.description = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                else:
                    iprot.skip(ftype)
            else:
                iprot.skip(ftype)
            iprot.readFieldEnd()
        iprot.readStructEnd()

    def write(self, oprot):
        if oprot._fast_encode is not None and self.thrift_spec is not None:
            oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec]))
            return
        oprot.writeStructBegin('RunHistoryData')
        if self.runId is not None:
            oprot.writeFieldBegin('runId', TType.I64, 1)
            oprot.writeI64(self.runId)
            oprot.writeFieldEnd()
        if self.runName is not None:
            oprot.writeFieldBegin('runName', TType.STRING, 2)
            oprot.writeString(self.runName.encode('utf-8') if sys.version_info[0] == 2 else self.runName)
            oprot.writeFieldEnd()
        if self.versionTag is not None:
            oprot.writeFieldBegin('versionTag', TType.STRING, 3)
            oprot.writeString(self.versionTag.encode('utf-8') if sys.version_info[0] == 2 else self.versionTag)
            oprot.writeFieldEnd()
        if self.user is not None:
            oprot.writeFieldBegin('user', TType.STRING, 4)
            oprot.writeString(self.user.encode('utf-8') if sys.version_info[0] == 2 else self.user)
            oprot.writeFieldEnd()
        if self.time is not None:
            oprot.writeFieldBegin('time', TType.STRING, 5)
            oprot.writeString(self.time.encode('utf-8') if sys.version_info[0] == 2 else self.time)
            oprot.writeFieldEnd()
        if self.id is not None:
            oprot.writeFieldBegin('id', TType.I64, 6)
            oprot.writeI64(self.id)
            oprot.writeFieldEnd()
        if self.checkCommand is not None:
            oprot.writeFieldBegin('checkCommand', TType.STRING, 7)
            oprot.writeString(self.checkCommand.encode('utf-8') if sys.version_info[0] == 2 else self.checkCommand)
            oprot.writeFieldEnd()
        if self.codeCheckerVersion is not None:
            oprot.writeFieldBegin('codeCheckerVersion', TType.STRING, 8)
            oprot.writeString(self.codeCheckerVersion.encode('utf-8') if sys.version_info[0] == 2 else self.codeCheckerVersion)
            oprot.writeFieldEnd()
        if self.analyzerStatistics is not None:
            oprot.writeFieldBegin('analyzerStatistics', TType.MAP, 9)
            oprot.writeMapBegin(TType.STRING, TType.STRUCT, len(self.analyzerStatistics))
            for kiter53, viter54 in self.analyzerStatistics.items():
                oprot.writeString(kiter53.encode('utf-8') if sys.version_info[0] == 2 else kiter53)
                viter54.write(oprot)
            oprot.writeMapEnd()
            oprot.writeFieldEnd()
        if self.description is not None:
            oprot.writeFieldBegin('description', TType.STRING, 11)
            oprot.writeString(self.description.encode('utf-8') if sys.version_info[0] == 2 else self.description)
            oprot.writeFieldEnd()
        oprot.writeFieldStop()
        oprot.writeStructEnd()

    def validate(self):
        return

    def __repr__(self):
        L = ['%s=%r' % (key, value)
             for key, value in self.__dict__.items()]
        return '%s(%s)' % (self.__class__.__name__, ', '.join(L))

    def __eq__(self, other):
        return isinstance(other, self.__class__) and self.__dict__ == other.__dict__

    def __ne__(self, other):
        return not (self == other)


class RunHistoryFilter(object):
    """
    Members of this struct are interpreted in "AND" relation with each other.
    Between the list elements there is "OR" relation.
    If exactMatch field is True it will use exact match for run names.

    Attributes:
     - tagNames
     - tagIds
    """


    def __init__(self, tagNames=None, tagIds=None,):
        self.tagNames = tagNames
        self.tagIds = tagIds

    def read(self, iprot):
        if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
            iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec])
            return
        iprot.readStructBegin()
        while True:
            (fname, ftype, fid) = iprot.readFieldBegin()
            if ftype == TType.STOP:
                break
            if fid == 1:
                if ftype == TType.LIST:
                    self.tagNames = []
                    (_etype58, _size55) = iprot.readListBegin()
                    for _i59 in range(_size55):
                        _elem60 = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                        self.tagNames.append(_elem60)
                    iprot.readListEnd()
                else:
                    iprot.skip(ftype)
            elif fid == 2:
                if ftype == TType.LIST:
                    self.tagIds = []
                    (_etype64, _size61) = iprot.readListBegin()
                    for _i65 in range(_size61):
                        _elem66 = iprot.readI64()
                        self.tagIds.append(_elem66)
                    iprot.readListEnd()
                else:
                    iprot.skip(ftype)
            else:
                iprot.skip(ftype)
            iprot.readFieldEnd()
        iprot.readStructEnd()

    def write(self, oprot):
        if oprot._fast_encode is not None and self.thrift_spec is not None:
            oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec]))
            return
        oprot.writeStructBegin('RunHistoryFilter')
        if self.tagNames is not None:
            oprot.writeFieldBegin('tagNames', TType.LIST, 1)
            oprot.writeListBegin(TType.STRING, len(self.tagNames))
            for iter67 in self.tagNames:
                oprot.writeString(iter67.encode('utf-8') if sys.version_info[0] == 2 else iter67)
            oprot.writeListEnd()
            oprot.writeFieldEnd()
        if self.tagIds is not None:
            oprot.writeFieldBegin('tagIds', TType.LIST, 2)
            oprot.writeListBegin(TType.I64, len(self.tagIds))
            for iter68 in self.tagIds:
                oprot.writeI64(iter68)
            oprot.writeListEnd()
            oprot.writeFieldEnd()
        oprot.writeFieldStop()
        oprot.writeStructEnd()

    def validate(self):
        return

    def __repr__(self):
        L = ['%s=%r' % (key, value)
             for key, value in self.__dict__.items()]
        return '%s(%s)' % (self.__class__.__name__, ', '.join(L))

    def __eq__(self, other):
        return isinstance(other, self.__class__) and self.__dict__ == other.__dict__

    def __ne__(self, other):
        return not (self == other)


class RunTagCount(object):
    """
    Attributes:
     - time
     - name
     - count
     - id
     - runName
    """


    def __init__(self, time=None, name=None, count=None, id=None, runName=None,):
        self.time = time
        self.name = name
        self.count = count
        self.id = id
        self.runName = runName

    def read(self, iprot):
        if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
            iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec])
            return
        iprot.readStructBegin()
        while True:
            (fname, ftype, fid) = iprot.readFieldBegin()
            if ftype == TType.STOP:
                break
            if fid == 1:
                if ftype == TType.STRING:
                    self.time = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                else:
                    iprot.skip(ftype)
            elif fid == 2:
                if ftype == TType.STRING:
                    self.name = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                else:
                    iprot.skip(ftype)
            elif fid == 3:
                if ftype == TType.I64:
                    self.count = iprot.readI64()
                else:
                    iprot.skip(ftype)
            elif fid == 4:
                if ftype == TType.I64:
                    self.id = iprot.readI64()
                else:
                    iprot.skip(ftype)
            elif fid == 5:
                if ftype == TType.STRING:
                    self.runName = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                else:
                    iprot.skip(ftype)
            else:
                iprot.skip(ftype)
            iprot.readFieldEnd()
        iprot.readStructEnd()

    def write(self, oprot):
        if oprot._fast_encode is not None and self.thrift_spec is not None:
            oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec]))
            return
        oprot.writeStructBegin('RunTagCount')
        if self.time is not None:
            oprot.writeFieldBegin('time', TType.STRING, 1)
            oprot.writeString(self.time.encode('utf-8') if sys.version_info[0] == 2 else self.time)
            oprot.writeFieldEnd()
        if self.name is not None:
            oprot.writeFieldBegin('name', TType.STRING, 2)
            oprot.writeString(self.name.encode('utf-8') if sys.version_info[0] == 2 else self.name)
            oprot.writeFieldEnd()
        if self.count is not None:
            oprot.writeFieldBegin('count', TType.I64, 3)
            oprot.writeI64(self.count)
            oprot.writeFieldEnd()
        if self.id is not None:
            oprot.writeFieldBegin('id', TType.I64, 4)
            oprot.writeI64(self.id)
            oprot.writeFieldEnd()
        if self.runName is not None:
            oprot.writeFieldBegin('runName', TType.STRING, 5)
            oprot.writeString(self.runName.encode('utf-8') if sys.version_info[0] == 2 else self.runName)
            oprot.writeFieldEnd()
        oprot.writeFieldStop()
        oprot.writeStructEnd()

    def validate(self):
        return

    def __repr__(self):
        L = ['%s=%r' % (key, value)
             for key, value in self.__dict__.items()]
        return '%s(%s)' % (self.__class__.__name__, ', '.join(L))

    def __eq__(self, other):
        return isinstance(other, self.__class__) and self.__dict__ == other.__dict__

    def __ne__(self, other):
        return not (self == other)


class ReviewData(object):
    """
    Attributes:
     - status
     - comment
     - author
     - date
    """


    def __init__(self, status=None, comment=None, author=None, date=None,):
        self.status = status
        self.comment = comment
        self.author = author
        self.date = date

    def read(self, iprot):
        if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
            iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec])
            return
        iprot.readStructBegin()
        while True:
            (fname, ftype, fid) = iprot.readFieldBegin()
            if ftype == TType.STOP:
                break
            if fid == 1:
                if ftype == TType.I32:
                    self.status = iprot.readI32()
                else:
                    iprot.skip(ftype)
            elif fid == 2:
                if ftype == TType.STRING:
                    self.comment = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                else:
                    iprot.skip(ftype)
            elif fid == 3:
                if ftype == TType.STRING:
                    self.author = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                else:
                    iprot.skip(ftype)
            elif fid == 4:
                if ftype == TType.STRING:
                    self.date = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                else:
                    iprot.skip(ftype)
            else:
                iprot.skip(ftype)
            iprot.readFieldEnd()
        iprot.readStructEnd()

    def write(self, oprot):
        if oprot._fast_encode is not None and self.thrift_spec is not None:
            oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec]))
            return
        oprot.writeStructBegin('ReviewData')
        if self.status is not None:
            oprot.writeFieldBegin('status', TType.I32, 1)
            oprot.writeI32(self.status)
            oprot.writeFieldEnd()
        if self.comment is not None:
            oprot.writeFieldBegin('comment', TType.STRING, 2)
            oprot.writeString(self.comment.encode('utf-8') if sys.version_info[0] == 2 else self.comment)
            oprot.writeFieldEnd()
        if self.author is not None:
            oprot.writeFieldBegin('author', TType.STRING, 3)
            oprot.writeString(self.author.encode('utf-8') if sys.version_info[0] == 2 else self.author)
            oprot.writeFieldEnd()
        if self.date is not None:
            oprot.writeFieldBegin('date', TType.STRING, 4)
            oprot.writeString(self.date.encode('utf-8') if sys.version_info[0] == 2 else self.date)
            oprot.writeFieldEnd()
        oprot.writeFieldStop()
        oprot.writeStructEnd()

    def validate(self):
        return

    def __repr__(self):
        L = ['%s=%r' % (key, value)
             for key, value in self.__dict__.items()]
        return '%s(%s)' % (self.__class__.__name__, ', '.join(L))

    def __eq__(self, other):
        return isinstance(other, self.__class__) and self.__dict__ == other.__dict__

    def __ne__(self, other):
        return not (self == other)


class ReportData(object):
    """
    Attributes:
     - runId
     - checkerId
     - bugHash
     - checkedFile
     - checkerMsg
     - reportId
     - fileId
     - line
     - column
     - severity
     - reviewData
     - detectionStatus
     - detectedAt
     - fixedAt
     - bugPathLength
     - details
    """


    def __init__(self, runId=None, checkerId=None, bugHash=None, checkedFile=None, checkerMsg=None, reportId=None, fileId=None, line=None, column=None, severity=None, reviewData=None, detectionStatus=None, detectedAt=None, fixedAt=None, bugPathLength=None, details=None,):
        self.runId = runId
        self.checkerId = checkerId
        self.bugHash = bugHash
        self.checkedFile = checkedFile
        self.checkerMsg = checkerMsg
        self.reportId = reportId
        self.fileId = fileId
        self.line = line
        self.column = column
        self.severity = severity
        self.reviewData = reviewData
        self.detectionStatus = detectionStatus
        self.detectedAt = detectedAt
        self.fixedAt = fixedAt
        self.bugPathLength = bugPathLength
        self.details = details

    def read(self, iprot):
        if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
            iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec])
            return
        iprot.readStructBegin()
        while True:
            (fname, ftype, fid) = iprot.readFieldBegin()
            if ftype == TType.STOP:
                break
            if fid == 1:
                if ftype == TType.I64:
                    self.runId = iprot.readI64()
                else:
                    iprot.skip(ftype)
            elif fid == 2:
                if ftype == TType.STRING:
                    self.checkerId = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                else:
                    iprot.skip(ftype)
            elif fid == 3:
                if ftype == TType.STRING:
                    self.bugHash = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                else:
                    iprot.skip(ftype)
            elif fid == 4:
                if ftype == TType.STRING:
                    self.checkedFile = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                else:
                    iprot.skip(ftype)
            elif fid == 5:
                if ftype == TType.STRING:
                    self.checkerMsg = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                else:
                    iprot.skip(ftype)
            elif fid == 6:
                if ftype == TType.I64:
                    self.reportId = iprot.readI64()
                else:
                    iprot.skip(ftype)
            elif fid == 7:
                if ftype == TType.I64:
                    self.fileId = iprot.readI64()
                else:
                    iprot.skip(ftype)
            elif fid == 8:
                if ftype == TType.I64:
                    self.line = iprot.readI64()
                else:
                    iprot.skip(ftype)
            elif fid == 9:
                if ftype == TType.I64:
                    self.column = iprot.readI64()
                else:
                    iprot.skip(ftype)
            elif fid == 10:
                if ftype == TType.I32:
                    self.severity = iprot.readI32()
                else:
                    iprot.skip(ftype)
            elif fid == 11:
                if ftype == TType.STRUCT:
                    self.reviewData = ReviewData()
                    self.reviewData.read(iprot)
                else:
                    iprot.skip(ftype)
            elif fid == 12:
                if ftype == TType.I32:
                    self.detectionStatus = iprot.readI32()
                else:
                    iprot.skip(ftype)
            elif fid == 13:
                if ftype == TType.STRING:
                    self.detectedAt = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                else:
                    iprot.skip(ftype)
            elif fid == 14:
                if ftype == TType.STRING:
                    self.fixedAt = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                else:
                    iprot.skip(ftype)
            elif fid == 15:
                if ftype == TType.I64:
                    self.bugPathLength = iprot.readI64()
                else:
                    iprot.skip(ftype)
            elif fid == 16:
                if ftype == TType.STRUCT:
                    self.details = ReportDetails()
                    self.details.read(iprot)
                else:
                    iprot.skip(ftype)
            else:
                iprot.skip(ftype)
            iprot.readFieldEnd()
        iprot.readStructEnd()

    def write(self, oprot):
        if oprot._fast_encode is not None and self.thrift_spec is not None:
            oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec]))
            return
        oprot.writeStructBegin('ReportData')
        if self.runId is not None:
            oprot.writeFieldBegin('runId', TType.I64, 1)
            oprot.writeI64(self.runId)
            oprot.writeFieldEnd()
        if self.checkerId is not None:
            oprot.writeFieldBegin('checkerId', TType.STRING, 2)
            oprot.writeString(self.checkerId.encode('utf-8') if sys.version_info[0] == 2 else self.checkerId)
            oprot.writeFieldEnd()
        if self.bugHash is not None:
            oprot.writeFieldBegin('bugHash', TType.STRING, 3)
            oprot.writeString(self.bugHash.encode('utf-8') if sys.version_info[0] == 2 else self.bugHash)
            oprot.writeFieldEnd()
        if self.checkedFile is not None:
            oprot.writeFieldBegin('checkedFile', TType.STRING, 4)
            oprot.writeString(self.checkedFile.encode('utf-8') if sys.version_info[0] == 2 else self.checkedFile)
            oprot.writeFieldEnd()
        if self.checkerMsg is not None:
            oprot.writeFieldBegin('checkerMsg', TType.STRING, 5)
            oprot.writeString(self.checkerMsg.encode('utf-8') if sys.version_info[0] == 2 else self.checkerMsg)
            oprot.writeFieldEnd()
        if self.reportId is not None:
            oprot.writeFieldBegin('reportId', TType.I64, 6)
            oprot.writeI64(self.reportId)
            oprot.writeFieldEnd()
        if self.fileId is not None:
            oprot.writeFieldBegin('fileId', TType.I64, 7)
            oprot.writeI64(self.fileId)
            oprot.writeFieldEnd()
        if self.line is not None:
            oprot.writeFieldBegin('line', TType.I64, 8)
            oprot.writeI64(self.line)
            oprot.writeFieldEnd()
        if self.column is not None:
            oprot.writeFieldBegin('column', TType.I64, 9)
            oprot.writeI64(self.column)
            oprot.writeFieldEnd()
        if self.severity is not None:
            oprot.writeFieldBegin('severity', TType.I32, 10)
            oprot.writeI32(self.severity)
            oprot.writeFieldEnd()
        if self.reviewData is not None:
            oprot.writeFieldBegin('reviewData', TType.STRUCT, 11)
            self.reviewData.write(oprot)
            oprot.writeFieldEnd()
        if self.detectionStatus is not None:
            oprot.writeFieldBegin('detectionStatus', TType.I32, 12)
            oprot.writeI32(self.detectionStatus)
            oprot.writeFieldEnd()
        if self.detectedAt is not None:
            oprot.writeFieldBegin('detectedAt', TType.STRING, 13)
            oprot.writeString(self.detectedAt.encode('utf-8') if sys.version_info[0] == 2 else self.detectedAt)
            oprot.writeFieldEnd()
        if self.fixedAt is not None:
            oprot.writeFieldBegin('fixedAt', TType.STRING, 14)
            oprot.writeString(self.fixedAt.encode('utf-8') if sys.version_info[0] == 2 else self.fixedAt)
            oprot.writeFieldEnd()
        if self.bugPathLength is not None:
            oprot.writeFieldBegin('bugPathLength', TType.I64, 15)
            oprot.writeI64(self.bugPathLength)
            oprot.writeFieldEnd()
        if self.details is not None:
            oprot.writeFieldBegin('details', TType.STRUCT, 16)
            self.details.write(oprot)
            oprot.writeFieldEnd()
        oprot.writeFieldStop()
        oprot.writeStructEnd()

    def validate(self):
        return

    def __repr__(self):
        L = ['%s=%r' % (key, value)
             for key, value in self.__dict__.items()]
        return '%s(%s)' % (self.__class__.__name__, ', '.join(L))

    def __eq__(self, other):
        return isinstance(other, self.__class__) and self.__dict__ == other.__dict__

    def __ne__(self, other):
        return not (self == other)


class BugPathLengthRange(object):
    """
    Attributes:
     - min
     - max
    """


    def __init__(self, min=None, max=None,):
        self.min = min
        self.max = max

    def read(self, iprot):
        if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
            iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec])
            return
        iprot.readStructBegin()
        while True:
            (fname, ftype, fid) = iprot.readFieldBegin()
            if ftype == TType.STOP:
                break
            if fid == 1:
                if ftype == TType.I64:
                    self.min = iprot.readI64()
                else:
                    iprot.skip(ftype)
            elif fid == 2:
                if ftype == TType.I64:
                    self.max = iprot.readI64()
                else:
                    iprot.skip(ftype)
            else:
                iprot.skip(ftype)
            iprot.readFieldEnd()
        iprot.readStructEnd()

    def write(self, oprot):
        if oprot._fast_encode is not None and self.thrift_spec is not None:
            oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec]))
            return
        oprot.writeStructBegin('BugPathLengthRange')
        if self.min is not None:
            oprot.writeFieldBegin('min', TType.I64, 1)
            oprot.writeI64(self.min)
            oprot.writeFieldEnd()
        if self.max is not None:
            oprot.writeFieldBegin('max', TType.I64, 2)
            oprot.writeI64(self.max)
            oprot.writeFieldEnd()
        oprot.writeFieldStop()
        oprot.writeStructEnd()

    def validate(self):
        return

    def __repr__(self):
        L = ['%s=%r' % (key, value)
             for key, value in self.__dict__.items()]
        return '%s(%s)' % (self.__class__.__name__, ', '.join(L))

    def __eq__(self, other):
        return isinstance(other, self.__class__) and self.__dict__ == other.__dict__

    def __ne__(self, other):
        return not (self == other)


class DateInterval(object):
    """
    Attributes:
     - before
     - after
    """


    def __init__(self, before=None, after=None,):
        self.before = before
        self.after = after

    def read(self, iprot):
        if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
            iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec])
            return
        iprot.readStructBegin()
        while True:
            (fname, ftype, fid) = iprot.readFieldBegin()
            if ftype == TType.STOP:
                break
            if fid == 1:
                if ftype == TType.I64:
                    self.before = iprot.readI64()
                else:
                    iprot.skip(ftype)
            elif fid == 2:
                if ftype == TType.I64:
                    self.after = iprot.readI64()
                else:
                    iprot.skip(ftype)
            else:
                iprot.skip(ftype)
            iprot.readFieldEnd()
        iprot.readStructEnd()

    def write(self, oprot):
        if oprot._fast_encode is not None and self.thrift_spec is not None:
            oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec]))
            return
        oprot.writeStructBegin('DateInterval')
        if self.before is not None:
            oprot.writeFieldBegin('before', TType.I64, 1)
            oprot.writeI64(self.before)
            oprot.writeFieldEnd()
        if self.after is not None:
            oprot.writeFieldBegin('after', TType.I64, 2)
            oprot.writeI64(self.after)
            oprot.writeFieldEnd()
        oprot.writeFieldStop()
        oprot.writeStructEnd()

    def validate(self):
        return

    def __repr__(self):
        L = ['%s=%r' % (key, value)
             for key, value in self.__dict__.items()]
        return '%s(%s)' % (self.__class__.__name__, ', '.join(L))

    def __eq__(self, other):
        return isinstance(other, self.__class__) and self.__dict__ == other.__dict__

    def __ne__(self, other):
        return not (self == other)


class ReportDate(object):
    """
    Attributes:
     - detected
     - fixed
    """


    def __init__(self, detected=None, fixed=None,):
        self.detected = detected
        self.fixed = fixed

    def read(self, iprot):
        if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
            iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec])
            return
        iprot.readStructBegin()
        while True:
            (fname, ftype, fid) = iprot.readFieldBegin()
            if ftype == TType.STOP:
                break
            if fid == 1:
                if ftype == TType.STRUCT:
                    self.detected = DateInterval()
                    self.detected.read(iprot)
                else:
                    iprot.skip(ftype)
            elif fid == 2:
                if ftype == TType.STRUCT:
                    self.fixed = DateInterval()
                    self.fixed.read(iprot)
                else:
                    iprot.skip(ftype)
            else:
                iprot.skip(ftype)
            iprot.readFieldEnd()
        iprot.readStructEnd()

    def write(self, oprot):
        if oprot._fast_encode is not None and self.thrift_spec is not None:
            oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec]))
            return
        oprot.writeStructBegin('ReportDate')
        if self.detected is not None:
            oprot.writeFieldBegin('detected', TType.STRUCT, 1)
            self.detected.write(oprot)
            oprot.writeFieldEnd()
        if self.fixed is not None:
            oprot.writeFieldBegin('fixed', TType.STRUCT, 2)
            self.fixed.write(oprot)
            oprot.writeFieldEnd()
        oprot.writeFieldStop()
        oprot.writeStructEnd()

    def validate(self):
        return

    def __repr__(self):
        L = ['%s=%r' % (key, value)
             for key, value in self.__dict__.items()]
        return '%s(%s)' % (self.__class__.__name__, ', '.join(L))

    def __eq__(self, other):
        return isinstance(other, self.__class__) and self.__dict__ == other.__dict__

    def __ne__(self, other):
        return not (self == other)


class ReportFilter(object):
    """
    Members of this struct are interpreted in "OR" relation with each other.
    Between the elements of the list there is "AND" relation.

    Attributes:
     - filepath
     - checkerMsg
     - checkerName
     - reportHash
     - severity
     - reviewStatus
     - detectionStatus
     - runHistoryTag
     - firstDetectionDate
     - fixDate
     - isUnique
     - runName
     - runTag
     - componentNames
     - bugPathLength
     - date
    """


    def __init__(self, filepath=None, checkerMsg=None, checkerName=None, reportHash=None, severity=None, reviewStatus=None, detectionStatus=None, runHistoryTag=None, firstDetectionDate=None, fixDate=None, isUnique=None, runName=None, runTag=None, componentNames=None, bugPathLength=None, date=None,):
        self.filepath = filepath
        self.checkerMsg = checkerMsg
        self.checkerName = checkerName
        self.reportHash = reportHash
        self.severity = severity
        self.reviewStatus = reviewStatus
        self.detectionStatus = detectionStatus
        self.runHistoryTag = runHistoryTag
        self.firstDetectionDate = firstDetectionDate
        self.fixDate = fixDate
        self.isUnique = isUnique
        self.runName = runName
        self.runTag = runTag
        self.componentNames = componentNames
        self.bugPathLength = bugPathLength
        self.date = date

    def read(self, iprot):
        if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
            iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec])
            return
        iprot.readStructBegin()
        while True:
            (fname, ftype, fid) = iprot.readFieldBegin()
            if ftype == TType.STOP:
                break
            if fid == 1:
                if ftype == TType.LIST:
                    self.filepath = []
                    (_etype72, _size69) = iprot.readListBegin()
                    for _i73 in range(_size69):
                        _elem74 = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                        self.filepath.append(_elem74)
                    iprot.readListEnd()
                else:
                    iprot.skip(ftype)
            elif fid == 2:
                if ftype == TType.LIST:
                    self.checkerMsg = []
                    (_etype78, _size75) = iprot.readListBegin()
                    for _i79 in range(_size75):
                        _elem80 = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                        self.checkerMsg.append(_elem80)
                    iprot.readListEnd()
                else:
                    iprot.skip(ftype)
            elif fid == 3:
                if ftype == TType.LIST:
                    self.checkerName = []
                    (_etype84, _size81) = iprot.readListBegin()
                    for _i85 in range(_size81):
                        _elem86 = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                        self.checkerName.append(_elem86)
                    iprot.readListEnd()
                else:
                    iprot.skip(ftype)
            elif fid == 4:
                if ftype == TType.LIST:
                    self.reportHash = []
                    (_etype90, _size87) = iprot.readListBegin()
                    for _i91 in range(_size87):
                        _elem92 = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                        self.reportHash.append(_elem92)
                    iprot.readListEnd()
                else:
                    iprot.skip(ftype)
            elif fid == 5:
                if ftype == TType.LIST:
                    self.severity = []
                    (_etype96, _size93) = iprot.readListBegin()
                    for _i97 in range(_size93):
                        _elem98 = iprot.readI32()
                        self.severity.append(_elem98)
                    iprot.readListEnd()
                else:
                    iprot.skip(ftype)
            elif fid == 6:
                if ftype == TType.LIST:
                    self.reviewStatus = []
                    (_etype102, _size99) = iprot.readListBegin()
                    for _i103 in range(_size99):
                        _elem104 = iprot.readI32()
                        self.reviewStatus.append(_elem104)
                    iprot.readListEnd()
                else:
                    iprot.skip(ftype)
            elif fid == 7:
                if ftype == TType.LIST:
                    self.detectionStatus = []
                    (_etype108, _size105) = iprot.readListBegin()
                    for _i109 in range(_size105):
                        _elem110 = iprot.readI32()
                        self.detectionStatus.append(_elem110)
                    iprot.readListEnd()
                else:
                    iprot.skip(ftype)
            elif fid == 8:
                if ftype == TType.LIST:
                    self.runHistoryTag = []
                    (_etype114, _size111) = iprot.readListBegin()
                    for _i115 in range(_size111):
                        _elem116 = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                        self.runHistoryTag.append(_elem116)
                    iprot.readListEnd()
                else:
                    iprot.skip(ftype)
            elif fid == 9:
                if ftype == TType.I64:
                    self.firstDetectionDate = iprot.readI64()
                else:
                    iprot.skip(ftype)
            elif fid == 10:
                if ftype == TType.I64:
                    self.fixDate = iprot.readI64()
                else:
                    iprot.skip(ftype)
            elif fid == 11:
                if ftype == TType.BOOL:
                    self.isUnique = iprot.readBool()
                else:
                    iprot.skip(ftype)
            elif fid == 12:
                if ftype == TType.LIST:
                    self.runName = []
                    (_etype120, _size117) = iprot.readListBegin()
                    for _i121 in range(_size117):
                        _elem122 = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                        self.runName.append(_elem122)
                    iprot.readListEnd()
                else:
                    iprot.skip(ftype)
            elif fid == 13:
                if ftype == TType.LIST:
                    self.runTag = []
                    (_etype126, _size123) = iprot.readListBegin()
                    for _i127 in range(_size123):
                        _elem128 = iprot.readI64()
                        self.runTag.append(_elem128)
                    iprot.readListEnd()
                else:
                    iprot.skip(ftype)
            elif fid == 14:
                if ftype == TType.LIST:
                    self.componentNames = []
                    (_etype132, _size129) = iprot.readListBegin()
                    for _i133 in range(_size129):
                        _elem134 = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                        self.componentNames.append(_elem134)
                    iprot.readListEnd()
                else:
                    iprot.skip(ftype)
            elif fid == 15:
                if ftype == TType.STRUCT:
                    self.bugPathLength = BugPathLengthRange()
                    self.bugPathLength.read(iprot)
                else:
                    iprot.skip(ftype)
            elif fid == 16:
                if ftype == TType.STRUCT:
                    self.date = ReportDate()
                    self.date.read(iprot)
                else:
                    iprot.skip(ftype)
            else:
                iprot.skip(ftype)
            iprot.readFieldEnd()
        iprot.readStructEnd()

    def write(self, oprot):
        if oprot._fast_encode is not None and self.thrift_spec is not None:
            oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec]))
            return
        oprot.writeStructBegin('ReportFilter')
        if self.filepath is not None:
            oprot.writeFieldBegin('filepath', TType.LIST, 1)
            oprot.writeListBegin(TType.STRING, len(self.filepath))
            for iter135 in self.filepath:
                oprot.writeString(iter135.encode('utf-8') if sys.version_info[0] == 2 else iter135)
            oprot.writeListEnd()
            oprot.writeFieldEnd()
        if self.checkerMsg is not None:
            oprot.writeFieldBegin('checkerMsg', TType.LIST, 2)
            oprot.writeListBegin(TType.STRING, len(self.checkerMsg))
            for iter136 in self.checkerMsg:
                oprot.writeString(iter136.encode('utf-8') if sys.version_info[0] == 2 else iter136)
            oprot.writeListEnd()
            oprot.writeFieldEnd()
        if self.checkerName is not None:
            oprot.writeFieldBegin('checkerName', TType.LIST, 3)
            oprot.writeListBegin(TType.STRING, len(self.checkerName))
            for iter137 in self.checkerName:
                oprot.writeString(iter137.encode('utf-8') if sys.version_info[0] == 2 else iter137)
            oprot.writeListEnd()
            oprot.writeFieldEnd()
        if self.reportHash is not None:
            oprot.writeFieldBegin('reportHash', TType.LIST, 4)
            oprot.writeListBegin(TType.STRING, len(self.reportHash))
            for iter138 in self.reportHash:
                oprot.writeString(iter138.encode('utf-8') if sys.version_info[0] == 2 else iter138)
            oprot.writeListEnd()
            oprot.writeFieldEnd()
        if self.severity is not None:
            oprot.writeFieldBegin('severity', TType.LIST, 5)
            oprot.writeListBegin(TType.I32, len(self.severity))
            for iter139 in self.severity:
                oprot.writeI32(iter139)
            oprot.writeListEnd()
            oprot.writeFieldEnd()
        if self.reviewStatus is not None:
            oprot.writeFieldBegin('reviewStatus', TType.LIST, 6)
            oprot.writeListBegin(TType.I32, len(self.reviewStatus))
            for iter140 in self.reviewStatus:
                oprot.writeI32(iter140)
            oprot.writeListEnd()
            oprot.writeFieldEnd()
        if self.detectionStatus is not None:
            oprot.writeFieldBegin('detectionStatus', TType.LIST, 7)
            oprot.writeListBegin(TType.I32, len(self.detectionStatus))
            for iter141 in self.detectionStatus:
                oprot.writeI32(iter141)
            oprot.writeListEnd()
            oprot.writeFieldEnd()
        if self.runHistoryTag is not None:
            oprot.writeFieldBegin('runHistoryTag', TType.LIST, 8)
            oprot.writeListBegin(TType.STRING, len(self.runHistoryTag))
            for iter142 in self.runHistoryTag:
                oprot.writeString(iter142.encode('utf-8') if sys.version_info[0] == 2 else iter142)
            oprot.writeListEnd()
            oprot.writeFieldEnd()
        if self.firstDetectionDate is not None:
            oprot.writeFieldBegin('firstDetectionDate', TType.I64, 9)
            oprot.writeI64(self.firstDetectionDate)
            oprot.writeFieldEnd()
        if self.fixDate is not None:
            oprot.writeFieldBegin('fixDate', TType.I64, 10)
            oprot.writeI64(self.fixDate)
            oprot.writeFieldEnd()
        if self.isUnique is not None:
            oprot.writeFieldBegin('isUnique', TType.BOOL, 11)
            oprot.writeBool(self.isUnique)
            oprot.writeFieldEnd()
        if self.runName is not None:
            oprot.writeFieldBegin('runName', TType.LIST, 12)
            oprot.writeListBegin(TType.STRING, len(self.runName))
            for iter143 in self.runName:
                oprot.writeString(iter143.encode('utf-8') if sys.version_info[0] == 2 else iter143)
            oprot.writeListEnd()
            oprot.writeFieldEnd()
        if self.runTag is not None:
            oprot.writeFieldBegin('runTag', TType.LIST, 13)
            oprot.writeListBegin(TType.I64, len(self.runTag))
            for iter144 in self.runTag:
                oprot.writeI64(iter144)
            oprot.writeListEnd()
            oprot.writeFieldEnd()
        if self.componentNames is not None:
            oprot.writeFieldBegin('componentNames', TType.LIST, 14)
            oprot.writeListBegin(TType.STRING, len(self.componentNames))
            for iter145 in self.componentNames:
                oprot.writeString(iter145.encode('utf-8') if sys.version_info[0] == 2 else iter145)
            oprot.writeListEnd()
            oprot.writeFieldEnd()
        if self.bugPathLength is not None:
            oprot.writeFieldBegin('bugPathLength', TType.STRUCT, 15)
            self.bugPathLength.write(oprot)
            oprot.writeFieldEnd()
        if self.date is not None:
            oprot.writeFieldBegin('date', TType.STRUCT, 16)
            self.date.write(oprot)
            oprot.writeFieldEnd()
        oprot.writeFieldStop()
        oprot.writeStructEnd()

    def validate(self):
        return

    def __repr__(self):
        L = ['%s=%r' % (key, value)
             for key, value in self.__dict__.items()]
        return '%s(%s)' % (self.__class__.__name__, ', '.join(L))

    def __eq__(self, other):
        return isinstance(other, self.__class__) and self.__dict__ == other.__dict__

    def __ne__(self, other):
        return not (self == other)


class RunReportCount(object):
    """
    Attributes:
     - runId
     - name
     - reportCount
    """


    def __init__(self, runId=None, name=None, reportCount=None,):
        self.runId = runId
        self.name = name
        self.reportCount = reportCount

    def read(self, iprot):
        if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
            iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec])
            return
        iprot.readStructBegin()
        while True:
            (fname, ftype, fid) = iprot.readFieldBegin()
            if ftype == TType.STOP:
                break
            if fid == 1:
                if ftype == TType.I64:
                    self.runId = iprot.readI64()
                else:
                    iprot.skip(ftype)
            elif fid == 2:
                if ftype == TType.STRING:
                    self.name = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                else:
                    iprot.skip(ftype)
            elif fid == 3:
                if ftype == TType.I64:
                    self.reportCount = iprot.readI64()
                else:
                    iprot.skip(ftype)
            else:
                iprot.skip(ftype)
            iprot.readFieldEnd()
        iprot.readStructEnd()

    def write(self, oprot):
        if oprot._fast_encode is not None and self.thrift_spec is not None:
            oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec]))
            return
        oprot.writeStructBegin('RunReportCount')
        if self.runId is not None:
            oprot.writeFieldBegin('runId', TType.I64, 1)
            oprot.writeI64(self.runId)
            oprot.writeFieldEnd()
        if self.name is not None:
            oprot.writeFieldBegin('name', TType.STRING, 2)
            oprot.writeString(self.name.encode('utf-8') if sys.version_info[0] == 2 else self.name)
            oprot.writeFieldEnd()
        if self.reportCount is not None:
            oprot.writeFieldBegin('reportCount', TType.I64, 3)
            oprot.writeI64(self.reportCount)
            oprot.writeFieldEnd()
        oprot.writeFieldStop()
        oprot.writeStructEnd()

    def validate(self):
        return

    def __repr__(self):
        L = ['%s=%r' % (key, value)
             for key, value in self.__dict__.items()]
        return '%s(%s)' % (self.__class__.__name__, ', '.join(L))

    def __eq__(self, other):
        return isinstance(other, self.__class__) and self.__dict__ == other.__dict__

    def __ne__(self, other):
        return not (self == other)


class CheckerCount(object):
    """
    Attributes:
     - name
     - severity
     - count
    """


    def __init__(self, name=None, severity=None, count=None,):
        self.name = name
        self.severity = severity
        self.count = count

    def read(self, iprot):
        if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
            iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec])
            return
        iprot.readStructBegin()
        while True:
            (fname, ftype, fid) = iprot.readFieldBegin()
            if ftype == TType.STOP:
                break
            if fid == 1:
                if ftype == TType.STRING:
                    self.name = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                else:
                    iprot.skip(ftype)
            elif fid == 2:
                if ftype == TType.I32:
                    self.severity = iprot.readI32()
                else:
                    iprot.skip(ftype)
            elif fid == 3:
                if ftype == TType.I64:
                    self.count = iprot.readI64()
                else:
                    iprot.skip(ftype)
            else:
                iprot.skip(ftype)
            iprot.readFieldEnd()
        iprot.readStructEnd()

    def write(self, oprot):
        if oprot._fast_encode is not None and self.thrift_spec is not None:
            oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec]))
            return
        oprot.writeStructBegin('CheckerCount')
        if self.name is not None:
            oprot.writeFieldBegin('name', TType.STRING, 1)
            oprot.writeString(self.name.encode('utf-8') if sys.version_info[0] == 2 else self.name)
            oprot.writeFieldEnd()
        if self.severity is not None:
            oprot.writeFieldBegin('severity', TType.I32, 2)
            oprot.writeI32(self.severity)
            oprot.writeFieldEnd()
        if self.count is not None:
            oprot.writeFieldBegin('count', TType.I64, 3)
            oprot.writeI64(self.count)
            oprot.writeFieldEnd()
        oprot.writeFieldStop()
        oprot.writeStructEnd()

    def validate(self):
        return

    def __repr__(self):
        L = ['%s=%r' % (key, value)
             for key, value in self.__dict__.items()]
        return '%s(%s)' % (self.__class__.__name__, ', '.join(L))

    def __eq__(self, other):
        return isinstance(other, self.__class__) and self.__dict__ == other.__dict__

    def __ne__(self, other):
        return not (self == other)


class CommentData(object):
    """
    Attributes:
     - id
     - author
     - message
     - createdAt
     - kind
    """


    def __init__(self, id=None, author=None, message=None, createdAt=None, kind=None,):
        self.id = id
        self.author = author
        self.message = message
        self.createdAt = createdAt
        self.kind = kind

    def read(self, iprot):
        if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
            iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec])
            return
        iprot.readStructBegin()
        while True:
            (fname, ftype, fid) = iprot.readFieldBegin()
            if ftype == TType.STOP:
                break
            if fid == 1:
                if ftype == TType.I64:
                    self.id = iprot.readI64()
                else:
                    iprot.skip(ftype)
            elif fid == 2:
                if ftype == TType.STRING:
                    self.author = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                else:
                    iprot.skip(ftype)
            elif fid == 3:
                if ftype == TType.STRING:
                    self.message = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                else:
                    iprot.skip(ftype)
            elif fid == 4:
                if ftype == TType.STRING:
                    self.createdAt = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                else:
                    iprot.skip(ftype)
            elif fid == 5:
                if ftype == TType.I32:
                    self.kind = iprot.readI32()
                else:
                    iprot.skip(ftype)
            else:
                iprot.skip(ftype)
            iprot.readFieldEnd()
        iprot.readStructEnd()

    def write(self, oprot):
        if oprot._fast_encode is not None and self.thrift_spec is not None:
            oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec]))
            return
        oprot.writeStructBegin('CommentData')
        if self.id is not None:
            oprot.writeFieldBegin('id', TType.I64, 1)
            oprot.writeI64(self.id)
            oprot.writeFieldEnd()
        if self.author is not None:
            oprot.writeFieldBegin('author', TType.STRING, 2)
            oprot.writeString(self.author.encode('utf-8') if sys.version_info[0] == 2 else self.author)
            oprot.writeFieldEnd()
        if self.message is not None:
            oprot.writeFieldBegin('message', TType.STRING, 3)
            oprot.writeString(self.message.encode('utf-8') if sys.version_info[0] == 2 else self.message)
            oprot.writeFieldEnd()
        if self.createdAt is not None:
            oprot.writeFieldBegin('createdAt', TType.STRING, 4)
            oprot.writeString(self.createdAt.encode('utf-8') if sys.version_info[0] == 2 else self.createdAt)
            oprot.writeFieldEnd()
        if self.kind is not None:
            oprot.writeFieldBegin('kind', TType.I32, 5)
            oprot.writeI32(self.kind)
            oprot.writeFieldEnd()
        oprot.writeFieldStop()
        oprot.writeStructEnd()

    def validate(self):
        return

    def __repr__(self):
        L = ['%s=%r' % (key, value)
             for key, value in self.__dict__.items()]
        return '%s(%s)' % (self.__class__.__name__, ', '.join(L))

    def __eq__(self, other):
        return isinstance(other, self.__class__) and self.__dict__ == other.__dict__

    def __ne__(self, other):
        return not (self == other)


class RunFilter(object):
    """
    Members of this struct are interpreted in "AND" relation with each other.
    Between the list elements there is "OR" relation.
    If exactMatch field is True it will use exact match for run names.

    Attributes:
     - ids
     - names
     - exactMatch
     - beforeTime
     - afterTime
     - beforeRun
     - afterRun
    """


    def __init__(self, ids=None, names=None, exactMatch=None, beforeTime=None, afterTime=None, beforeRun=None, afterRun=None,):
        self.ids = ids
        self.names = names
        self.exactMatch = exactMatch
        self.beforeTime = beforeTime
        self.afterTime = afterTime
        self.beforeRun = beforeRun
        self.afterRun = afterRun

    def read(self, iprot):
        if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
            iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec])
            return
        iprot.readStructBegin()
        while True:
            (fname, ftype, fid) = iprot.readFieldBegin()
            if ftype == TType.STOP:
                break
            if fid == 1:
                if ftype == TType.LIST:
                    self.ids = []
                    (_etype149, _size146) = iprot.readListBegin()
                    for _i150 in range(_size146):
                        _elem151 = iprot.readI64()
                        self.ids.append(_elem151)
                    iprot.readListEnd()
                else:
                    iprot.skip(ftype)
            elif fid == 2:
                if ftype == TType.LIST:
                    self.names = []
                    (_etype155, _size152) = iprot.readListBegin()
                    for _i156 in range(_size152):
                        _elem157 = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                        self.names.append(_elem157)
                    iprot.readListEnd()
                else:
                    iprot.skip(ftype)
            elif fid == 3:
                if ftype == TType.BOOL:
                    self.exactMatch = iprot.readBool()
                else:
                    iprot.skip(ftype)
            elif fid == 4:
                if ftype == TType.I64:
                    self.beforeTime = iprot.readI64()
                else:
                    iprot.skip(ftype)
            elif fid == 5:
                if ftype == TType.I64:
                    self.afterTime = iprot.readI64()
                else:
                    iprot.skip(ftype)
            elif fid == 6:
                if ftype == TType.STRING:
                    self.beforeRun = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                else:
                    iprot.skip(ftype)
            elif fid == 7:
                if ftype == TType.STRING:
                    self.afterRun = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                else:
                    iprot.skip(ftype)
            else:
                iprot.skip(ftype)
            iprot.readFieldEnd()
        iprot.readStructEnd()

    def write(self, oprot):
        if oprot._fast_encode is not None and self.thrift_spec is not None:
            oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec]))
            return
        oprot.writeStructBegin('RunFilter')
        if self.ids is not None:
            oprot.writeFieldBegin('ids', TType.LIST, 1)
            oprot.writeListBegin(TType.I64, len(self.ids))
            for iter158 in self.ids:
                oprot.writeI64(iter158)
            oprot.writeListEnd()
            oprot.writeFieldEnd()
        if self.names is not None:
            oprot.writeFieldBegin('names', TType.LIST, 2)
            oprot.writeListBegin(TType.STRING, len(self.names))
            for iter159 in self.names:
                oprot.writeString(iter159.encode('utf-8') if sys.version_info[0] == 2 else iter159)
            oprot.writeListEnd()
            oprot.writeFieldEnd()
        if self.exactMatch is not None:
            oprot.writeFieldBegin('exactMatch', TType.BOOL, 3)
            oprot.writeBool(self.exactMatch)
            oprot.writeFieldEnd()
        if self.beforeTime is not None:
            oprot.writeFieldBegin('beforeTime', TType.I64, 4)
            oprot.writeI64(self.beforeTime)
            oprot.writeFieldEnd()
        if self.afterTime is not None:
            oprot.writeFieldBegin('afterTime', TType.I64, 5)
            oprot.writeI64(self.afterTime)
            oprot.writeFieldEnd()
        if self.beforeRun is not None:
            oprot.writeFieldBegin('beforeRun', TType.STRING, 6)
            oprot.writeString(self.beforeRun.encode('utf-8') if sys.version_info[0] == 2 else self.beforeRun)
            oprot.writeFieldEnd()
        if self.afterRun is not None:
            oprot.writeFieldBegin('afterRun', TType.STRING, 7)
            oprot.writeString(self.afterRun.encode('utf-8') if sys.version_info[0] == 2 else self.afterRun)
            oprot.writeFieldEnd()
        oprot.writeFieldStop()
        oprot.writeStructEnd()

    def validate(self):
        return

    def __repr__(self):
        L = ['%s=%r' % (key, value)
             for key, value in self.__dict__.items()]
        return '%s(%s)' % (self.__class__.__name__, ', '.join(L))

    def __eq__(self, other):
        return isinstance(other, self.__class__) and self.__dict__ == other.__dict__

    def __ne__(self, other):
        return not (self == other)


class CompareData(object):
    """
    Attributes:
     - runIds
     - diffType
     - runTag
    """


    def __init__(self, runIds=None, diffType=None, runTag=None,):
        self.runIds = runIds
        self.diffType = diffType
        self.runTag = runTag

    def read(self, iprot):
        if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
            iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec])
            return
        iprot.readStructBegin()
        while True:
            (fname, ftype, fid) = iprot.readFieldBegin()
            if ftype == TType.STOP:
                break
            if fid == 1:
                if ftype == TType.LIST:
                    self.runIds = []
                    (_etype163, _size160) = iprot.readListBegin()
                    for _i164 in range(_size160):
                        _elem165 = iprot.readI64()
                        self.runIds.append(_elem165)
                    iprot.readListEnd()
                else:
                    iprot.skip(ftype)
            elif fid == 2:
                if ftype == TType.I32:
                    self.diffType = iprot.readI32()
                else:
                    iprot.skip(ftype)
            elif fid == 3:
                if ftype == TType.LIST:
                    self.runTag = []
                    (_etype169, _size166) = iprot.readListBegin()
                    for _i170 in range(_size166):
                        _elem171 = iprot.readI64()
                        self.runTag.append(_elem171)
                    iprot.readListEnd()
                else:
                    iprot.skip(ftype)
            else:
                iprot.skip(ftype)
            iprot.readFieldEnd()
        iprot.readStructEnd()

    def write(self, oprot):
        if oprot._fast_encode is not None and self.thrift_spec is not None:
            oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec]))
            return
        oprot.writeStructBegin('CompareData')
        if self.runIds is not None:
            oprot.writeFieldBegin('runIds', TType.LIST, 1)
            oprot.writeListBegin(TType.I64, len(self.runIds))
            for iter172 in self.runIds:
                oprot.writeI64(iter172)
            oprot.writeListEnd()
            oprot.writeFieldEnd()
        if self.diffType is not None:
            oprot.writeFieldBegin('diffType', TType.I32, 2)
            oprot.writeI32(self.diffType)
            oprot.writeFieldEnd()
        if self.runTag is not None:
            oprot.writeFieldBegin('runTag', TType.LIST, 3)
            oprot.writeListBegin(TType.I64, len(self.runTag))
            for iter173 in self.runTag:
                oprot.writeI64(iter173)
            oprot.writeListEnd()
            oprot.writeFieldEnd()
        oprot.writeFieldStop()
        oprot.writeStructEnd()

    def validate(self):
        return

    def __repr__(self):
        L = ['%s=%r' % (key, value)
             for key, value in self.__dict__.items()]
        return '%s(%s)' % (self.__class__.__name__, ', '.join(L))

    def __eq__(self, other):
        return isinstance(other, self.__class__) and self.__dict__ == other.__dict__

    def __ne__(self, other):
        return not (self == other)


class LinesInFilesRequested(object):
    """
    Attributes:
     - fileId
     - lines
    """


    def __init__(self, fileId=None, lines=None,):
        self.fileId = fileId
        self.lines = lines

    def read(self, iprot):
        if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
            iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec])
            return
        iprot.readStructBegin()
        while True:
            (fname, ftype, fid) = iprot.readFieldBegin()
            if ftype == TType.STOP:
                break
            if fid == 1:
                if ftype == TType.I64:
                    self.fileId = iprot.readI64()
                else:
                    iprot.skip(ftype)
            elif fid == 2:
                if ftype == TType.SET:
                    self.lines = set()
                    (_etype177, _size174) = iprot.readSetBegin()
                    for _i178 in range(_size174):
                        _elem179 = iprot.readI64()
                        self.lines.add(_elem179)
                    iprot.readSetEnd()
                else:
                    iprot.skip(ftype)
            else:
                iprot.skip(ftype)
            iprot.readFieldEnd()
        iprot.readStructEnd()

    def write(self, oprot):
        if oprot._fast_encode is not None and self.thrift_spec is not None:
            oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec]))
            return
        oprot.writeStructBegin('LinesInFilesRequested')
        if self.fileId is not None:
            oprot.writeFieldBegin('fileId', TType.I64, 1)
            oprot.writeI64(self.fileId)
            oprot.writeFieldEnd()
        if self.lines is not None:
            oprot.writeFieldBegin('lines', TType.SET, 2)
            oprot.writeSetBegin(TType.I64, len(self.lines))
            for iter180 in self.lines:
                oprot.writeI64(iter180)
            oprot.writeSetEnd()
            oprot.writeFieldEnd()
        oprot.writeFieldStop()
        oprot.writeStructEnd()

    def validate(self):
        return

    def __repr__(self):
        L = ['%s=%r' % (key, value)
             for key, value in self.__dict__.items()]
        return '%s(%s)' % (self.__class__.__name__, ', '.join(L))

    def __eq__(self, other):
        return isinstance(other, self.__class__) and self.__dict__ == other.__dict__

    def __ne__(self, other):
        return not (self == other)


class SourceComponentData(object):
    """
    Attributes:
     - name
     - value
     - description
    """


    def __init__(self, name=None, value=None, description=None,):
        self.name = name
        self.value = value
        self.description = description

    def read(self, iprot):
        if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
            iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec])
            return
        iprot.readStructBegin()
        while True:
            (fname, ftype, fid) = iprot.readFieldBegin()
            if ftype == TType.STOP:
                break
            if fid == 1:
                if ftype == TType.STRING:
                    self.name = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                else:
                    iprot.skip(ftype)
            elif fid == 2:
                if ftype == TType.STRING:
                    self.value = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                else:
                    iprot.skip(ftype)
            elif fid == 3:
                if ftype == TType.STRING:
                    self.description = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                else:
                    iprot.skip(ftype)
            else:
                iprot.skip(ftype)
            iprot.readFieldEnd()
        iprot.readStructEnd()

    def write(self, oprot):
        if oprot._fast_encode is not None and self.thrift_spec is not None:
            oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec]))
            return
        oprot.writeStructBegin('SourceComponentData')
        if self.name is not None:
            oprot.writeFieldBegin('name', TType.STRING, 1)
            oprot.writeString(self.name.encode('utf-8') if sys.version_info[0] == 2 else self.name)
            oprot.writeFieldEnd()
        if self.value is not None:
            oprot.writeFieldBegin('value', TType.STRING, 2)
            oprot.writeString(self.value.encode('utf-8') if sys.version_info[0] == 2 else self.value)
            oprot.writeFieldEnd()
        if self.description is not None:
            oprot.writeFieldBegin('description', TType.STRING, 3)
            oprot.writeString(self.description.encode('utf-8') if sys.version_info[0] == 2 else self.description)
            oprot.writeFieldEnd()
        oprot.writeFieldStop()
        oprot.writeStructEnd()

    def validate(self):
        return

    def __repr__(self):
        L = ['%s=%r' % (key, value)
             for key, value in self.__dict__.items()]
        return '%s(%s)' % (self.__class__.__name__, ', '.join(L))

    def __eq__(self, other):
        return isinstance(other, self.__class__) and self.__dict__ == other.__dict__

    def __ne__(self, other):
        return not (self == other)
all_structs.append(SourceFileData)
SourceFileData.thrift_spec = (
    None,  # 0
    (1, TType.I64, 'fileId', None, None, ),  # 1
    (2, TType.STRING, 'filePath', 'UTF8', None, ),  # 2
    (3, TType.STRING, 'fileContent', 'UTF8', None, ),  # 3
)
all_structs.append(SortMode)
SortMode.thrift_spec = (
    None,  # 0
    (1, TType.I32, 'type', None, None, ),  # 1
    (2, TType.I32, 'ord', None, None, ),  # 2
)
all_structs.append(RunSortMode)
RunSortMode.thrift_spec = (
    None,  # 0
    (1, TType.I32, 'type', None, None, ),  # 1
    (2, TType.I32, 'ord', None, None, ),  # 2
)
all_structs.append(BugPathEvent)
BugPathEvent.thrift_spec = (
    None,  # 0
    (1, TType.I64, 'startLine', None, None, ),  # 1
    (2, TType.I64, 'startCol', None, None, ),  # 2
    (3, TType.I64, 'endLine', None, None, ),  # 3
    (4, TType.I64, 'endCol', None, None, ),  # 4
    (5, TType.STRING, 'msg', 'UTF8', None, ),  # 5
    (6, TType.I64, 'fileId', None, None, ),  # 6
    (7, TType.STRING, 'filePath', 'UTF8', None, ),  # 7
)
all_structs.append(BugPathPos)
BugPathPos.thrift_spec = (
    None,  # 0
    (1, TType.I64, 'startLine', None, None, ),  # 1
    (2, TType.I64, 'startCol', None, None, ),  # 2
    (3, TType.I64, 'endLine', None, None, ),  # 3
    (4, TType.I64, 'endCol', None, None, ),  # 4
    (5, TType.I64, 'fileId', None, None, ),  # 5
    (6, TType.STRING, 'filePath', 'UTF8', None, ),  # 6
)
all_structs.append(ExtendedReportData)
ExtendedReportData.thrift_spec = (
    None,  # 0
    (1, TType.I32, 'type', None, None, ),  # 1
    (2, TType.I64, 'startLine', None, None, ),  # 2
    (3, TType.I64, 'startCol', None, None, ),  # 3
    (4, TType.I64, 'endLine', None, None, ),  # 4
    (5, TType.I64, 'endCol', None, None, ),  # 5
    (6, TType.STRING, 'message', 'UTF8', None, ),  # 6
    (7, TType.I64, 'fileId', None, None, ),  # 7
    (8, TType.STRING, 'filePath', 'UTF8', None, ),  # 8
)
all_structs.append(ReportDetails)
ReportDetails.thrift_spec = (
    None,  # 0
    (1, TType.LIST, 'pathEvents', (TType.STRUCT, [BugPathEvent, None], False), None, ),  # 1
    (2, TType.LIST, 'executionPath', (TType.STRUCT, [BugPathPos, None], False), None, ),  # 2
    (3, TType.LIST, 'extendedData', (TType.STRUCT, [ExtendedReportData, None], False), None, ),  # 3
)
all_structs.append(AnalyzerStatistics)
AnalyzerStatistics.thrift_spec = (
    None,  # 0
    (1, TType.STRING, 'version', 'UTF8', None, ),  # 1
    (2, TType.I64, 'failed', None, None, ),  # 2
    (3, TType.I64, 'successful', None, None, ),  # 3
    (4, TType.LIST, 'failedFilePaths', (TType.STRING, 'UTF8', False), None, ),  # 4
)
all_structs.append(RunData)
RunData.thrift_spec = (
    None,  # 0
    (1, TType.I64, 'runId', None, None, ),  # 1
    (2, TType.STRING, 'runDate', 'UTF8', None, ),  # 2
    (3, TType.STRING, 'name', 'UTF8', None, ),  # 3
    (4, TType.I64, 'duration', None, None, ),  # 4
    (5, TType.I64, 'resultCount', None, None, ),  # 5
    (6, TType.STRING, 'runCmd', 'UTF8', None, ),  # 6
    (7, TType.MAP, 'detectionStatusCount', (TType.I32, None, TType.I32, None, False), None, ),  # 7
    (8, TType.STRING, 'versionTag', 'UTF8', None, ),  # 8
    (9, TType.STRING, 'codeCheckerVersion', 'UTF8', None, ),  # 9
    (10, TType.MAP, 'analyzerStatistics', (TType.STRING, 'UTF8', TType.STRUCT, [AnalyzerStatistics, None], False), None, ),  # 10
    (11, TType.STRING, 'description', 'UTF8', None, ),  # 11
)
all_structs.append(RunHistoryData)
RunHistoryData.thrift_spec = (
    None,  # 0
    (1, TType.I64, 'runId', None, None, ),  # 1
    (2, TType.STRING, 'runName', 'UTF8', None, ),  # 2
    (3, TType.STRING, 'versionTag', 'UTF8', None, ),  # 3
    (4, TType.STRING, 'user', 'UTF8', None, ),  # 4
    (5, TType.STRING, 'time', 'UTF8', None, ),  # 5
    (6, TType.I64, 'id', None, None, ),  # 6
    (7, TType.STRING, 'checkCommand', 'UTF8', None, ),  # 7
    (8, TType.STRING, 'codeCheckerVersion', 'UTF8', None, ),  # 8
    (9, TType.MAP, 'analyzerStatistics', (TType.STRING, 'UTF8', TType.STRUCT, [AnalyzerStatistics, None], False), None, ),  # 9
    None,  # 10
    (11, TType.STRING, 'description', 'UTF8', None, ),  # 11
)
all_structs.append(RunHistoryFilter)
RunHistoryFilter.thrift_spec = (
    None,  # 0
    (1, TType.LIST, 'tagNames', (TType.STRING, 'UTF8', False), None, ),  # 1
    (2, TType.LIST, 'tagIds', (TType.I64, None, False), None, ),  # 2
)
all_structs.append(RunTagCount)
RunTagCount.thrift_spec = (
    None,  # 0
    (1, TType.STRING, 'time', 'UTF8', None, ),  # 1
    (2, TType.STRING, 'name', 'UTF8', None, ),  # 2
    (3, TType.I64, 'count', None, None, ),  # 3
    (4, TType.I64, 'id', None, None, ),  # 4
    (5, TType.STRING, 'runName', 'UTF8', None, ),  # 5
)
all_structs.append(ReviewData)
ReviewData.thrift_spec = (
    None,  # 0
    (1, TType.I32, 'status', None, None, ),  # 1
    (2, TType.STRING, 'comment', 'UTF8', None, ),  # 2
    (3, TType.STRING, 'author', 'UTF8', None, ),  # 3
    (4, TType.STRING, 'date', 'UTF8', None, ),  # 4
)
all_structs.append(ReportData)
ReportData.thrift_spec = (
    None,  # 0
    (1, TType.I64, 'runId', None, None, ),  # 1
    (2, TType.STRING, 'checkerId', 'UTF8', None, ),  # 2
    (3, TType.STRING, 'bugHash', 'UTF8', None, ),  # 3
    (4, TType.STRING, 'checkedFile', 'UTF8', None, ),  # 4
    (5, TType.STRING, 'checkerMsg', 'UTF8', None, ),  # 5
    (6, TType.I64, 'reportId', None, None, ),  # 6
    (7, TType.I64, 'fileId', None, None, ),  # 7
    (8, TType.I64, 'line', None, None, ),  # 8
    (9, TType.I64, 'column', None, None, ),  # 9
    (10, TType.I32, 'severity', None, None, ),  # 10
    (11, TType.STRUCT, 'reviewData', [ReviewData, None], None, ),  # 11
    (12, TType.I32, 'detectionStatus', None, None, ),  # 12
    (13, TType.STRING, 'detectedAt', 'UTF8', None, ),  # 13
    (14, TType.STRING, 'fixedAt', 'UTF8', None, ),  # 14
    (15, TType.I64, 'bugPathLength', None, None, ),  # 15
    (16, TType.STRUCT, 'details', [ReportDetails, None], None, ),  # 16
)
all_structs.append(BugPathLengthRange)
BugPathLengthRange.thrift_spec = (
    None,  # 0
    (1, TType.I64, 'min', None, None, ),  # 1
    (2, TType.I64, 'max', None, None, ),  # 2
)
all_structs.append(DateInterval)
DateInterval.thrift_spec = (
    None,  # 0
    (1, TType.I64, 'before', None, None, ),  # 1
    (2, TType.I64, 'after', None, None, ),  # 2
)
all_structs.append(ReportDate)
ReportDate.thrift_spec = (
    None,  # 0
    (1, TType.STRUCT, 'detected', [DateInterval, None], None, ),  # 1
    (2, TType.STRUCT, 'fixed', [DateInterval, None], None, ),  # 2
)
all_structs.append(ReportFilter)
ReportFilter.thrift_spec = (
    None,  # 0
    (1, TType.LIST, 'filepath', (TType.STRING, 'UTF8', False), None, ),  # 1
    (2, TType.LIST, 'checkerMsg', (TType.STRING, 'UTF8', False), None, ),  # 2
    (3, TType.LIST, 'checkerName', (TType.STRING, 'UTF8', False), None, ),  # 3
    (4, TType.LIST, 'reportHash', (TType.STRING, 'UTF8', False), None, ),  # 4
    (5, TType.LIST, 'severity', (TType.I32, None, False), None, ),  # 5
    (6, TType.LIST, 'reviewStatus', (TType.I32, None, False), None, ),  # 6
    (7, TType.LIST, 'detectionStatus', (TType.I32, None, False), None, ),  # 7
    (8, TType.LIST, 'runHistoryTag', (TType.STRING, 'UTF8', False), None, ),  # 8
    (9, TType.I64, 'firstDetectionDate', None, None, ),  # 9
    (10, TType.I64, 'fixDate', None, None, ),  # 10
    (11, TType.BOOL, 'isUnique', None, None, ),  # 11
    (12, TType.LIST, 'runName', (TType.STRING, 'UTF8', False), None, ),  # 12
    (13, TType.LIST, 'runTag', (TType.I64, None, False), None, ),  # 13
    (14, TType.LIST, 'componentNames', (TType.STRING, 'UTF8', False), None, ),  # 14
    (15, TType.STRUCT, 'bugPathLength', [BugPathLengthRange, None], None, ),  # 15
    (16, TType.STRUCT, 'date', [ReportDate, None], None, ),  # 16
)
all_structs.append(RunReportCount)
RunReportCount.thrift_spec = (
    None,  # 0
    (1, TType.I64, 'runId', None, None, ),  # 1
    (2, TType.STRING, 'name', 'UTF8', None, ),  # 2
    (3, TType.I64, 'reportCount', None, None, ),  # 3
)
all_structs.append(CheckerCount)
CheckerCount.thrift_spec = (
    None,  # 0
    (1, TType.STRING, 'name', 'UTF8', None, ),  # 1
    (2, TType.I32, 'severity', None, None, ),  # 2
    (3, TType.I64, 'count', None, None, ),  # 3
)
all_structs.append(CommentData)
CommentData.thrift_spec = (
    None,  # 0
    (1, TType.I64, 'id', None, None, ),  # 1
    (2, TType.STRING, 'author', 'UTF8', None, ),  # 2
    (3, TType.STRING, 'message', 'UTF8', None, ),  # 3
    (4, TType.STRING, 'createdAt', 'UTF8', None, ),  # 4
    (5, TType.I32, 'kind', None, None, ),  # 5
)
all_structs.append(RunFilter)
RunFilter.thrift_spec = (
    None,  # 0
    (1, TType.LIST, 'ids', (TType.I64, None, False), None, ),  # 1
    (2, TType.LIST, 'names', (TType.STRING, 'UTF8', False), None, ),  # 2
    (3, TType.BOOL, 'exactMatch', None, None, ),  # 3
    (4, TType.I64, 'beforeTime', None, None, ),  # 4
    (5, TType.I64, 'afterTime', None, None, ),  # 5
    (6, TType.STRING, 'beforeRun', 'UTF8', None, ),  # 6
    (7, TType.STRING, 'afterRun', 'UTF8', None, ),  # 7
)
all_structs.append(CompareData)
CompareData.thrift_spec = (
    None,  # 0
    (1, TType.LIST, 'runIds', (TType.I64, None, False), None, ),  # 1
    (2, TType.I32, 'diffType', None, None, ),  # 2
    (3, TType.LIST, 'runTag', (TType.I64, None, False), None, ),  # 3
)
all_structs.append(LinesInFilesRequested)
LinesInFilesRequested.thrift_spec = (
    None,  # 0
    (1, TType.I64, 'fileId', None, None, ),  # 1
    (2, TType.SET, 'lines', (TType.I64, None, False), None, ),  # 2
)
all_structs.append(SourceComponentData)
SourceComponentData.thrift_spec = (
    None,  # 0
    (1, TType.STRING, 'name', 'UTF8', None, ),  # 1
    (2, TType.STRING, 'value', 'UTF8', None, ),  # 2
    (3, TType.STRING, 'description', 'UTF8', None, ),  # 3
)
fix_spec(all_structs)
del all_structs
