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

from thrift.Thrift import TType, TMessageType, TException, TApplicationException
import koverse.thriftgen.security.ttypes
import koverse.thriftgen.ttypes


from thrift.transport import TTransport
from thrift.protocol import TBinaryProtocol, TProtocol
try:
  from thrift.protocol import fastbinary
except:
  fastbinary = None


class TExecutionMethod:
  INLINE = 0
  MAPREDUCE = 1
  RDBMS = 2

  _VALUES_TO_NAMES = {
    0: "INLINE",
    1: "MAPREDUCE",
    2: "RDBMS",
  }

  _NAMES_TO_VALUES = {
    "INLINE": 0,
    "MAPREDUCE": 1,
    "RDBMS": 2,
  }

class TJobType:
  IMPORT = 0
  TRANSFORM = 1
  EXPORT = 2
  DELETE = 3
  INDEXING = 4
  REINDEXING = 5
  SAMPLING = 6
  STATISTICS = 7
  SCHEMA = 8

  _VALUES_TO_NAMES = {
    0: "IMPORT",
    1: "TRANSFORM",
    2: "EXPORT",
    3: "DELETE",
    4: "INDEXING",
    5: "REINDEXING",
    6: "SAMPLING",
    7: "STATISTICS",
    8: "SCHEMA",
  }

  _NAMES_TO_VALUES = {
    "IMPORT": 0,
    "TRANSFORM": 1,
    "EXPORT": 2,
    "DELETE": 3,
    "INDEXING": 4,
    "REINDEXING": 5,
    "SAMPLING": 6,
    "STATISTICS": 7,
    "SCHEMA": 8,
  }

class TTransformStageType:
  COMBINE = 0
  KV_MAP = 1
  RECORD_MAP = 2
  REDUCE = 3
  PIG = 4

  _VALUES_TO_NAMES = {
    0: "COMBINE",
    1: "KV_MAP",
    2: "RECORD_MAP",
    3: "REDUCE",
    4: "PIG",
  }

  _NAMES_TO_VALUES = {
    "COMBINE": 0,
    "KV_MAP": 1,
    "RECORD_MAP": 2,
    "REDUCE": 3,
    "PIG": 4,
  }


class TJobAbstract:
  """
  Attributes:
   - id
   - userId
   - creationDate
   - startedDate
   - endedDate
   - status
   - errorDetail
   - statusMessage
   - userAcknowledged
   - origin
   - overrideBlockedStatus
   - type
   - progress
  """

  thrift_spec = (
    None, # 0
    (1, TType.I64, 'id', None, None, ), # 1
    (2, TType.I64, 'userId', None, None, ), # 2
    (3, TType.I64, 'creationDate', None, None, ), # 3
    (4, TType.I64, 'startedDate', None, None, ), # 4
    (5, TType.I64, 'endedDate', None, None, ), # 5
    (6, TType.STRING, 'status', None, None, ), # 6
    (7, TType.STRING, 'errorDetail', None, None, ), # 7
    (8, TType.STRING, 'statusMessage', None, None, ), # 8
    (9, TType.BOOL, 'userAcknowledged', None, None, ), # 9
    (10, TType.STRING, 'origin', None, None, ), # 10
    (11, TType.BOOL, 'overrideBlockedStatus', None, None, ), # 11
    (12, TType.I32, 'type', None, None, ), # 12
    (13, TType.DOUBLE, 'progress', None, None, ), # 13
  )

  def __init__(self, id=None, userId=None, creationDate=None, startedDate=None, endedDate=None, status=None, errorDetail=None, statusMessage=None, userAcknowledged=None, origin=None, overrideBlockedStatus=None, type=None, progress=None,):
    self.id = id
    self.userId = userId
    self.creationDate = creationDate
    self.startedDate = startedDate
    self.endedDate = endedDate
    self.status = status
    self.errorDetail = errorDetail
    self.statusMessage = statusMessage
    self.userAcknowledged = userAcknowledged
    self.origin = origin
    self.overrideBlockedStatus = overrideBlockedStatus
    self.type = type
    self.progress = progress

  def read(self, iprot):
    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
      fastbinary.decode_binary(self, iprot.trans, (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.I64:
          self.userId = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 3:
        if ftype == TType.I64:
          self.creationDate = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 4:
        if ftype == TType.I64:
          self.startedDate = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 5:
        if ftype == TType.I64:
          self.endedDate = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 6:
        if ftype == TType.STRING:
          self.status = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 7:
        if ftype == TType.STRING:
          self.errorDetail = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 8:
        if ftype == TType.STRING:
          self.statusMessage = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 9:
        if ftype == TType.BOOL:
          self.userAcknowledged = iprot.readBool();
        else:
          iprot.skip(ftype)
      elif fid == 10:
        if ftype == TType.STRING:
          self.origin = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 11:
        if ftype == TType.BOOL:
          self.overrideBlockedStatus = iprot.readBool();
        else:
          iprot.skip(ftype)
      elif fid == 12:
        if ftype == TType.I32:
          self.type = iprot.readI32();
        else:
          iprot.skip(ftype)
      elif fid == 13:
        if ftype == TType.DOUBLE:
          self.progress = iprot.readDouble();
        else:
          iprot.skip(ftype)
      else:
        iprot.skip(ftype)
      iprot.readFieldEnd()
    iprot.readStructEnd()

  def write(self, oprot):
    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
      return
    oprot.writeStructBegin('TJobAbstract')
    if self.id is not None:
      oprot.writeFieldBegin('id', TType.I64, 1)
      oprot.writeI64(self.id)
      oprot.writeFieldEnd()
    if self.userId is not None:
      oprot.writeFieldBegin('userId', TType.I64, 2)
      oprot.writeI64(self.userId)
      oprot.writeFieldEnd()
    if self.creationDate is not None:
      oprot.writeFieldBegin('creationDate', TType.I64, 3)
      oprot.writeI64(self.creationDate)
      oprot.writeFieldEnd()
    if self.startedDate is not None:
      oprot.writeFieldBegin('startedDate', TType.I64, 4)
      oprot.writeI64(self.startedDate)
      oprot.writeFieldEnd()
    if self.endedDate is not None:
      oprot.writeFieldBegin('endedDate', TType.I64, 5)
      oprot.writeI64(self.endedDate)
      oprot.writeFieldEnd()
    if self.status is not None:
      oprot.writeFieldBegin('status', TType.STRING, 6)
      oprot.writeString(self.status)
      oprot.writeFieldEnd()
    if self.errorDetail is not None:
      oprot.writeFieldBegin('errorDetail', TType.STRING, 7)
      oprot.writeString(self.errorDetail)
      oprot.writeFieldEnd()
    if self.statusMessage is not None:
      oprot.writeFieldBegin('statusMessage', TType.STRING, 8)
      oprot.writeString(self.statusMessage)
      oprot.writeFieldEnd()
    if self.userAcknowledged is not None:
      oprot.writeFieldBegin('userAcknowledged', TType.BOOL, 9)
      oprot.writeBool(self.userAcknowledged)
      oprot.writeFieldEnd()
    if self.origin is not None:
      oprot.writeFieldBegin('origin', TType.STRING, 10)
      oprot.writeString(self.origin)
      oprot.writeFieldEnd()
    if self.overrideBlockedStatus is not None:
      oprot.writeFieldBegin('overrideBlockedStatus', TType.BOOL, 11)
      oprot.writeBool(self.overrideBlockedStatus)
      oprot.writeFieldEnd()
    if self.type is not None:
      oprot.writeFieldBegin('type', TType.I32, 12)
      oprot.writeI32(self.type)
      oprot.writeFieldEnd()
    if self.progress is not None:
      oprot.writeFieldBegin('progress', TType.DOUBLE, 13)
      oprot.writeDouble(self.progress)
      oprot.writeFieldEnd()
    oprot.writeFieldStop()
    oprot.writeStructEnd()

  def validate(self):
    return


  def __repr__(self):
    L = ['%s=%r' % (key, value)
      for key, value in self.__dict__.iteritems()]
    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 TBatchId:
  """
  Attributes:
   - timestampSeconds
   - jobId
   - jobType
  """

  thrift_spec = (
    None, # 0
    (1, TType.I64, 'timestampSeconds', None, None, ), # 1
    (2, TType.I64, 'jobId', None, None, ), # 2
    (3, TType.BYTE, 'jobType', None, None, ), # 3
  )

  def __init__(self, timestampSeconds=None, jobId=None, jobType=None,):
    self.timestampSeconds = timestampSeconds
    self.jobId = jobId
    self.jobType = jobType

  def read(self, iprot):
    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
      fastbinary.decode_binary(self, iprot.trans, (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.timestampSeconds = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 2:
        if ftype == TType.I64:
          self.jobId = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 3:
        if ftype == TType.BYTE:
          self.jobType = iprot.readByte();
        else:
          iprot.skip(ftype)
      else:
        iprot.skip(ftype)
      iprot.readFieldEnd()
    iprot.readStructEnd()

  def write(self, oprot):
    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
      return
    oprot.writeStructBegin('TBatchId')
    if self.timestampSeconds is not None:
      oprot.writeFieldBegin('timestampSeconds', TType.I64, 1)
      oprot.writeI64(self.timestampSeconds)
      oprot.writeFieldEnd()
    if self.jobId is not None:
      oprot.writeFieldBegin('jobId', TType.I64, 2)
      oprot.writeI64(self.jobId)
      oprot.writeFieldEnd()
    if self.jobType is not None:
      oprot.writeFieldBegin('jobType', TType.BYTE, 3)
      oprot.writeByte(self.jobType)
      oprot.writeFieldEnd()
    oprot.writeFieldStop()
    oprot.writeStructEnd()

  def validate(self):
    return


  def __repr__(self):
    L = ['%s=%r' % (key, value)
      for key, value in self.__dict__.iteritems()]
    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 TBatchJob:
  """
  Attributes:
   - jobAbstract
   - minInputBatchId
   - maxInputBatchId
   - minOutputBatchId
   - maxOutputBatchId
  """

  thrift_spec = (
    None, # 0
    (1, TType.STRUCT, 'jobAbstract', (TJobAbstract, TJobAbstract.thrift_spec), None, ), # 1
    (2, TType.STRUCT, 'minInputBatchId', (TBatchId, TBatchId.thrift_spec), None, ), # 2
    (3, TType.STRUCT, 'maxInputBatchId', (TBatchId, TBatchId.thrift_spec), None, ), # 3
    (4, TType.STRUCT, 'minOutputBatchId', (TBatchId, TBatchId.thrift_spec), None, ), # 4
    (5, TType.STRUCT, 'maxOutputBatchId', (TBatchId, TBatchId.thrift_spec), None, ), # 5
  )

  def __init__(self, jobAbstract=None, minInputBatchId=None, maxInputBatchId=None, minOutputBatchId=None, maxOutputBatchId=None,):
    self.jobAbstract = jobAbstract
    self.minInputBatchId = minInputBatchId
    self.maxInputBatchId = maxInputBatchId
    self.minOutputBatchId = minOutputBatchId
    self.maxOutputBatchId = maxOutputBatchId

  def read(self, iprot):
    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
      fastbinary.decode_binary(self, iprot.trans, (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.jobAbstract = TJobAbstract()
          self.jobAbstract.read(iprot)
        else:
          iprot.skip(ftype)
      elif fid == 2:
        if ftype == TType.STRUCT:
          self.minInputBatchId = TBatchId()
          self.minInputBatchId.read(iprot)
        else:
          iprot.skip(ftype)
      elif fid == 3:
        if ftype == TType.STRUCT:
          self.maxInputBatchId = TBatchId()
          self.maxInputBatchId.read(iprot)
        else:
          iprot.skip(ftype)
      elif fid == 4:
        if ftype == TType.STRUCT:
          self.minOutputBatchId = TBatchId()
          self.minOutputBatchId.read(iprot)
        else:
          iprot.skip(ftype)
      elif fid == 5:
        if ftype == TType.STRUCT:
          self.maxOutputBatchId = TBatchId()
          self.maxOutputBatchId.read(iprot)
        else:
          iprot.skip(ftype)
      else:
        iprot.skip(ftype)
      iprot.readFieldEnd()
    iprot.readStructEnd()

  def write(self, oprot):
    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
      return
    oprot.writeStructBegin('TBatchJob')
    if self.jobAbstract is not None:
      oprot.writeFieldBegin('jobAbstract', TType.STRUCT, 1)
      self.jobAbstract.write(oprot)
      oprot.writeFieldEnd()
    if self.minInputBatchId is not None:
      oprot.writeFieldBegin('minInputBatchId', TType.STRUCT, 2)
      self.minInputBatchId.write(oprot)
      oprot.writeFieldEnd()
    if self.maxInputBatchId is not None:
      oprot.writeFieldBegin('maxInputBatchId', TType.STRUCT, 3)
      self.maxInputBatchId.write(oprot)
      oprot.writeFieldEnd()
    if self.minOutputBatchId is not None:
      oprot.writeFieldBegin('minOutputBatchId', TType.STRUCT, 4)
      self.minOutputBatchId.write(oprot)
      oprot.writeFieldEnd()
    if self.maxOutputBatchId is not None:
      oprot.writeFieldBegin('maxOutputBatchId', TType.STRUCT, 5)
      self.maxOutputBatchId.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__.iteritems()]
    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 TSourcePermission:
  """
  Attributes:
   - id
   - groupId
   - permissionsTypes
  """

  thrift_spec = (
    None, # 0
    (1, TType.I64, 'id', None, None, ), # 1
    (2, TType.I64, 'groupId', None, None, ), # 2
    (3, TType.LIST, 'permissionsTypes', (TType.STRING,None), None, ), # 3
  )

  def __init__(self, id=None, groupId=None, permissionsTypes=None,):
    self.id = id
    self.groupId = groupId
    self.permissionsTypes = permissionsTypes

  def read(self, iprot):
    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
      fastbinary.decode_binary(self, iprot.trans, (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.I64:
          self.groupId = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 3:
        if ftype == TType.LIST:
          self.permissionsTypes = []
          (_etype3, _size0) = iprot.readListBegin()
          for _i4 in xrange(_size0):
            _elem5 = iprot.readString();
            self.permissionsTypes.append(_elem5)
          iprot.readListEnd()
        else:
          iprot.skip(ftype)
      else:
        iprot.skip(ftype)
      iprot.readFieldEnd()
    iprot.readStructEnd()

  def write(self, oprot):
    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
      return
    oprot.writeStructBegin('TSourcePermission')
    if self.id is not None:
      oprot.writeFieldBegin('id', TType.I64, 1)
      oprot.writeI64(self.id)
      oprot.writeFieldEnd()
    if self.groupId is not None:
      oprot.writeFieldBegin('groupId', TType.I64, 2)
      oprot.writeI64(self.groupId)
      oprot.writeFieldEnd()
    if self.permissionsTypes is not None:
      oprot.writeFieldBegin('permissionsTypes', TType.LIST, 3)
      oprot.writeListBegin(TType.STRING, len(self.permissionsTypes))
      for iter6 in self.permissionsTypes:
        oprot.writeString(iter6)
      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__.iteritems()]
    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 TSourceTypeDescription:
  """
  Attributes:
   - sourceTypeDescriptionId
   - name
   - version
   - executionMethod
   - implementationClassName
   - sourceTypeId
   - customParameterFormJavascriptPath
   - parameters
   - addOnId
   - disabled
   - flowParameters
  """

  thrift_spec = (
    None, # 0
    (1, TType.I64, 'sourceTypeDescriptionId', None, None, ), # 1
    (2, TType.STRING, 'name', None, None, ), # 2
    (3, TType.STRING, 'version', None, None, ), # 3
    (4, TType.I32, 'executionMethod', None, None, ), # 4
    (5, TType.STRING, 'implementationClassName', None, None, ), # 5
    (6, TType.STRING, 'sourceTypeId', None, None, ), # 6
    (7, TType.STRING, 'customParameterFormJavascriptPath', None, None, ), # 7
    (8, TType.LIST, 'parameters', (TType.STRUCT,(koverse.thriftgen.ttypes.TParameter, koverse.thriftgen.ttypes.TParameter.thrift_spec)), None, ), # 8
    (9, TType.I64, 'addOnId', None, None, ), # 9
    (10, TType.BOOL, 'disabled', None, None, ), # 10
    (11, TType.LIST, 'flowParameters', (TType.STRUCT,(koverse.thriftgen.ttypes.TParameter, koverse.thriftgen.ttypes.TParameter.thrift_spec)), None, ), # 11
  )

  def __init__(self, sourceTypeDescriptionId=None, name=None, version=None, executionMethod=None, implementationClassName=None, sourceTypeId=None, customParameterFormJavascriptPath=None, parameters=None, addOnId=None, disabled=None, flowParameters=None,):
    self.sourceTypeDescriptionId = sourceTypeDescriptionId
    self.name = name
    self.version = version
    self.executionMethod = executionMethod
    self.implementationClassName = implementationClassName
    self.sourceTypeId = sourceTypeId
    self.customParameterFormJavascriptPath = customParameterFormJavascriptPath
    self.parameters = parameters
    self.addOnId = addOnId
    self.disabled = disabled
    self.flowParameters = flowParameters

  def read(self, iprot):
    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
      fastbinary.decode_binary(self, iprot.trans, (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.sourceTypeDescriptionId = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 2:
        if ftype == TType.STRING:
          self.name = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 3:
        if ftype == TType.STRING:
          self.version = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 4:
        if ftype == TType.I32:
          self.executionMethod = iprot.readI32();
        else:
          iprot.skip(ftype)
      elif fid == 5:
        if ftype == TType.STRING:
          self.implementationClassName = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 6:
        if ftype == TType.STRING:
          self.sourceTypeId = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 7:
        if ftype == TType.STRING:
          self.customParameterFormJavascriptPath = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 8:
        if ftype == TType.LIST:
          self.parameters = []
          (_etype10, _size7) = iprot.readListBegin()
          for _i11 in xrange(_size7):
            _elem12 = koverse.thriftgen.ttypes.TParameter()
            _elem12.read(iprot)
            self.parameters.append(_elem12)
          iprot.readListEnd()
        else:
          iprot.skip(ftype)
      elif fid == 9:
        if ftype == TType.I64:
          self.addOnId = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 10:
        if ftype == TType.BOOL:
          self.disabled = iprot.readBool();
        else:
          iprot.skip(ftype)
      elif fid == 11:
        if ftype == TType.LIST:
          self.flowParameters = []
          (_etype16, _size13) = iprot.readListBegin()
          for _i17 in xrange(_size13):
            _elem18 = koverse.thriftgen.ttypes.TParameter()
            _elem18.read(iprot)
            self.flowParameters.append(_elem18)
          iprot.readListEnd()
        else:
          iprot.skip(ftype)
      else:
        iprot.skip(ftype)
      iprot.readFieldEnd()
    iprot.readStructEnd()

  def write(self, oprot):
    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
      return
    oprot.writeStructBegin('TSourceTypeDescription')
    if self.sourceTypeDescriptionId is not None:
      oprot.writeFieldBegin('sourceTypeDescriptionId', TType.I64, 1)
      oprot.writeI64(self.sourceTypeDescriptionId)
      oprot.writeFieldEnd()
    if self.name is not None:
      oprot.writeFieldBegin('name', TType.STRING, 2)
      oprot.writeString(self.name)
      oprot.writeFieldEnd()
    if self.version is not None:
      oprot.writeFieldBegin('version', TType.STRING, 3)
      oprot.writeString(self.version)
      oprot.writeFieldEnd()
    if self.executionMethod is not None:
      oprot.writeFieldBegin('executionMethod', TType.I32, 4)
      oprot.writeI32(self.executionMethod)
      oprot.writeFieldEnd()
    if self.implementationClassName is not None:
      oprot.writeFieldBegin('implementationClassName', TType.STRING, 5)
      oprot.writeString(self.implementationClassName)
      oprot.writeFieldEnd()
    if self.sourceTypeId is not None:
      oprot.writeFieldBegin('sourceTypeId', TType.STRING, 6)
      oprot.writeString(self.sourceTypeId)
      oprot.writeFieldEnd()
    if self.customParameterFormJavascriptPath is not None:
      oprot.writeFieldBegin('customParameterFormJavascriptPath', TType.STRING, 7)
      oprot.writeString(self.customParameterFormJavascriptPath)
      oprot.writeFieldEnd()
    if self.parameters is not None:
      oprot.writeFieldBegin('parameters', TType.LIST, 8)
      oprot.writeListBegin(TType.STRUCT, len(self.parameters))
      for iter19 in self.parameters:
        iter19.write(oprot)
      oprot.writeListEnd()
      oprot.writeFieldEnd()
    if self.addOnId is not None:
      oprot.writeFieldBegin('addOnId', TType.I64, 9)
      oprot.writeI64(self.addOnId)
      oprot.writeFieldEnd()
    if self.disabled is not None:
      oprot.writeFieldBegin('disabled', TType.BOOL, 10)
      oprot.writeBool(self.disabled)
      oprot.writeFieldEnd()
    if self.flowParameters is not None:
      oprot.writeFieldBegin('flowParameters', TType.LIST, 11)
      oprot.writeListBegin(TType.STRUCT, len(self.flowParameters))
      for iter20 in self.flowParameters:
        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__.iteritems()]
    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 TImportTransformConfiguration:
  """
  Attributes:
   - typeId
   - implementationClassName
   - config
  """

  thrift_spec = (
    None, # 0
    (1, TType.STRING, 'typeId', None, None, ), # 1
    (2, TType.STRING, 'implementationClassName', None, None, ), # 2
    (3, TType.MAP, 'config', (TType.STRING,None,TType.STRUCT,(koverse.thriftgen.ttypes.TConfigValue, koverse.thriftgen.ttypes.TConfigValue.thrift_spec)), None, ), # 3
  )

  def __init__(self, typeId=None, implementationClassName=None, config=None,):
    self.typeId = typeId
    self.implementationClassName = implementationClassName
    self.config = config

  def read(self, iprot):
    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
      fastbinary.decode_binary(self, iprot.trans, (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.typeId = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 2:
        if ftype == TType.STRING:
          self.implementationClassName = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 3:
        if ftype == TType.MAP:
          self.config = {}
          (_ktype22, _vtype23, _size21 ) = iprot.readMapBegin()
          for _i25 in xrange(_size21):
            _key26 = iprot.readString();
            _val27 = koverse.thriftgen.ttypes.TConfigValue()
            _val27.read(iprot)
            self.config[_key26] = _val27
          iprot.readMapEnd()
        else:
          iprot.skip(ftype)
      else:
        iprot.skip(ftype)
      iprot.readFieldEnd()
    iprot.readStructEnd()

  def write(self, oprot):
    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
      return
    oprot.writeStructBegin('TImportTransformConfiguration')
    if self.typeId is not None:
      oprot.writeFieldBegin('typeId', TType.STRING, 1)
      oprot.writeString(self.typeId)
      oprot.writeFieldEnd()
    if self.implementationClassName is not None:
      oprot.writeFieldBegin('implementationClassName', TType.STRING, 2)
      oprot.writeString(self.implementationClassName)
      oprot.writeFieldEnd()
    if self.config is not None:
      oprot.writeFieldBegin('config', TType.MAP, 3)
      oprot.writeMapBegin(TType.STRING, TType.STRUCT, len(self.config))
      for kiter28,viter29 in self.config.items():
        oprot.writeString(kiter28)
        viter29.write(oprot)
      oprot.writeMapEnd()
      oprot.writeFieldEnd()
    oprot.writeFieldStop()
    oprot.writeStructEnd()

  def validate(self):
    return


  def __repr__(self):
    L = ['%s=%r' % (key, value)
      for key, value in self.__dict__.iteritems()]
    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 TSource:
  """
  Attributes:
   - sourceId
   - name
   - typeId
   - parameters
   - disabled
   - groupPermissions
  """

  thrift_spec = (
    None, # 0
    (1, TType.I64, 'sourceId', None, None, ), # 1
    (2, TType.STRING, 'name', None, None, ), # 2
    (3, TType.STRING, 'typeId', None, None, ), # 3
    (4, TType.MAP, 'parameters', (TType.STRING,None,TType.STRING,None), None, ), # 4
    (5, TType.BOOL, 'disabled', None, None, ), # 5
    (6, TType.LIST, 'groupPermissions', (TType.STRUCT,(TSourcePermission, TSourcePermission.thrift_spec)), None, ), # 6
  )

  def __init__(self, sourceId=None, name=None, typeId=None, parameters=None, disabled=None, groupPermissions=None,):
    self.sourceId = sourceId
    self.name = name
    self.typeId = typeId
    self.parameters = parameters
    self.disabled = disabled
    self.groupPermissions = groupPermissions

  def read(self, iprot):
    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
      fastbinary.decode_binary(self, iprot.trans, (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.sourceId = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 2:
        if ftype == TType.STRING:
          self.name = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 3:
        if ftype == TType.STRING:
          self.typeId = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 4:
        if ftype == TType.MAP:
          self.parameters = {}
          (_ktype31, _vtype32, _size30 ) = iprot.readMapBegin()
          for _i34 in xrange(_size30):
            _key35 = iprot.readString();
            _val36 = iprot.readString();
            self.parameters[_key35] = _val36
          iprot.readMapEnd()
        else:
          iprot.skip(ftype)
      elif fid == 5:
        if ftype == TType.BOOL:
          self.disabled = iprot.readBool();
        else:
          iprot.skip(ftype)
      elif fid == 6:
        if ftype == TType.LIST:
          self.groupPermissions = []
          (_etype40, _size37) = iprot.readListBegin()
          for _i41 in xrange(_size37):
            _elem42 = TSourcePermission()
            _elem42.read(iprot)
            self.groupPermissions.append(_elem42)
          iprot.readListEnd()
        else:
          iprot.skip(ftype)
      else:
        iprot.skip(ftype)
      iprot.readFieldEnd()
    iprot.readStructEnd()

  def write(self, oprot):
    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
      return
    oprot.writeStructBegin('TSource')
    if self.sourceId is not None:
      oprot.writeFieldBegin('sourceId', TType.I64, 1)
      oprot.writeI64(self.sourceId)
      oprot.writeFieldEnd()
    if self.name is not None:
      oprot.writeFieldBegin('name', TType.STRING, 2)
      oprot.writeString(self.name)
      oprot.writeFieldEnd()
    if self.typeId is not None:
      oprot.writeFieldBegin('typeId', TType.STRING, 3)
      oprot.writeString(self.typeId)
      oprot.writeFieldEnd()
    if self.parameters is not None:
      oprot.writeFieldBegin('parameters', TType.MAP, 4)
      oprot.writeMapBegin(TType.STRING, TType.STRING, len(self.parameters))
      for kiter43,viter44 in self.parameters.items():
        oprot.writeString(kiter43)
        oprot.writeString(viter44)
      oprot.writeMapEnd()
      oprot.writeFieldEnd()
    if self.disabled is not None:
      oprot.writeFieldBegin('disabled', TType.BOOL, 5)
      oprot.writeBool(self.disabled)
      oprot.writeFieldEnd()
    if self.groupPermissions is not None:
      oprot.writeFieldBegin('groupPermissions', TType.LIST, 6)
      oprot.writeListBegin(TType.STRUCT, len(self.groupPermissions))
      for iter45 in self.groupPermissions:
        iter45.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__.iteritems()]
    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 TImportTransformDescription:
  """
  Attributes:
   - displayName
   - typeId
   - description
   - implementationClassName
   - parameters
  """

  thrift_spec = (
    None, # 0
    (1, TType.STRING, 'displayName', None, None, ), # 1
    (2, TType.STRING, 'typeId', None, None, ), # 2
    (3, TType.STRING, 'description', None, None, ), # 3
    (4, TType.STRING, 'implementationClassName', None, None, ), # 4
    (5, TType.LIST, 'parameters', (TType.STRUCT,(koverse.thriftgen.ttypes.TParameter, koverse.thriftgen.ttypes.TParameter.thrift_spec)), None, ), # 5
  )

  def __init__(self, displayName=None, typeId=None, description=None, implementationClassName=None, parameters=None,):
    self.displayName = displayName
    self.typeId = typeId
    self.description = description
    self.implementationClassName = implementationClassName
    self.parameters = parameters

  def read(self, iprot):
    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
      fastbinary.decode_binary(self, iprot.trans, (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.displayName = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 2:
        if ftype == TType.STRING:
          self.typeId = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 3:
        if ftype == TType.STRING:
          self.description = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 4:
        if ftype == TType.STRING:
          self.implementationClassName = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 5:
        if ftype == TType.LIST:
          self.parameters = []
          (_etype49, _size46) = iprot.readListBegin()
          for _i50 in xrange(_size46):
            _elem51 = koverse.thriftgen.ttypes.TParameter()
            _elem51.read(iprot)
            self.parameters.append(_elem51)
          iprot.readListEnd()
        else:
          iprot.skip(ftype)
      else:
        iprot.skip(ftype)
      iprot.readFieldEnd()
    iprot.readStructEnd()

  def write(self, oprot):
    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
      return
    oprot.writeStructBegin('TImportTransformDescription')
    if self.displayName is not None:
      oprot.writeFieldBegin('displayName', TType.STRING, 1)
      oprot.writeString(self.displayName)
      oprot.writeFieldEnd()
    if self.typeId is not None:
      oprot.writeFieldBegin('typeId', TType.STRING, 2)
      oprot.writeString(self.typeId)
      oprot.writeFieldEnd()
    if self.description is not None:
      oprot.writeFieldBegin('description', TType.STRING, 3)
      oprot.writeString(self.description)
      oprot.writeFieldEnd()
    if self.implementationClassName is not None:
      oprot.writeFieldBegin('implementationClassName', TType.STRING, 4)
      oprot.writeString(self.implementationClassName)
      oprot.writeFieldEnd()
    if self.parameters is not None:
      oprot.writeFieldBegin('parameters', TType.LIST, 5)
      oprot.writeListBegin(TType.STRUCT, len(self.parameters))
      for iter52 in self.parameters:
        iter52.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__.iteritems()]
    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 TImportJobStatus:
  """
  Attributes:
   - id
   - date
   - recordCount
  """

  thrift_spec = (
    None, # 0
    (1, TType.I64, 'id', None, None, ), # 1
    (2, TType.I64, 'date', None, None, ), # 2
    (3, TType.I64, 'recordCount', None, None, ), # 3
  )

  def __init__(self, id=None, date=None, recordCount=None,):
    self.id = id
    self.date = date
    self.recordCount = recordCount

  def read(self, iprot):
    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
      fastbinary.decode_binary(self, iprot.trans, (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.I64:
          self.date = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 3:
        if ftype == TType.I64:
          self.recordCount = iprot.readI64();
        else:
          iprot.skip(ftype)
      else:
        iprot.skip(ftype)
      iprot.readFieldEnd()
    iprot.readStructEnd()

  def write(self, oprot):
    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
      return
    oprot.writeStructBegin('TImportJobStatus')
    if self.id is not None:
      oprot.writeFieldBegin('id', TType.I64, 1)
      oprot.writeI64(self.id)
      oprot.writeFieldEnd()
    if self.date is not None:
      oprot.writeFieldBegin('date', TType.I64, 2)
      oprot.writeI64(self.date)
      oprot.writeFieldEnd()
    if self.recordCount is not None:
      oprot.writeFieldBegin('recordCount', TType.I64, 3)
      oprot.writeI64(self.recordCount)
      oprot.writeFieldEnd()
    oprot.writeFieldStop()
    oprot.writeStructEnd()

  def validate(self):
    return


  def __repr__(self):
    L = ['%s=%r' % (key, value)
      for key, value in self.__dict__.iteritems()]
    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 TImportJob:
  """
  Attributes:
   - jobAbstract
   - hadoopName
   - sourceId
   - collectionId
   - className
   - jobType
   - recordCount
   - transforms
   - responsibleUserId
  """

  thrift_spec = (
    None, # 0
    (1, TType.STRUCT, 'jobAbstract', (TJobAbstract, TJobAbstract.thrift_spec), None, ), # 1
    (2, TType.STRING, 'hadoopName', None, None, ), # 2
    (3, TType.I64, 'sourceId', None, None, ), # 3
    (4, TType.STRING, 'collectionId', None, None, ), # 4
    (5, TType.STRING, 'className', None, None, ), # 5
    (6, TType.I32, 'jobType', None, None, ), # 6
    (7, TType.I64, 'recordCount', None, None, ), # 7
    (8, TType.LIST, 'transforms', (TType.STRUCT,(TImportTransformConfiguration, TImportTransformConfiguration.thrift_spec)), None, ), # 8
    (9, TType.I64, 'responsibleUserId', None, None, ), # 9
  )

  def __init__(self, jobAbstract=None, hadoopName=None, sourceId=None, collectionId=None, className=None, jobType=None, recordCount=None, transforms=None, responsibleUserId=None,):
    self.jobAbstract = jobAbstract
    self.hadoopName = hadoopName
    self.sourceId = sourceId
    self.collectionId = collectionId
    self.className = className
    self.jobType = jobType
    self.recordCount = recordCount
    self.transforms = transforms
    self.responsibleUserId = responsibleUserId

  def read(self, iprot):
    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
      fastbinary.decode_binary(self, iprot.trans, (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.jobAbstract = TJobAbstract()
          self.jobAbstract.read(iprot)
        else:
          iprot.skip(ftype)
      elif fid == 2:
        if ftype == TType.STRING:
          self.hadoopName = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 3:
        if ftype == TType.I64:
          self.sourceId = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 4:
        if ftype == TType.STRING:
          self.collectionId = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 5:
        if ftype == TType.STRING:
          self.className = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 6:
        if ftype == TType.I32:
          self.jobType = iprot.readI32();
        else:
          iprot.skip(ftype)
      elif fid == 7:
        if ftype == TType.I64:
          self.recordCount = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 8:
        if ftype == TType.LIST:
          self.transforms = []
          (_etype56, _size53) = iprot.readListBegin()
          for _i57 in xrange(_size53):
            _elem58 = TImportTransformConfiguration()
            _elem58.read(iprot)
            self.transforms.append(_elem58)
          iprot.readListEnd()
        else:
          iprot.skip(ftype)
      elif fid == 9:
        if ftype == TType.I64:
          self.responsibleUserId = iprot.readI64();
        else:
          iprot.skip(ftype)
      else:
        iprot.skip(ftype)
      iprot.readFieldEnd()
    iprot.readStructEnd()

  def write(self, oprot):
    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
      return
    oprot.writeStructBegin('TImportJob')
    if self.jobAbstract is not None:
      oprot.writeFieldBegin('jobAbstract', TType.STRUCT, 1)
      self.jobAbstract.write(oprot)
      oprot.writeFieldEnd()
    if self.hadoopName is not None:
      oprot.writeFieldBegin('hadoopName', TType.STRING, 2)
      oprot.writeString(self.hadoopName)
      oprot.writeFieldEnd()
    if self.sourceId is not None:
      oprot.writeFieldBegin('sourceId', TType.I64, 3)
      oprot.writeI64(self.sourceId)
      oprot.writeFieldEnd()
    if self.collectionId is not None:
      oprot.writeFieldBegin('collectionId', TType.STRING, 4)
      oprot.writeString(self.collectionId)
      oprot.writeFieldEnd()
    if self.className is not None:
      oprot.writeFieldBegin('className', TType.STRING, 5)
      oprot.writeString(self.className)
      oprot.writeFieldEnd()
    if self.jobType is not None:
      oprot.writeFieldBegin('jobType', TType.I32, 6)
      oprot.writeI32(self.jobType)
      oprot.writeFieldEnd()
    if self.recordCount is not None:
      oprot.writeFieldBegin('recordCount', TType.I64, 7)
      oprot.writeI64(self.recordCount)
      oprot.writeFieldEnd()
    if self.transforms is not None:
      oprot.writeFieldBegin('transforms', TType.LIST, 8)
      oprot.writeListBegin(TType.STRUCT, len(self.transforms))
      for iter59 in self.transforms:
        iter59.write(oprot)
      oprot.writeListEnd()
      oprot.writeFieldEnd()
    if self.responsibleUserId is not None:
      oprot.writeFieldBegin('responsibleUserId', TType.I64, 9)
      oprot.writeI64(self.responsibleUserId)
      oprot.writeFieldEnd()
    oprot.writeFieldStop()
    oprot.writeStructEnd()

  def validate(self):
    return


  def __repr__(self):
    L = ['%s=%r' % (key, value)
      for key, value in self.__dict__.iteritems()]
    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 TTransformSchedule:
  """
  Attributes:
   - scheduleId
   - displayName
   - monthsOfYear
   - daysOfWeek
   - daysOfMonth
   - hoursOfDay
   - minutesOfHour
   - disabled
   - creationDate
   - disabledDate
   - lastUpdatedDate
   - executionCount
   - lastExecutionDate
   - transformId
  """

  thrift_spec = (
    None, # 0
    (1, TType.I64, 'scheduleId', None, None, ), # 1
    (2, TType.STRING, 'displayName', None, None, ), # 2
    (3, TType.STRING, 'monthsOfYear', None, None, ), # 3
    (4, TType.STRING, 'daysOfWeek', None, None, ), # 4
    (5, TType.STRING, 'daysOfMonth', None, None, ), # 5
    (6, TType.STRING, 'hoursOfDay', None, None, ), # 6
    (7, TType.STRING, 'minutesOfHour', None, None, ), # 7
    (8, TType.BOOL, 'disabled', None, None, ), # 8
    (9, TType.I64, 'creationDate', None, None, ), # 9
    (10, TType.I64, 'disabledDate', None, None, ), # 10
    (11, TType.I64, 'lastUpdatedDate', None, None, ), # 11
    (12, TType.I64, 'executionCount', None, None, ), # 12
    (13, TType.I64, 'lastExecutionDate', None, None, ), # 13
    (14, TType.I64, 'transformId', None, None, ), # 14
  )

  def __init__(self, scheduleId=None, displayName=None, monthsOfYear=None, daysOfWeek=None, daysOfMonth=None, hoursOfDay=None, minutesOfHour=None, disabled=None, creationDate=None, disabledDate=None, lastUpdatedDate=None, executionCount=None, lastExecutionDate=None, transformId=None,):
    self.scheduleId = scheduleId
    self.displayName = displayName
    self.monthsOfYear = monthsOfYear
    self.daysOfWeek = daysOfWeek
    self.daysOfMonth = daysOfMonth
    self.hoursOfDay = hoursOfDay
    self.minutesOfHour = minutesOfHour
    self.disabled = disabled
    self.creationDate = creationDate
    self.disabledDate = disabledDate
    self.lastUpdatedDate = lastUpdatedDate
    self.executionCount = executionCount
    self.lastExecutionDate = lastExecutionDate
    self.transformId = transformId

  def read(self, iprot):
    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
      fastbinary.decode_binary(self, iprot.trans, (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.scheduleId = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 2:
        if ftype == TType.STRING:
          self.displayName = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 3:
        if ftype == TType.STRING:
          self.monthsOfYear = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 4:
        if ftype == TType.STRING:
          self.daysOfWeek = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 5:
        if ftype == TType.STRING:
          self.daysOfMonth = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 6:
        if ftype == TType.STRING:
          self.hoursOfDay = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 7:
        if ftype == TType.STRING:
          self.minutesOfHour = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 8:
        if ftype == TType.BOOL:
          self.disabled = iprot.readBool();
        else:
          iprot.skip(ftype)
      elif fid == 9:
        if ftype == TType.I64:
          self.creationDate = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 10:
        if ftype == TType.I64:
          self.disabledDate = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 11:
        if ftype == TType.I64:
          self.lastUpdatedDate = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 12:
        if ftype == TType.I64:
          self.executionCount = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 13:
        if ftype == TType.I64:
          self.lastExecutionDate = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 14:
        if ftype == TType.I64:
          self.transformId = iprot.readI64();
        else:
          iprot.skip(ftype)
      else:
        iprot.skip(ftype)
      iprot.readFieldEnd()
    iprot.readStructEnd()

  def write(self, oprot):
    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
      return
    oprot.writeStructBegin('TTransformSchedule')
    if self.scheduleId is not None:
      oprot.writeFieldBegin('scheduleId', TType.I64, 1)
      oprot.writeI64(self.scheduleId)
      oprot.writeFieldEnd()
    if self.displayName is not None:
      oprot.writeFieldBegin('displayName', TType.STRING, 2)
      oprot.writeString(self.displayName)
      oprot.writeFieldEnd()
    if self.monthsOfYear is not None:
      oprot.writeFieldBegin('monthsOfYear', TType.STRING, 3)
      oprot.writeString(self.monthsOfYear)
      oprot.writeFieldEnd()
    if self.daysOfWeek is not None:
      oprot.writeFieldBegin('daysOfWeek', TType.STRING, 4)
      oprot.writeString(self.daysOfWeek)
      oprot.writeFieldEnd()
    if self.daysOfMonth is not None:
      oprot.writeFieldBegin('daysOfMonth', TType.STRING, 5)
      oprot.writeString(self.daysOfMonth)
      oprot.writeFieldEnd()
    if self.hoursOfDay is not None:
      oprot.writeFieldBegin('hoursOfDay', TType.STRING, 6)
      oprot.writeString(self.hoursOfDay)
      oprot.writeFieldEnd()
    if self.minutesOfHour is not None:
      oprot.writeFieldBegin('minutesOfHour', TType.STRING, 7)
      oprot.writeString(self.minutesOfHour)
      oprot.writeFieldEnd()
    if self.disabled is not None:
      oprot.writeFieldBegin('disabled', TType.BOOL, 8)
      oprot.writeBool(self.disabled)
      oprot.writeFieldEnd()
    if self.creationDate is not None:
      oprot.writeFieldBegin('creationDate', TType.I64, 9)
      oprot.writeI64(self.creationDate)
      oprot.writeFieldEnd()
    if self.disabledDate is not None:
      oprot.writeFieldBegin('disabledDate', TType.I64, 10)
      oprot.writeI64(self.disabledDate)
      oprot.writeFieldEnd()
    if self.lastUpdatedDate is not None:
      oprot.writeFieldBegin('lastUpdatedDate', TType.I64, 11)
      oprot.writeI64(self.lastUpdatedDate)
      oprot.writeFieldEnd()
    if self.executionCount is not None:
      oprot.writeFieldBegin('executionCount', TType.I64, 12)
      oprot.writeI64(self.executionCount)
      oprot.writeFieldEnd()
    if self.lastExecutionDate is not None:
      oprot.writeFieldBegin('lastExecutionDate', TType.I64, 13)
      oprot.writeI64(self.lastExecutionDate)
      oprot.writeFieldEnd()
    if self.transformId is not None:
      oprot.writeFieldBegin('transformId', TType.I64, 14)
      oprot.writeI64(self.transformId)
      oprot.writeFieldEnd()
    oprot.writeFieldStop()
    oprot.writeStructEnd()

  def validate(self):
    return


  def __repr__(self):
    L = ['%s=%r' % (key, value)
      for key, value in self.__dict__.iteritems()]
    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 TImportSchedule:
  """
  Attributes:
   - scheduleId
   - displayName
   - monthsOfYear
   - daysOfWeek
   - daysOfMonth
   - hoursOfDay
   - minutesOfHour
   - disabled
   - creationDate
   - disabledDate
   - lastUpdatedDate
   - executionCount
   - lastExecutionDate
   - importFlowId
  """

  thrift_spec = (
    None, # 0
    (1, TType.I64, 'scheduleId', None, None, ), # 1
    (2, TType.STRING, 'displayName', None, None, ), # 2
    (3, TType.STRING, 'monthsOfYear', None, None, ), # 3
    (4, TType.STRING, 'daysOfWeek', None, None, ), # 4
    (5, TType.STRING, 'daysOfMonth', None, None, ), # 5
    (6, TType.STRING, 'hoursOfDay', None, None, ), # 6
    (7, TType.STRING, 'minutesOfHour', None, None, ), # 7
    (8, TType.BOOL, 'disabled', None, None, ), # 8
    (9, TType.I64, 'creationDate', None, None, ), # 9
    (10, TType.I64, 'disabledDate', None, None, ), # 10
    (11, TType.I64, 'lastUpdatedDate', None, None, ), # 11
    (12, TType.I64, 'executionCount', None, None, ), # 12
    (13, TType.I64, 'lastExecutionDate', None, None, ), # 13
    (14, TType.I64, 'importFlowId', None, None, ), # 14
  )

  def __init__(self, scheduleId=None, displayName=None, monthsOfYear=None, daysOfWeek=None, daysOfMonth=None, hoursOfDay=None, minutesOfHour=None, disabled=None, creationDate=None, disabledDate=None, lastUpdatedDate=None, executionCount=None, lastExecutionDate=None, importFlowId=None,):
    self.scheduleId = scheduleId
    self.displayName = displayName
    self.monthsOfYear = monthsOfYear
    self.daysOfWeek = daysOfWeek
    self.daysOfMonth = daysOfMonth
    self.hoursOfDay = hoursOfDay
    self.minutesOfHour = minutesOfHour
    self.disabled = disabled
    self.creationDate = creationDate
    self.disabledDate = disabledDate
    self.lastUpdatedDate = lastUpdatedDate
    self.executionCount = executionCount
    self.lastExecutionDate = lastExecutionDate
    self.importFlowId = importFlowId

  def read(self, iprot):
    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
      fastbinary.decode_binary(self, iprot.trans, (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.scheduleId = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 2:
        if ftype == TType.STRING:
          self.displayName = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 3:
        if ftype == TType.STRING:
          self.monthsOfYear = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 4:
        if ftype == TType.STRING:
          self.daysOfWeek = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 5:
        if ftype == TType.STRING:
          self.daysOfMonth = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 6:
        if ftype == TType.STRING:
          self.hoursOfDay = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 7:
        if ftype == TType.STRING:
          self.minutesOfHour = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 8:
        if ftype == TType.BOOL:
          self.disabled = iprot.readBool();
        else:
          iprot.skip(ftype)
      elif fid == 9:
        if ftype == TType.I64:
          self.creationDate = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 10:
        if ftype == TType.I64:
          self.disabledDate = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 11:
        if ftype == TType.I64:
          self.lastUpdatedDate = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 12:
        if ftype == TType.I64:
          self.executionCount = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 13:
        if ftype == TType.I64:
          self.lastExecutionDate = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 14:
        if ftype == TType.I64:
          self.importFlowId = iprot.readI64();
        else:
          iprot.skip(ftype)
      else:
        iprot.skip(ftype)
      iprot.readFieldEnd()
    iprot.readStructEnd()

  def write(self, oprot):
    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
      return
    oprot.writeStructBegin('TImportSchedule')
    if self.scheduleId is not None:
      oprot.writeFieldBegin('scheduleId', TType.I64, 1)
      oprot.writeI64(self.scheduleId)
      oprot.writeFieldEnd()
    if self.displayName is not None:
      oprot.writeFieldBegin('displayName', TType.STRING, 2)
      oprot.writeString(self.displayName)
      oprot.writeFieldEnd()
    if self.monthsOfYear is not None:
      oprot.writeFieldBegin('monthsOfYear', TType.STRING, 3)
      oprot.writeString(self.monthsOfYear)
      oprot.writeFieldEnd()
    if self.daysOfWeek is not None:
      oprot.writeFieldBegin('daysOfWeek', TType.STRING, 4)
      oprot.writeString(self.daysOfWeek)
      oprot.writeFieldEnd()
    if self.daysOfMonth is not None:
      oprot.writeFieldBegin('daysOfMonth', TType.STRING, 5)
      oprot.writeString(self.daysOfMonth)
      oprot.writeFieldEnd()
    if self.hoursOfDay is not None:
      oprot.writeFieldBegin('hoursOfDay', TType.STRING, 6)
      oprot.writeString(self.hoursOfDay)
      oprot.writeFieldEnd()
    if self.minutesOfHour is not None:
      oprot.writeFieldBegin('minutesOfHour', TType.STRING, 7)
      oprot.writeString(self.minutesOfHour)
      oprot.writeFieldEnd()
    if self.disabled is not None:
      oprot.writeFieldBegin('disabled', TType.BOOL, 8)
      oprot.writeBool(self.disabled)
      oprot.writeFieldEnd()
    if self.creationDate is not None:
      oprot.writeFieldBegin('creationDate', TType.I64, 9)
      oprot.writeI64(self.creationDate)
      oprot.writeFieldEnd()
    if self.disabledDate is not None:
      oprot.writeFieldBegin('disabledDate', TType.I64, 10)
      oprot.writeI64(self.disabledDate)
      oprot.writeFieldEnd()
    if self.lastUpdatedDate is not None:
      oprot.writeFieldBegin('lastUpdatedDate', TType.I64, 11)
      oprot.writeI64(self.lastUpdatedDate)
      oprot.writeFieldEnd()
    if self.executionCount is not None:
      oprot.writeFieldBegin('executionCount', TType.I64, 12)
      oprot.writeI64(self.executionCount)
      oprot.writeFieldEnd()
    if self.lastExecutionDate is not None:
      oprot.writeFieldBegin('lastExecutionDate', TType.I64, 13)
      oprot.writeI64(self.lastExecutionDate)
      oprot.writeFieldEnd()
    if self.importFlowId is not None:
      oprot.writeFieldBegin('importFlowId', TType.I64, 14)
      oprot.writeI64(self.importFlowId)
      oprot.writeFieldEnd()
    oprot.writeFieldStop()
    oprot.writeStructEnd()

  def validate(self):
    return


  def __repr__(self):
    L = ['%s=%r' % (key, value)
      for key, value in self.__dict__.iteritems()]
    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 TImportFlow:
  """
  Attributes:
   - importFlowId
   - creationDate
   - disabledDate
   - lastUpdatedDate
   - executionCount
   - lastExecutionDate
   - sourceId
   - dataCollectionId
   - responsibleUserId
   - type
   - disabled
   - schedules
   - transforms
   - configurationOptions
  """

  thrift_spec = (
    None, # 0
    (1, TType.I64, 'importFlowId', None, None, ), # 1
    (2, TType.I64, 'creationDate', None, None, ), # 2
    (3, TType.I64, 'disabledDate', None, None, ), # 3
    (4, TType.I64, 'lastUpdatedDate', None, None, ), # 4
    (5, TType.I64, 'executionCount', None, None, ), # 5
    (6, TType.I64, 'lastExecutionDate', None, None, ), # 6
    (7, TType.I64, 'sourceId', None, None, ), # 7
    (8, TType.STRING, 'dataCollectionId', None, None, ), # 8
    (9, TType.I64, 'responsibleUserId', None, None, ), # 9
    (10, TType.STRING, 'type', None, None, ), # 10
    (11, TType.BOOL, 'disabled', None, None, ), # 11
    (12, TType.LIST, 'schedules', (TType.STRUCT,(TImportSchedule, TImportSchedule.thrift_spec)), None, ), # 12
    (13, TType.LIST, 'transforms', (TType.STRUCT,(TImportTransformConfiguration, TImportTransformConfiguration.thrift_spec)), None, ), # 13
    (14, TType.MAP, 'configurationOptions', (TType.STRING,None,TType.STRING,None), None, ), # 14
  )

  def __init__(self, importFlowId=None, creationDate=None, disabledDate=None, lastUpdatedDate=None, executionCount=None, lastExecutionDate=None, sourceId=None, dataCollectionId=None, responsibleUserId=None, type=None, disabled=None, schedules=None, transforms=None, configurationOptions=None,):
    self.importFlowId = importFlowId
    self.creationDate = creationDate
    self.disabledDate = disabledDate
    self.lastUpdatedDate = lastUpdatedDate
    self.executionCount = executionCount
    self.lastExecutionDate = lastExecutionDate
    self.sourceId = sourceId
    self.dataCollectionId = dataCollectionId
    self.responsibleUserId = responsibleUserId
    self.type = type
    self.disabled = disabled
    self.schedules = schedules
    self.transforms = transforms
    self.configurationOptions = configurationOptions

  def read(self, iprot):
    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
      fastbinary.decode_binary(self, iprot.trans, (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.importFlowId = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 2:
        if ftype == TType.I64:
          self.creationDate = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 3:
        if ftype == TType.I64:
          self.disabledDate = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 4:
        if ftype == TType.I64:
          self.lastUpdatedDate = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 5:
        if ftype == TType.I64:
          self.executionCount = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 6:
        if ftype == TType.I64:
          self.lastExecutionDate = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 7:
        if ftype == TType.I64:
          self.sourceId = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 8:
        if ftype == TType.STRING:
          self.dataCollectionId = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 9:
        if ftype == TType.I64:
          self.responsibleUserId = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 10:
        if ftype == TType.STRING:
          self.type = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 11:
        if ftype == TType.BOOL:
          self.disabled = iprot.readBool();
        else:
          iprot.skip(ftype)
      elif fid == 12:
        if ftype == TType.LIST:
          self.schedules = []
          (_etype63, _size60) = iprot.readListBegin()
          for _i64 in xrange(_size60):
            _elem65 = TImportSchedule()
            _elem65.read(iprot)
            self.schedules.append(_elem65)
          iprot.readListEnd()
        else:
          iprot.skip(ftype)
      elif fid == 13:
        if ftype == TType.LIST:
          self.transforms = []
          (_etype69, _size66) = iprot.readListBegin()
          for _i70 in xrange(_size66):
            _elem71 = TImportTransformConfiguration()
            _elem71.read(iprot)
            self.transforms.append(_elem71)
          iprot.readListEnd()
        else:
          iprot.skip(ftype)
      elif fid == 14:
        if ftype == TType.MAP:
          self.configurationOptions = {}
          (_ktype73, _vtype74, _size72 ) = iprot.readMapBegin()
          for _i76 in xrange(_size72):
            _key77 = iprot.readString();
            _val78 = iprot.readString();
            self.configurationOptions[_key77] = _val78
          iprot.readMapEnd()
        else:
          iprot.skip(ftype)
      else:
        iprot.skip(ftype)
      iprot.readFieldEnd()
    iprot.readStructEnd()

  def write(self, oprot):
    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
      return
    oprot.writeStructBegin('TImportFlow')
    if self.importFlowId is not None:
      oprot.writeFieldBegin('importFlowId', TType.I64, 1)
      oprot.writeI64(self.importFlowId)
      oprot.writeFieldEnd()
    if self.creationDate is not None:
      oprot.writeFieldBegin('creationDate', TType.I64, 2)
      oprot.writeI64(self.creationDate)
      oprot.writeFieldEnd()
    if self.disabledDate is not None:
      oprot.writeFieldBegin('disabledDate', TType.I64, 3)
      oprot.writeI64(self.disabledDate)
      oprot.writeFieldEnd()
    if self.lastUpdatedDate is not None:
      oprot.writeFieldBegin('lastUpdatedDate', TType.I64, 4)
      oprot.writeI64(self.lastUpdatedDate)
      oprot.writeFieldEnd()
    if self.executionCount is not None:
      oprot.writeFieldBegin('executionCount', TType.I64, 5)
      oprot.writeI64(self.executionCount)
      oprot.writeFieldEnd()
    if self.lastExecutionDate is not None:
      oprot.writeFieldBegin('lastExecutionDate', TType.I64, 6)
      oprot.writeI64(self.lastExecutionDate)
      oprot.writeFieldEnd()
    if self.sourceId is not None:
      oprot.writeFieldBegin('sourceId', TType.I64, 7)
      oprot.writeI64(self.sourceId)
      oprot.writeFieldEnd()
    if self.dataCollectionId is not None:
      oprot.writeFieldBegin('dataCollectionId', TType.STRING, 8)
      oprot.writeString(self.dataCollectionId)
      oprot.writeFieldEnd()
    if self.responsibleUserId is not None:
      oprot.writeFieldBegin('responsibleUserId', TType.I64, 9)
      oprot.writeI64(self.responsibleUserId)
      oprot.writeFieldEnd()
    if self.type is not None:
      oprot.writeFieldBegin('type', TType.STRING, 10)
      oprot.writeString(self.type)
      oprot.writeFieldEnd()
    if self.disabled is not None:
      oprot.writeFieldBegin('disabled', TType.BOOL, 11)
      oprot.writeBool(self.disabled)
      oprot.writeFieldEnd()
    if self.schedules is not None:
      oprot.writeFieldBegin('schedules', TType.LIST, 12)
      oprot.writeListBegin(TType.STRUCT, len(self.schedules))
      for iter79 in self.schedules:
        iter79.write(oprot)
      oprot.writeListEnd()
      oprot.writeFieldEnd()
    if self.transforms is not None:
      oprot.writeFieldBegin('transforms', TType.LIST, 13)
      oprot.writeListBegin(TType.STRUCT, len(self.transforms))
      for iter80 in self.transforms:
        iter80.write(oprot)
      oprot.writeListEnd()
      oprot.writeFieldEnd()
    if self.configurationOptions is not None:
      oprot.writeFieldBegin('configurationOptions', TType.MAP, 14)
      oprot.writeMapBegin(TType.STRING, TType.STRING, len(self.configurationOptions))
      for kiter81,viter82 in self.configurationOptions.items():
        oprot.writeString(kiter81)
        oprot.writeString(viter82)
      oprot.writeMapEnd()
      oprot.writeFieldEnd()
    oprot.writeFieldStop()
    oprot.writeStructEnd()

  def validate(self):
    return


  def __repr__(self):
    L = ['%s=%r' % (key, value)
      for key, value in self.__dict__.iteritems()]
    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 TTransformTypeStageDescription:
  """
  Attributes:
   - options
   - className
   - stageType
   - mapInputKeyClassName
   - mapInputValueClassName
   - mapOutputKeyClassName
   - mapOutputValueClassName
  """

  thrift_spec = (
    None, # 0
    (1, TType.MAP, 'options', (TType.STRING,None,TType.STRING,None), None, ), # 1
    (2, TType.STRING, 'className', None, None, ), # 2
    (3, TType.I32, 'stageType', None, None, ), # 3
    (4, TType.STRING, 'mapInputKeyClassName', None, None, ), # 4
    (5, TType.STRING, 'mapInputValueClassName', None, None, ), # 5
    (6, TType.STRING, 'mapOutputKeyClassName', None, None, ), # 6
    (7, TType.STRING, 'mapOutputValueClassName', None, None, ), # 7
  )

  def __init__(self, options=None, className=None, stageType=None, mapInputKeyClassName=None, mapInputValueClassName=None, mapOutputKeyClassName=None, mapOutputValueClassName=None,):
    self.options = options
    self.className = className
    self.stageType = stageType
    self.mapInputKeyClassName = mapInputKeyClassName
    self.mapInputValueClassName = mapInputValueClassName
    self.mapOutputKeyClassName = mapOutputKeyClassName
    self.mapOutputValueClassName = mapOutputValueClassName

  def read(self, iprot):
    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
      fastbinary.decode_binary(self, iprot.trans, (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.MAP:
          self.options = {}
          (_ktype84, _vtype85, _size83 ) = iprot.readMapBegin()
          for _i87 in xrange(_size83):
            _key88 = iprot.readString();
            _val89 = iprot.readString();
            self.options[_key88] = _val89
          iprot.readMapEnd()
        else:
          iprot.skip(ftype)
      elif fid == 2:
        if ftype == TType.STRING:
          self.className = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 3:
        if ftype == TType.I32:
          self.stageType = iprot.readI32();
        else:
          iprot.skip(ftype)
      elif fid == 4:
        if ftype == TType.STRING:
          self.mapInputKeyClassName = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 5:
        if ftype == TType.STRING:
          self.mapInputValueClassName = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 6:
        if ftype == TType.STRING:
          self.mapOutputKeyClassName = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 7:
        if ftype == TType.STRING:
          self.mapOutputValueClassName = iprot.readString();
        else:
          iprot.skip(ftype)
      else:
        iprot.skip(ftype)
      iprot.readFieldEnd()
    iprot.readStructEnd()

  def write(self, oprot):
    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
      return
    oprot.writeStructBegin('TTransformTypeStageDescription')
    if self.options is not None:
      oprot.writeFieldBegin('options', TType.MAP, 1)
      oprot.writeMapBegin(TType.STRING, TType.STRING, len(self.options))
      for kiter90,viter91 in self.options.items():
        oprot.writeString(kiter90)
        oprot.writeString(viter91)
      oprot.writeMapEnd()
      oprot.writeFieldEnd()
    if self.className is not None:
      oprot.writeFieldBegin('className', TType.STRING, 2)
      oprot.writeString(self.className)
      oprot.writeFieldEnd()
    if self.stageType is not None:
      oprot.writeFieldBegin('stageType', TType.I32, 3)
      oprot.writeI32(self.stageType)
      oprot.writeFieldEnd()
    if self.mapInputKeyClassName is not None:
      oprot.writeFieldBegin('mapInputKeyClassName', TType.STRING, 4)
      oprot.writeString(self.mapInputKeyClassName)
      oprot.writeFieldEnd()
    if self.mapInputValueClassName is not None:
      oprot.writeFieldBegin('mapInputValueClassName', TType.STRING, 5)
      oprot.writeString(self.mapInputValueClassName)
      oprot.writeFieldEnd()
    if self.mapOutputKeyClassName is not None:
      oprot.writeFieldBegin('mapOutputKeyClassName', TType.STRING, 6)
      oprot.writeString(self.mapOutputKeyClassName)
      oprot.writeFieldEnd()
    if self.mapOutputValueClassName is not None:
      oprot.writeFieldBegin('mapOutputValueClassName', TType.STRING, 7)
      oprot.writeString(self.mapOutputValueClassName)
      oprot.writeFieldEnd()
    oprot.writeFieldStop()
    oprot.writeStructEnd()

  def validate(self):
    return


  def __repr__(self):
    L = ['%s=%r' % (key, value)
      for key, value in self.__dict__.iteritems()]
    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 TTransform:
  """
  Attributes:
   - transformId
   - name
   - type
   - userId
   - jobIds
   - parameters
   - backend
   - disabled
   - creationDate
   - lastUpdatedDate
   - replaceOutputData
   - scheduleType
   - minimumExecutionPeriod
   - inputDataWindowType
   - inputDataSlidingWindowSizeSeconds
  """

  thrift_spec = (
    None, # 0
    (1, TType.I64, 'transformId', None, None, ), # 1
    (2, TType.STRING, 'name', None, None, ), # 2
    (3, TType.STRING, 'type', None, None, ), # 3
    (4, TType.I64, 'userId', None, None, ), # 4
    (5, TType.LIST, 'jobIds', (TType.I64,None), None, ), # 5
    (6, TType.MAP, 'parameters', (TType.STRING,None,TType.STRUCT,(koverse.thriftgen.ttypes.TConfigValue, koverse.thriftgen.ttypes.TConfigValue.thrift_spec)), None, ), # 6
    (7, TType.STRING, 'backend', None, None, ), # 7
    (8, TType.BOOL, 'disabled', None, None, ), # 8
    (9, TType.I64, 'creationDate', None, None, ), # 9
    (10, TType.I64, 'lastUpdatedDate', None, None, ), # 10
    (11, TType.BOOL, 'replaceOutputData', None, None, ), # 11
    (12, TType.STRING, 'scheduleType', None, None, ), # 12
    (13, TType.I64, 'minimumExecutionPeriod', None, None, ), # 13
    (14, TType.STRING, 'inputDataWindowType', None, None, ), # 14
    (15, TType.I64, 'inputDataSlidingWindowSizeSeconds', None, None, ), # 15
  )

  def __init__(self, transformId=None, name=None, type=None, userId=None, jobIds=None, parameters=None, backend=None, disabled=None, creationDate=None, lastUpdatedDate=None, replaceOutputData=None, scheduleType=None, minimumExecutionPeriod=None, inputDataWindowType=None, inputDataSlidingWindowSizeSeconds=None,):
    self.transformId = transformId
    self.name = name
    self.type = type
    self.userId = userId
    self.jobIds = jobIds
    self.parameters = parameters
    self.backend = backend
    self.disabled = disabled
    self.creationDate = creationDate
    self.lastUpdatedDate = lastUpdatedDate
    self.replaceOutputData = replaceOutputData
    self.scheduleType = scheduleType
    self.minimumExecutionPeriod = minimumExecutionPeriod
    self.inputDataWindowType = inputDataWindowType
    self.inputDataSlidingWindowSizeSeconds = inputDataSlidingWindowSizeSeconds

  def read(self, iprot):
    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
      fastbinary.decode_binary(self, iprot.trans, (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.transformId = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 2:
        if ftype == TType.STRING:
          self.name = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 3:
        if ftype == TType.STRING:
          self.type = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 4:
        if ftype == TType.I64:
          self.userId = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 5:
        if ftype == TType.LIST:
          self.jobIds = []
          (_etype95, _size92) = iprot.readListBegin()
          for _i96 in xrange(_size92):
            _elem97 = iprot.readI64();
            self.jobIds.append(_elem97)
          iprot.readListEnd()
        else:
          iprot.skip(ftype)
      elif fid == 6:
        if ftype == TType.MAP:
          self.parameters = {}
          (_ktype99, _vtype100, _size98 ) = iprot.readMapBegin()
          for _i102 in xrange(_size98):
            _key103 = iprot.readString();
            _val104 = koverse.thriftgen.ttypes.TConfigValue()
            _val104.read(iprot)
            self.parameters[_key103] = _val104
          iprot.readMapEnd()
        else:
          iprot.skip(ftype)
      elif fid == 7:
        if ftype == TType.STRING:
          self.backend = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 8:
        if ftype == TType.BOOL:
          self.disabled = iprot.readBool();
        else:
          iprot.skip(ftype)
      elif fid == 9:
        if ftype == TType.I64:
          self.creationDate = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 10:
        if ftype == TType.I64:
          self.lastUpdatedDate = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 11:
        if ftype == TType.BOOL:
          self.replaceOutputData = iprot.readBool();
        else:
          iprot.skip(ftype)
      elif fid == 12:
        if ftype == TType.STRING:
          self.scheduleType = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 13:
        if ftype == TType.I64:
          self.minimumExecutionPeriod = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 14:
        if ftype == TType.STRING:
          self.inputDataWindowType = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 15:
        if ftype == TType.I64:
          self.inputDataSlidingWindowSizeSeconds = iprot.readI64();
        else:
          iprot.skip(ftype)
      else:
        iprot.skip(ftype)
      iprot.readFieldEnd()
    iprot.readStructEnd()

  def write(self, oprot):
    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
      return
    oprot.writeStructBegin('TTransform')
    if self.transformId is not None:
      oprot.writeFieldBegin('transformId', TType.I64, 1)
      oprot.writeI64(self.transformId)
      oprot.writeFieldEnd()
    if self.name is not None:
      oprot.writeFieldBegin('name', TType.STRING, 2)
      oprot.writeString(self.name)
      oprot.writeFieldEnd()
    if self.type is not None:
      oprot.writeFieldBegin('type', TType.STRING, 3)
      oprot.writeString(self.type)
      oprot.writeFieldEnd()
    if self.userId is not None:
      oprot.writeFieldBegin('userId', TType.I64, 4)
      oprot.writeI64(self.userId)
      oprot.writeFieldEnd()
    if self.jobIds is not None:
      oprot.writeFieldBegin('jobIds', TType.LIST, 5)
      oprot.writeListBegin(TType.I64, len(self.jobIds))
      for iter105 in self.jobIds:
        oprot.writeI64(iter105)
      oprot.writeListEnd()
      oprot.writeFieldEnd()
    if self.parameters is not None:
      oprot.writeFieldBegin('parameters', TType.MAP, 6)
      oprot.writeMapBegin(TType.STRING, TType.STRUCT, len(self.parameters))
      for kiter106,viter107 in self.parameters.items():
        oprot.writeString(kiter106)
        viter107.write(oprot)
      oprot.writeMapEnd()
      oprot.writeFieldEnd()
    if self.backend is not None:
      oprot.writeFieldBegin('backend', TType.STRING, 7)
      oprot.writeString(self.backend)
      oprot.writeFieldEnd()
    if self.disabled is not None:
      oprot.writeFieldBegin('disabled', TType.BOOL, 8)
      oprot.writeBool(self.disabled)
      oprot.writeFieldEnd()
    if self.creationDate is not None:
      oprot.writeFieldBegin('creationDate', TType.I64, 9)
      oprot.writeI64(self.creationDate)
      oprot.writeFieldEnd()
    if self.lastUpdatedDate is not None:
      oprot.writeFieldBegin('lastUpdatedDate', TType.I64, 10)
      oprot.writeI64(self.lastUpdatedDate)
      oprot.writeFieldEnd()
    if self.replaceOutputData is not None:
      oprot.writeFieldBegin('replaceOutputData', TType.BOOL, 11)
      oprot.writeBool(self.replaceOutputData)
      oprot.writeFieldEnd()
    if self.scheduleType is not None:
      oprot.writeFieldBegin('scheduleType', TType.STRING, 12)
      oprot.writeString(self.scheduleType)
      oprot.writeFieldEnd()
    if self.minimumExecutionPeriod is not None:
      oprot.writeFieldBegin('minimumExecutionPeriod', TType.I64, 13)
      oprot.writeI64(self.minimumExecutionPeriod)
      oprot.writeFieldEnd()
    if self.inputDataWindowType is not None:
      oprot.writeFieldBegin('inputDataWindowType', TType.STRING, 14)
      oprot.writeString(self.inputDataWindowType)
      oprot.writeFieldEnd()
    if self.inputDataSlidingWindowSizeSeconds is not None:
      oprot.writeFieldBegin('inputDataSlidingWindowSizeSeconds', TType.I64, 15)
      oprot.writeI64(self.inputDataSlidingWindowSizeSeconds)
      oprot.writeFieldEnd()
    oprot.writeFieldStop()
    oprot.writeStructEnd()

  def validate(self):
    return


  def __repr__(self):
    L = ['%s=%r' % (key, value)
      for key, value in self.__dict__.iteritems()]
    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 TTransformJob:
  """
  Attributes:
   - batchJob
   - transformId
   - parameters
   - stages
   - jobTypeId
   - requestedWorkers
   - backend
   - replaceOutputData
   - minimumExecutionPeriod
   - inputDataWindowType
   - inputDataSlidingWindowSizeSeconds
   - hadoopName
   - mapreduceJobIds
  """

  thrift_spec = (
    None, # 0
    (1, TType.STRUCT, 'batchJob', (TBatchJob, TBatchJob.thrift_spec), None, ), # 1
    (2, TType.I64, 'transformId', None, None, ), # 2
    (3, TType.MAP, 'parameters', (TType.STRING,None,TType.STRUCT,(koverse.thriftgen.ttypes.TConfigValue, koverse.thriftgen.ttypes.TConfigValue.thrift_spec)), None, ), # 3
    (4, TType.LIST, 'stages', (TType.STRUCT,(TTransformTypeStageDescription, TTransformTypeStageDescription.thrift_spec)), None, ), # 4
    (5, TType.I64, 'jobTypeId', None, None, ), # 5
    (6, TType.I32, 'requestedWorkers', None, None, ), # 6
    (7, TType.STRING, 'backend', None, None, ), # 7
    (8, TType.BOOL, 'replaceOutputData', None, None, ), # 8
    (9, TType.I64, 'minimumExecutionPeriod', None, None, ), # 9
    (10, TType.STRING, 'inputDataWindowType', None, None, ), # 10
    (11, TType.I64, 'inputDataSlidingWindowSizeSeconds', None, None, ), # 11
    (12, TType.STRING, 'hadoopName', None, None, ), # 12
    (13, TType.SET, 'mapreduceJobIds', (TType.STRING,None), None, ), # 13
  )

  def __init__(self, batchJob=None, transformId=None, parameters=None, stages=None, jobTypeId=None, requestedWorkers=None, backend=None, replaceOutputData=None, minimumExecutionPeriod=None, inputDataWindowType=None, inputDataSlidingWindowSizeSeconds=None, hadoopName=None, mapreduceJobIds=None,):
    self.batchJob = batchJob
    self.transformId = transformId
    self.parameters = parameters
    self.stages = stages
    self.jobTypeId = jobTypeId
    self.requestedWorkers = requestedWorkers
    self.backend = backend
    self.replaceOutputData = replaceOutputData
    self.minimumExecutionPeriod = minimumExecutionPeriod
    self.inputDataWindowType = inputDataWindowType
    self.inputDataSlidingWindowSizeSeconds = inputDataSlidingWindowSizeSeconds
    self.hadoopName = hadoopName
    self.mapreduceJobIds = mapreduceJobIds

  def read(self, iprot):
    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
      fastbinary.decode_binary(self, iprot.trans, (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.batchJob = TBatchJob()
          self.batchJob.read(iprot)
        else:
          iprot.skip(ftype)
      elif fid == 2:
        if ftype == TType.I64:
          self.transformId = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 3:
        if ftype == TType.MAP:
          self.parameters = {}
          (_ktype109, _vtype110, _size108 ) = iprot.readMapBegin()
          for _i112 in xrange(_size108):
            _key113 = iprot.readString();
            _val114 = koverse.thriftgen.ttypes.TConfigValue()
            _val114.read(iprot)
            self.parameters[_key113] = _val114
          iprot.readMapEnd()
        else:
          iprot.skip(ftype)
      elif fid == 4:
        if ftype == TType.LIST:
          self.stages = []
          (_etype118, _size115) = iprot.readListBegin()
          for _i119 in xrange(_size115):
            _elem120 = TTransformTypeStageDescription()
            _elem120.read(iprot)
            self.stages.append(_elem120)
          iprot.readListEnd()
        else:
          iprot.skip(ftype)
      elif fid == 5:
        if ftype == TType.I64:
          self.jobTypeId = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 6:
        if ftype == TType.I32:
          self.requestedWorkers = iprot.readI32();
        else:
          iprot.skip(ftype)
      elif fid == 7:
        if ftype == TType.STRING:
          self.backend = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 8:
        if ftype == TType.BOOL:
          self.replaceOutputData = iprot.readBool();
        else:
          iprot.skip(ftype)
      elif fid == 9:
        if ftype == TType.I64:
          self.minimumExecutionPeriod = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 10:
        if ftype == TType.STRING:
          self.inputDataWindowType = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 11:
        if ftype == TType.I64:
          self.inputDataSlidingWindowSizeSeconds = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 12:
        if ftype == TType.STRING:
          self.hadoopName = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 13:
        if ftype == TType.SET:
          self.mapreduceJobIds = set()
          (_etype124, _size121) = iprot.readSetBegin()
          for _i125 in xrange(_size121):
            _elem126 = iprot.readString();
            self.mapreduceJobIds.add(_elem126)
          iprot.readSetEnd()
        else:
          iprot.skip(ftype)
      else:
        iprot.skip(ftype)
      iprot.readFieldEnd()
    iprot.readStructEnd()

  def write(self, oprot):
    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
      return
    oprot.writeStructBegin('TTransformJob')
    if self.batchJob is not None:
      oprot.writeFieldBegin('batchJob', TType.STRUCT, 1)
      self.batchJob.write(oprot)
      oprot.writeFieldEnd()
    if self.transformId is not None:
      oprot.writeFieldBegin('transformId', TType.I64, 2)
      oprot.writeI64(self.transformId)
      oprot.writeFieldEnd()
    if self.parameters is not None:
      oprot.writeFieldBegin('parameters', TType.MAP, 3)
      oprot.writeMapBegin(TType.STRING, TType.STRUCT, len(self.parameters))
      for kiter127,viter128 in self.parameters.items():
        oprot.writeString(kiter127)
        viter128.write(oprot)
      oprot.writeMapEnd()
      oprot.writeFieldEnd()
    if self.stages is not None:
      oprot.writeFieldBegin('stages', TType.LIST, 4)
      oprot.writeListBegin(TType.STRUCT, len(self.stages))
      for iter129 in self.stages:
        iter129.write(oprot)
      oprot.writeListEnd()
      oprot.writeFieldEnd()
    if self.jobTypeId is not None:
      oprot.writeFieldBegin('jobTypeId', TType.I64, 5)
      oprot.writeI64(self.jobTypeId)
      oprot.writeFieldEnd()
    if self.requestedWorkers is not None:
      oprot.writeFieldBegin('requestedWorkers', TType.I32, 6)
      oprot.writeI32(self.requestedWorkers)
      oprot.writeFieldEnd()
    if self.backend is not None:
      oprot.writeFieldBegin('backend', TType.STRING, 7)
      oprot.writeString(self.backend)
      oprot.writeFieldEnd()
    if self.replaceOutputData is not None:
      oprot.writeFieldBegin('replaceOutputData', TType.BOOL, 8)
      oprot.writeBool(self.replaceOutputData)
      oprot.writeFieldEnd()
    if self.minimumExecutionPeriod is not None:
      oprot.writeFieldBegin('minimumExecutionPeriod', TType.I64, 9)
      oprot.writeI64(self.minimumExecutionPeriod)
      oprot.writeFieldEnd()
    if self.inputDataWindowType is not None:
      oprot.writeFieldBegin('inputDataWindowType', TType.STRING, 10)
      oprot.writeString(self.inputDataWindowType)
      oprot.writeFieldEnd()
    if self.inputDataSlidingWindowSizeSeconds is not None:
      oprot.writeFieldBegin('inputDataSlidingWindowSizeSeconds', TType.I64, 11)
      oprot.writeI64(self.inputDataSlidingWindowSizeSeconds)
      oprot.writeFieldEnd()
    if self.hadoopName is not None:
      oprot.writeFieldBegin('hadoopName', TType.STRING, 12)
      oprot.writeString(self.hadoopName)
      oprot.writeFieldEnd()
    if self.mapreduceJobIds is not None:
      oprot.writeFieldBegin('mapreduceJobIds', TType.SET, 13)
      oprot.writeSetBegin(TType.STRING, len(self.mapreduceJobIds))
      for iter130 in self.mapreduceJobIds:
        oprot.writeString(iter130)
      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__.iteritems()]
    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 TTransformJobTypeDescription:
  """
  Attributes:
   - id
   - jobTypeId
   - name
   - parameters
   - disabled
   - addOnId
   - transformClassName
   - version
   - supportsIncrementalProcessing
   - stages
  """

  thrift_spec = (
    None, # 0
    (1, TType.I64, 'id', None, None, ), # 1
    (2, TType.STRING, 'jobTypeId', None, None, ), # 2
    (3, TType.STRING, 'name', None, None, ), # 3
    (4, TType.LIST, 'parameters', (TType.STRUCT,(koverse.thriftgen.ttypes.TParameter, koverse.thriftgen.ttypes.TParameter.thrift_spec)), None, ), # 4
    (5, TType.BOOL, 'disabled', None, None, ), # 5
    (6, TType.I64, 'addOnId', None, None, ), # 6
    (7, TType.STRING, 'transformClassName', None, None, ), # 7
    (8, TType.STRING, 'version', None, None, ), # 8
    (9, TType.BOOL, 'supportsIncrementalProcessing', None, None, ), # 9
    (10, TType.LIST, 'stages', (TType.STRUCT,(TTransformTypeStageDescription, TTransformTypeStageDescription.thrift_spec)), None, ), # 10
  )

  def __init__(self, id=None, jobTypeId=None, name=None, parameters=None, disabled=None, addOnId=None, transformClassName=None, version=None, supportsIncrementalProcessing=None, stages=None,):
    self.id = id
    self.jobTypeId = jobTypeId
    self.name = name
    self.parameters = parameters
    self.disabled = disabled
    self.addOnId = addOnId
    self.transformClassName = transformClassName
    self.version = version
    self.supportsIncrementalProcessing = supportsIncrementalProcessing
    self.stages = stages

  def read(self, iprot):
    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
      fastbinary.decode_binary(self, iprot.trans, (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.jobTypeId = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 3:
        if ftype == TType.STRING:
          self.name = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 4:
        if ftype == TType.LIST:
          self.parameters = []
          (_etype134, _size131) = iprot.readListBegin()
          for _i135 in xrange(_size131):
            _elem136 = koverse.thriftgen.ttypes.TParameter()
            _elem136.read(iprot)
            self.parameters.append(_elem136)
          iprot.readListEnd()
        else:
          iprot.skip(ftype)
      elif fid == 5:
        if ftype == TType.BOOL:
          self.disabled = iprot.readBool();
        else:
          iprot.skip(ftype)
      elif fid == 6:
        if ftype == TType.I64:
          self.addOnId = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 7:
        if ftype == TType.STRING:
          self.transformClassName = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 8:
        if ftype == TType.STRING:
          self.version = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 9:
        if ftype == TType.BOOL:
          self.supportsIncrementalProcessing = iprot.readBool();
        else:
          iprot.skip(ftype)
      elif fid == 10:
        if ftype == TType.LIST:
          self.stages = []
          (_etype140, _size137) = iprot.readListBegin()
          for _i141 in xrange(_size137):
            _elem142 = TTransformTypeStageDescription()
            _elem142.read(iprot)
            self.stages.append(_elem142)
          iprot.readListEnd()
        else:
          iprot.skip(ftype)
      else:
        iprot.skip(ftype)
      iprot.readFieldEnd()
    iprot.readStructEnd()

  def write(self, oprot):
    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
      return
    oprot.writeStructBegin('TTransformJobTypeDescription')
    if self.id is not None:
      oprot.writeFieldBegin('id', TType.I64, 1)
      oprot.writeI64(self.id)
      oprot.writeFieldEnd()
    if self.jobTypeId is not None:
      oprot.writeFieldBegin('jobTypeId', TType.STRING, 2)
      oprot.writeString(self.jobTypeId)
      oprot.writeFieldEnd()
    if self.name is not None:
      oprot.writeFieldBegin('name', TType.STRING, 3)
      oprot.writeString(self.name)
      oprot.writeFieldEnd()
    if self.parameters is not None:
      oprot.writeFieldBegin('parameters', TType.LIST, 4)
      oprot.writeListBegin(TType.STRUCT, len(self.parameters))
      for iter143 in self.parameters:
        iter143.write(oprot)
      oprot.writeListEnd()
      oprot.writeFieldEnd()
    if self.disabled is not None:
      oprot.writeFieldBegin('disabled', TType.BOOL, 5)
      oprot.writeBool(self.disabled)
      oprot.writeFieldEnd()
    if self.addOnId is not None:
      oprot.writeFieldBegin('addOnId', TType.I64, 6)
      oprot.writeI64(self.addOnId)
      oprot.writeFieldEnd()
    if self.transformClassName is not None:
      oprot.writeFieldBegin('transformClassName', TType.STRING, 7)
      oprot.writeString(self.transformClassName)
      oprot.writeFieldEnd()
    if self.version is not None:
      oprot.writeFieldBegin('version', TType.STRING, 8)
      oprot.writeString(self.version)
      oprot.writeFieldEnd()
    if self.supportsIncrementalProcessing is not None:
      oprot.writeFieldBegin('supportsIncrementalProcessing', TType.BOOL, 9)
      oprot.writeBool(self.supportsIncrementalProcessing)
      oprot.writeFieldEnd()
    if self.stages is not None:
      oprot.writeFieldBegin('stages', TType.LIST, 10)
      oprot.writeListBegin(TType.STRUCT, len(self.stages))
      for iter144 in self.stages:
        iter144.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__.iteritems()]
    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 TExportTransformDescription:
  """
  Attributes:
   - displayName
   - typeId
   - description
   - implementationClassName
   - parameters
  """

  thrift_spec = (
    None, # 0
    (1, TType.STRING, 'displayName', None, None, ), # 1
    (2, TType.STRING, 'typeId', None, None, ), # 2
    (3, TType.STRING, 'description', None, None, ), # 3
    (4, TType.STRING, 'implementationClassName', None, None, ), # 4
    (5, TType.LIST, 'parameters', (TType.STRUCT,(koverse.thriftgen.ttypes.TParameter, koverse.thriftgen.ttypes.TParameter.thrift_spec)), None, ), # 5
  )

  def __init__(self, displayName=None, typeId=None, description=None, implementationClassName=None, parameters=None,):
    self.displayName = displayName
    self.typeId = typeId
    self.description = description
    self.implementationClassName = implementationClassName
    self.parameters = parameters

  def read(self, iprot):
    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
      fastbinary.decode_binary(self, iprot.trans, (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.displayName = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 2:
        if ftype == TType.STRING:
          self.typeId = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 3:
        if ftype == TType.STRING:
          self.description = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 4:
        if ftype == TType.STRING:
          self.implementationClassName = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 5:
        if ftype == TType.LIST:
          self.parameters = []
          (_etype148, _size145) = iprot.readListBegin()
          for _i149 in xrange(_size145):
            _elem150 = koverse.thriftgen.ttypes.TParameter()
            _elem150.read(iprot)
            self.parameters.append(_elem150)
          iprot.readListEnd()
        else:
          iprot.skip(ftype)
      else:
        iprot.skip(ftype)
      iprot.readFieldEnd()
    iprot.readStructEnd()

  def write(self, oprot):
    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
      return
    oprot.writeStructBegin('TExportTransformDescription')
    if self.displayName is not None:
      oprot.writeFieldBegin('displayName', TType.STRING, 1)
      oprot.writeString(self.displayName)
      oprot.writeFieldEnd()
    if self.typeId is not None:
      oprot.writeFieldBegin('typeId', TType.STRING, 2)
      oprot.writeString(self.typeId)
      oprot.writeFieldEnd()
    if self.description is not None:
      oprot.writeFieldBegin('description', TType.STRING, 3)
      oprot.writeString(self.description)
      oprot.writeFieldEnd()
    if self.implementationClassName is not None:
      oprot.writeFieldBegin('implementationClassName', TType.STRING, 4)
      oprot.writeString(self.implementationClassName)
      oprot.writeFieldEnd()
    if self.parameters is not None:
      oprot.writeFieldBegin('parameters', TType.LIST, 5)
      oprot.writeListBegin(TType.STRUCT, len(self.parameters))
      for iter151 in self.parameters:
        iter151.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__.iteritems()]
    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 TExportTransformConfiguration:
  """
  Attributes:
   - typeId
   - implementationClassName
   - config
  """

  thrift_spec = (
    None, # 0
    (1, TType.STRING, 'typeId', None, None, ), # 1
    (2, TType.STRING, 'implementationClassName', None, None, ), # 2
    (3, TType.MAP, 'config', (TType.STRING,None,TType.STRUCT,(koverse.thriftgen.ttypes.TConfigValue, koverse.thriftgen.ttypes.TConfigValue.thrift_spec)), None, ), # 3
  )

  def __init__(self, typeId=None, implementationClassName=None, config=None,):
    self.typeId = typeId
    self.implementationClassName = implementationClassName
    self.config = config

  def read(self, iprot):
    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
      fastbinary.decode_binary(self, iprot.trans, (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.typeId = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 2:
        if ftype == TType.STRING:
          self.implementationClassName = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 3:
        if ftype == TType.MAP:
          self.config = {}
          (_ktype153, _vtype154, _size152 ) = iprot.readMapBegin()
          for _i156 in xrange(_size152):
            _key157 = iprot.readString();
            _val158 = koverse.thriftgen.ttypes.TConfigValue()
            _val158.read(iprot)
            self.config[_key157] = _val158
          iprot.readMapEnd()
        else:
          iprot.skip(ftype)
      else:
        iprot.skip(ftype)
      iprot.readFieldEnd()
    iprot.readStructEnd()

  def write(self, oprot):
    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
      return
    oprot.writeStructBegin('TExportTransformConfiguration')
    if self.typeId is not None:
      oprot.writeFieldBegin('typeId', TType.STRING, 1)
      oprot.writeString(self.typeId)
      oprot.writeFieldEnd()
    if self.implementationClassName is not None:
      oprot.writeFieldBegin('implementationClassName', TType.STRING, 2)
      oprot.writeString(self.implementationClassName)
      oprot.writeFieldEnd()
    if self.config is not None:
      oprot.writeFieldBegin('config', TType.MAP, 3)
      oprot.writeMapBegin(TType.STRING, TType.STRUCT, len(self.config))
      for kiter159,viter160 in self.config.items():
        oprot.writeString(kiter159)
        viter160.write(oprot)
      oprot.writeMapEnd()
      oprot.writeFieldEnd()
    oprot.writeFieldStop()
    oprot.writeStructEnd()

  def validate(self):
    return


  def __repr__(self):
    L = ['%s=%r' % (key, value)
      for key, value in self.__dict__.iteritems()]
    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 TSink:
  """
  Attributes:
   - id
   - name
   - type
   - parameters
   - disabled
  """

  thrift_spec = (
    None, # 0
    (1, TType.I64, 'id', None, None, ), # 1
    (2, TType.STRING, 'name', None, None, ), # 2
    (3, TType.STRING, 'type', None, None, ), # 3
    (4, TType.MAP, 'parameters', (TType.STRING,None,TType.STRING,None), None, ), # 4
    (5, TType.BOOL, 'disabled', None, None, ), # 5
  )

  def __init__(self, id=None, name=None, type=None, parameters=None, disabled=None,):
    self.id = id
    self.name = name
    self.type = type
    self.parameters = parameters
    self.disabled = disabled

  def read(self, iprot):
    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
      fastbinary.decode_binary(self, iprot.trans, (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.name = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 3:
        if ftype == TType.STRING:
          self.type = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 4:
        if ftype == TType.MAP:
          self.parameters = {}
          (_ktype162, _vtype163, _size161 ) = iprot.readMapBegin()
          for _i165 in xrange(_size161):
            _key166 = iprot.readString();
            _val167 = iprot.readString();
            self.parameters[_key166] = _val167
          iprot.readMapEnd()
        else:
          iprot.skip(ftype)
      elif fid == 5:
        if ftype == TType.BOOL:
          self.disabled = iprot.readBool();
        else:
          iprot.skip(ftype)
      else:
        iprot.skip(ftype)
      iprot.readFieldEnd()
    iprot.readStructEnd()

  def write(self, oprot):
    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
      return
    oprot.writeStructBegin('TSink')
    if self.id is not None:
      oprot.writeFieldBegin('id', TType.I64, 1)
      oprot.writeI64(self.id)
      oprot.writeFieldEnd()
    if self.name is not None:
      oprot.writeFieldBegin('name', TType.STRING, 2)
      oprot.writeString(self.name)
      oprot.writeFieldEnd()
    if self.type is not None:
      oprot.writeFieldBegin('type', TType.STRING, 3)
      oprot.writeString(self.type)
      oprot.writeFieldEnd()
    if self.parameters is not None:
      oprot.writeFieldBegin('parameters', TType.MAP, 4)
      oprot.writeMapBegin(TType.STRING, TType.STRING, len(self.parameters))
      for kiter168,viter169 in self.parameters.items():
        oprot.writeString(kiter168)
        oprot.writeString(viter169)
      oprot.writeMapEnd()
      oprot.writeFieldEnd()
    if self.disabled is not None:
      oprot.writeFieldBegin('disabled', TType.BOOL, 5)
      oprot.writeBool(self.disabled)
      oprot.writeFieldEnd()
    oprot.writeFieldStop()
    oprot.writeStructEnd()

  def validate(self):
    return


  def __repr__(self):
    L = ['%s=%r' % (key, value)
      for key, value in self.__dict__.iteritems()]
    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 TSinkTypeDescription:
  """
  Attributes:
   - id
   - name
   - executionMethod
   - implementationClassName
   - sinkTypeId
   - sinkParameters
   - jobParameters
   - addOnId
   - disabled
   - version
  """

  thrift_spec = (
    None, # 0
    (1, TType.I64, 'id', None, None, ), # 1
    (2, TType.STRING, 'name', None, None, ), # 2
    (3, TType.I32, 'executionMethod', None, None, ), # 3
    (4, TType.STRING, 'implementationClassName', None, None, ), # 4
    (5, TType.STRING, 'sinkTypeId', None, None, ), # 5
    (6, TType.LIST, 'sinkParameters', (TType.STRUCT,(koverse.thriftgen.ttypes.TParameter, koverse.thriftgen.ttypes.TParameter.thrift_spec)), None, ), # 6
    (7, TType.LIST, 'jobParameters', (TType.STRUCT,(koverse.thriftgen.ttypes.TParameter, koverse.thriftgen.ttypes.TParameter.thrift_spec)), None, ), # 7
    (8, TType.I64, 'addOnId', None, None, ), # 8
    (9, TType.BOOL, 'disabled', None, None, ), # 9
    (10, TType.STRING, 'version', None, None, ), # 10
  )

  def __init__(self, id=None, name=None, executionMethod=None, implementationClassName=None, sinkTypeId=None, sinkParameters=None, jobParameters=None, addOnId=None, disabled=None, version=None,):
    self.id = id
    self.name = name
    self.executionMethod = executionMethod
    self.implementationClassName = implementationClassName
    self.sinkTypeId = sinkTypeId
    self.sinkParameters = sinkParameters
    self.jobParameters = jobParameters
    self.addOnId = addOnId
    self.disabled = disabled
    self.version = version

  def read(self, iprot):
    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
      fastbinary.decode_binary(self, iprot.trans, (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.name = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 3:
        if ftype == TType.I32:
          self.executionMethod = iprot.readI32();
        else:
          iprot.skip(ftype)
      elif fid == 4:
        if ftype == TType.STRING:
          self.implementationClassName = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 5:
        if ftype == TType.STRING:
          self.sinkTypeId = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 6:
        if ftype == TType.LIST:
          self.sinkParameters = []
          (_etype173, _size170) = iprot.readListBegin()
          for _i174 in xrange(_size170):
            _elem175 = koverse.thriftgen.ttypes.TParameter()
            _elem175.read(iprot)
            self.sinkParameters.append(_elem175)
          iprot.readListEnd()
        else:
          iprot.skip(ftype)
      elif fid == 7:
        if ftype == TType.LIST:
          self.jobParameters = []
          (_etype179, _size176) = iprot.readListBegin()
          for _i180 in xrange(_size176):
            _elem181 = koverse.thriftgen.ttypes.TParameter()
            _elem181.read(iprot)
            self.jobParameters.append(_elem181)
          iprot.readListEnd()
        else:
          iprot.skip(ftype)
      elif fid == 8:
        if ftype == TType.I64:
          self.addOnId = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 9:
        if ftype == TType.BOOL:
          self.disabled = iprot.readBool();
        else:
          iprot.skip(ftype)
      elif fid == 10:
        if ftype == TType.STRING:
          self.version = iprot.readString();
        else:
          iprot.skip(ftype)
      else:
        iprot.skip(ftype)
      iprot.readFieldEnd()
    iprot.readStructEnd()

  def write(self, oprot):
    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
      return
    oprot.writeStructBegin('TSinkTypeDescription')
    if self.id is not None:
      oprot.writeFieldBegin('id', TType.I64, 1)
      oprot.writeI64(self.id)
      oprot.writeFieldEnd()
    if self.name is not None:
      oprot.writeFieldBegin('name', TType.STRING, 2)
      oprot.writeString(self.name)
      oprot.writeFieldEnd()
    if self.executionMethod is not None:
      oprot.writeFieldBegin('executionMethod', TType.I32, 3)
      oprot.writeI32(self.executionMethod)
      oprot.writeFieldEnd()
    if self.implementationClassName is not None:
      oprot.writeFieldBegin('implementationClassName', TType.STRING, 4)
      oprot.writeString(self.implementationClassName)
      oprot.writeFieldEnd()
    if self.sinkTypeId is not None:
      oprot.writeFieldBegin('sinkTypeId', TType.STRING, 5)
      oprot.writeString(self.sinkTypeId)
      oprot.writeFieldEnd()
    if self.sinkParameters is not None:
      oprot.writeFieldBegin('sinkParameters', TType.LIST, 6)
      oprot.writeListBegin(TType.STRUCT, len(self.sinkParameters))
      for iter182 in self.sinkParameters:
        iter182.write(oprot)
      oprot.writeListEnd()
      oprot.writeFieldEnd()
    if self.jobParameters is not None:
      oprot.writeFieldBegin('jobParameters', TType.LIST, 7)
      oprot.writeListBegin(TType.STRUCT, len(self.jobParameters))
      for iter183 in self.jobParameters:
        iter183.write(oprot)
      oprot.writeListEnd()
      oprot.writeFieldEnd()
    if self.addOnId is not None:
      oprot.writeFieldBegin('addOnId', TType.I64, 8)
      oprot.writeI64(self.addOnId)
      oprot.writeFieldEnd()
    if self.disabled is not None:
      oprot.writeFieldBegin('disabled', TType.BOOL, 9)
      oprot.writeBool(self.disabled)
      oprot.writeFieldEnd()
    if self.version is not None:
      oprot.writeFieldBegin('version', TType.STRING, 10)
      oprot.writeString(self.version)
      oprot.writeFieldEnd()
    oprot.writeFieldStop()
    oprot.writeStructEnd()

  def validate(self):
    return


  def __repr__(self):
    L = ['%s=%r' % (key, value)
      for key, value in self.__dict__.iteritems()]
    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 TExportJobStatus:
  """
  Attributes:
   - exportJobStatusId
   - date
   - recordCount
  """

  thrift_spec = (
    None, # 0
    (1, TType.I64, 'exportJobStatusId', None, None, ), # 1
    (2, TType.I64, 'date', None, None, ), # 2
    (3, TType.I64, 'recordCount', None, None, ), # 3
  )

  def __init__(self, exportJobStatusId=None, date=None, recordCount=None,):
    self.exportJobStatusId = exportJobStatusId
    self.date = date
    self.recordCount = recordCount

  def read(self, iprot):
    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
      fastbinary.decode_binary(self, iprot.trans, (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.exportJobStatusId = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 2:
        if ftype == TType.I64:
          self.date = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 3:
        if ftype == TType.I64:
          self.recordCount = iprot.readI64();
        else:
          iprot.skip(ftype)
      else:
        iprot.skip(ftype)
      iprot.readFieldEnd()
    iprot.readStructEnd()

  def write(self, oprot):
    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
      return
    oprot.writeStructBegin('TExportJobStatus')
    if self.exportJobStatusId is not None:
      oprot.writeFieldBegin('exportJobStatusId', TType.I64, 1)
      oprot.writeI64(self.exportJobStatusId)
      oprot.writeFieldEnd()
    if self.date is not None:
      oprot.writeFieldBegin('date', TType.I64, 2)
      oprot.writeI64(self.date)
      oprot.writeFieldEnd()
    if self.recordCount is not None:
      oprot.writeFieldBegin('recordCount', TType.I64, 3)
      oprot.writeI64(self.recordCount)
      oprot.writeFieldEnd()
    oprot.writeFieldStop()
    oprot.writeStructEnd()

  def validate(self):
    return


  def __repr__(self):
    L = ['%s=%r' % (key, value)
      for key, value in self.__dict__.iteritems()]
    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 TExportJob:
  """
  Attributes:
   - jobAbstract
   - hadoopName
   - sinkId
   - sourceCollectionId
   - parameters
   - className
   - timeField
   - timeFormat
   - recordCount
   - statuses
   - transforms
  """

  thrift_spec = (
    None, # 0
    (1, TType.STRUCT, 'jobAbstract', (TJobAbstract, TJobAbstract.thrift_spec), None, ), # 1
    (2, TType.STRING, 'hadoopName', None, None, ), # 2
    (3, TType.I64, 'sinkId', None, None, ), # 3
    (4, TType.STRING, 'sourceCollectionId', None, None, ), # 4
    (5, TType.MAP, 'parameters', (TType.STRING,None,TType.STRING,None), None, ), # 5
    (6, TType.STRING, 'className', None, None, ), # 6
    (7, TType.STRING, 'timeField', None, None, ), # 7
    (8, TType.STRING, 'timeFormat', None, None, ), # 8
    (9, TType.I64, 'recordCount', None, None, ), # 9
    (10, TType.LIST, 'statuses', (TType.STRUCT,(TExportJobStatus, TExportJobStatus.thrift_spec)), None, ), # 10
    (11, TType.LIST, 'transforms', (TType.STRUCT,(TExportTransformConfiguration, TExportTransformConfiguration.thrift_spec)), None, ), # 11
  )

  def __init__(self, jobAbstract=None, hadoopName=None, sinkId=None, sourceCollectionId=None, parameters=None, className=None, timeField=None, timeFormat=None, recordCount=None, statuses=None, transforms=None,):
    self.jobAbstract = jobAbstract
    self.hadoopName = hadoopName
    self.sinkId = sinkId
    self.sourceCollectionId = sourceCollectionId
    self.parameters = parameters
    self.className = className
    self.timeField = timeField
    self.timeFormat = timeFormat
    self.recordCount = recordCount
    self.statuses = statuses
    self.transforms = transforms

  def read(self, iprot):
    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
      fastbinary.decode_binary(self, iprot.trans, (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.jobAbstract = TJobAbstract()
          self.jobAbstract.read(iprot)
        else:
          iprot.skip(ftype)
      elif fid == 2:
        if ftype == TType.STRING:
          self.hadoopName = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 3:
        if ftype == TType.I64:
          self.sinkId = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 4:
        if ftype == TType.STRING:
          self.sourceCollectionId = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 5:
        if ftype == TType.MAP:
          self.parameters = {}
          (_ktype185, _vtype186, _size184 ) = iprot.readMapBegin()
          for _i188 in xrange(_size184):
            _key189 = iprot.readString();
            _val190 = iprot.readString();
            self.parameters[_key189] = _val190
          iprot.readMapEnd()
        else:
          iprot.skip(ftype)
      elif fid == 6:
        if ftype == TType.STRING:
          self.className = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 7:
        if ftype == TType.STRING:
          self.timeField = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 8:
        if ftype == TType.STRING:
          self.timeFormat = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 9:
        if ftype == TType.I64:
          self.recordCount = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 10:
        if ftype == TType.LIST:
          self.statuses = []
          (_etype194, _size191) = iprot.readListBegin()
          for _i195 in xrange(_size191):
            _elem196 = TExportJobStatus()
            _elem196.read(iprot)
            self.statuses.append(_elem196)
          iprot.readListEnd()
        else:
          iprot.skip(ftype)
      elif fid == 11:
        if ftype == TType.LIST:
          self.transforms = []
          (_etype200, _size197) = iprot.readListBegin()
          for _i201 in xrange(_size197):
            _elem202 = TExportTransformConfiguration()
            _elem202.read(iprot)
            self.transforms.append(_elem202)
          iprot.readListEnd()
        else:
          iprot.skip(ftype)
      else:
        iprot.skip(ftype)
      iprot.readFieldEnd()
    iprot.readStructEnd()

  def write(self, oprot):
    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
      return
    oprot.writeStructBegin('TExportJob')
    if self.jobAbstract is not None:
      oprot.writeFieldBegin('jobAbstract', TType.STRUCT, 1)
      self.jobAbstract.write(oprot)
      oprot.writeFieldEnd()
    if self.hadoopName is not None:
      oprot.writeFieldBegin('hadoopName', TType.STRING, 2)
      oprot.writeString(self.hadoopName)
      oprot.writeFieldEnd()
    if self.sinkId is not None:
      oprot.writeFieldBegin('sinkId', TType.I64, 3)
      oprot.writeI64(self.sinkId)
      oprot.writeFieldEnd()
    if self.sourceCollectionId is not None:
      oprot.writeFieldBegin('sourceCollectionId', TType.STRING, 4)
      oprot.writeString(self.sourceCollectionId)
      oprot.writeFieldEnd()
    if self.parameters is not None:
      oprot.writeFieldBegin('parameters', TType.MAP, 5)
      oprot.writeMapBegin(TType.STRING, TType.STRING, len(self.parameters))
      for kiter203,viter204 in self.parameters.items():
        oprot.writeString(kiter203)
        oprot.writeString(viter204)
      oprot.writeMapEnd()
      oprot.writeFieldEnd()
    if self.className is not None:
      oprot.writeFieldBegin('className', TType.STRING, 6)
      oprot.writeString(self.className)
      oprot.writeFieldEnd()
    if self.timeField is not None:
      oprot.writeFieldBegin('timeField', TType.STRING, 7)
      oprot.writeString(self.timeField)
      oprot.writeFieldEnd()
    if self.timeFormat is not None:
      oprot.writeFieldBegin('timeFormat', TType.STRING, 8)
      oprot.writeString(self.timeFormat)
      oprot.writeFieldEnd()
    if self.recordCount is not None:
      oprot.writeFieldBegin('recordCount', TType.I64, 9)
      oprot.writeI64(self.recordCount)
      oprot.writeFieldEnd()
    if self.statuses is not None:
      oprot.writeFieldBegin('statuses', TType.LIST, 10)
      oprot.writeListBegin(TType.STRUCT, len(self.statuses))
      for iter205 in self.statuses:
        iter205.write(oprot)
      oprot.writeListEnd()
      oprot.writeFieldEnd()
    if self.transforms is not None:
      oprot.writeFieldBegin('transforms', TType.LIST, 11)
      oprot.writeListBegin(TType.STRUCT, len(self.transforms))
      for iter206 in self.transforms:
        iter206.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__.iteritems()]
    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 TExportFileFormatDescription:
  """
  Attributes:
   - id
   - name
   - implementationClassName
   - typeId
   - description
   - parameters
   - addOnId
   - disabled
   - version
  """

  thrift_spec = (
    None, # 0
    (1, TType.I64, 'id', None, None, ), # 1
    (2, TType.STRING, 'name', None, None, ), # 2
    (3, TType.STRING, 'implementationClassName', None, None, ), # 3
    (4, TType.STRING, 'typeId', None, None, ), # 4
    (5, TType.STRING, 'description', None, None, ), # 5
    (6, TType.LIST, 'parameters', (TType.STRUCT,(koverse.thriftgen.ttypes.TParameter, koverse.thriftgen.ttypes.TParameter.thrift_spec)), None, ), # 6
    (7, TType.I64, 'addOnId', None, None, ), # 7
    (8, TType.BOOL, 'disabled', None, None, ), # 8
    (9, TType.STRING, 'version', None, None, ), # 9
  )

  def __init__(self, id=None, name=None, implementationClassName=None, typeId=None, description=None, parameters=None, addOnId=None, disabled=None, version=None,):
    self.id = id
    self.name = name
    self.implementationClassName = implementationClassName
    self.typeId = typeId
    self.description = description
    self.parameters = parameters
    self.addOnId = addOnId
    self.disabled = disabled
    self.version = version

  def read(self, iprot):
    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
      fastbinary.decode_binary(self, iprot.trans, (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.name = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 3:
        if ftype == TType.STRING:
          self.implementationClassName = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 4:
        if ftype == TType.STRING:
          self.typeId = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 5:
        if ftype == TType.STRING:
          self.description = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 6:
        if ftype == TType.LIST:
          self.parameters = []
          (_etype210, _size207) = iprot.readListBegin()
          for _i211 in xrange(_size207):
            _elem212 = koverse.thriftgen.ttypes.TParameter()
            _elem212.read(iprot)
            self.parameters.append(_elem212)
          iprot.readListEnd()
        else:
          iprot.skip(ftype)
      elif fid == 7:
        if ftype == TType.I64:
          self.addOnId = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 8:
        if ftype == TType.BOOL:
          self.disabled = iprot.readBool();
        else:
          iprot.skip(ftype)
      elif fid == 9:
        if ftype == TType.STRING:
          self.version = iprot.readString();
        else:
          iprot.skip(ftype)
      else:
        iprot.skip(ftype)
      iprot.readFieldEnd()
    iprot.readStructEnd()

  def write(self, oprot):
    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
      return
    oprot.writeStructBegin('TExportFileFormatDescription')
    if self.id is not None:
      oprot.writeFieldBegin('id', TType.I64, 1)
      oprot.writeI64(self.id)
      oprot.writeFieldEnd()
    if self.name is not None:
      oprot.writeFieldBegin('name', TType.STRING, 2)
      oprot.writeString(self.name)
      oprot.writeFieldEnd()
    if self.implementationClassName is not None:
      oprot.writeFieldBegin('implementationClassName', TType.STRING, 3)
      oprot.writeString(self.implementationClassName)
      oprot.writeFieldEnd()
    if self.typeId is not None:
      oprot.writeFieldBegin('typeId', TType.STRING, 4)
      oprot.writeString(self.typeId)
      oprot.writeFieldEnd()
    if self.description is not None:
      oprot.writeFieldBegin('description', TType.STRING, 5)
      oprot.writeString(self.description)
      oprot.writeFieldEnd()
    if self.parameters is not None:
      oprot.writeFieldBegin('parameters', TType.LIST, 6)
      oprot.writeListBegin(TType.STRUCT, len(self.parameters))
      for iter213 in self.parameters:
        iter213.write(oprot)
      oprot.writeListEnd()
      oprot.writeFieldEnd()
    if self.addOnId is not None:
      oprot.writeFieldBegin('addOnId', TType.I64, 7)
      oprot.writeI64(self.addOnId)
      oprot.writeFieldEnd()
    if self.disabled is not None:
      oprot.writeFieldBegin('disabled', TType.BOOL, 8)
      oprot.writeBool(self.disabled)
      oprot.writeFieldEnd()
    if self.version is not None:
      oprot.writeFieldBegin('version', TType.STRING, 9)
      oprot.writeString(self.version)
      oprot.writeFieldEnd()
    oprot.writeFieldStop()
    oprot.writeStructEnd()

  def validate(self):
    return


  def __repr__(self):
    L = ['%s=%r' % (key, value)
      for key, value in self.__dict__.iteritems()]
    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 TRecordsProviderDescription:
  """
  Attributes:
   - id
   - name
   - implementationClassName
   - typeId
   - description
   - parameters
   - addOnId
   - disabled
   - version
   - priority
   - mimes
  """

  thrift_spec = (
    None, # 0
    (1, TType.I64, 'id', None, None, ), # 1
    (2, TType.STRING, 'name', None, None, ), # 2
    (3, TType.STRING, 'implementationClassName', None, None, ), # 3
    (4, TType.STRING, 'typeId', None, None, ), # 4
    (5, TType.STRING, 'description', None, None, ), # 5
    (6, TType.LIST, 'parameters', (TType.STRUCT,(koverse.thriftgen.ttypes.TParameter, koverse.thriftgen.ttypes.TParameter.thrift_spec)), None, ), # 6
    (7, TType.I64, 'addOnId', None, None, ), # 7
    (8, TType.BOOL, 'disabled', None, None, ), # 8
    (9, TType.STRING, 'version', None, None, ), # 9
    (10, TType.I32, 'priority', None, None, ), # 10
    (11, TType.SET, 'mimes', (TType.STRING,None), None, ), # 11
  )

  def __init__(self, id=None, name=None, implementationClassName=None, typeId=None, description=None, parameters=None, addOnId=None, disabled=None, version=None, priority=None, mimes=None,):
    self.id = id
    self.name = name
    self.implementationClassName = implementationClassName
    self.typeId = typeId
    self.description = description
    self.parameters = parameters
    self.addOnId = addOnId
    self.disabled = disabled
    self.version = version
    self.priority = priority
    self.mimes = mimes

  def read(self, iprot):
    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
      fastbinary.decode_binary(self, iprot.trans, (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.name = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 3:
        if ftype == TType.STRING:
          self.implementationClassName = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 4:
        if ftype == TType.STRING:
          self.typeId = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 5:
        if ftype == TType.STRING:
          self.description = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 6:
        if ftype == TType.LIST:
          self.parameters = []
          (_etype217, _size214) = iprot.readListBegin()
          for _i218 in xrange(_size214):
            _elem219 = koverse.thriftgen.ttypes.TParameter()
            _elem219.read(iprot)
            self.parameters.append(_elem219)
          iprot.readListEnd()
        else:
          iprot.skip(ftype)
      elif fid == 7:
        if ftype == TType.I64:
          self.addOnId = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 8:
        if ftype == TType.BOOL:
          self.disabled = iprot.readBool();
        else:
          iprot.skip(ftype)
      elif fid == 9:
        if ftype == TType.STRING:
          self.version = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 10:
        if ftype == TType.I32:
          self.priority = iprot.readI32();
        else:
          iprot.skip(ftype)
      elif fid == 11:
        if ftype == TType.SET:
          self.mimes = set()
          (_etype223, _size220) = iprot.readSetBegin()
          for _i224 in xrange(_size220):
            _elem225 = iprot.readString();
            self.mimes.add(_elem225)
          iprot.readSetEnd()
        else:
          iprot.skip(ftype)
      else:
        iprot.skip(ftype)
      iprot.readFieldEnd()
    iprot.readStructEnd()

  def write(self, oprot):
    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
      return
    oprot.writeStructBegin('TRecordsProviderDescription')
    if self.id is not None:
      oprot.writeFieldBegin('id', TType.I64, 1)
      oprot.writeI64(self.id)
      oprot.writeFieldEnd()
    if self.name is not None:
      oprot.writeFieldBegin('name', TType.STRING, 2)
      oprot.writeString(self.name)
      oprot.writeFieldEnd()
    if self.implementationClassName is not None:
      oprot.writeFieldBegin('implementationClassName', TType.STRING, 3)
      oprot.writeString(self.implementationClassName)
      oprot.writeFieldEnd()
    if self.typeId is not None:
      oprot.writeFieldBegin('typeId', TType.STRING, 4)
      oprot.writeString(self.typeId)
      oprot.writeFieldEnd()
    if self.description is not None:
      oprot.writeFieldBegin('description', TType.STRING, 5)
      oprot.writeString(self.description)
      oprot.writeFieldEnd()
    if self.parameters is not None:
      oprot.writeFieldBegin('parameters', TType.LIST, 6)
      oprot.writeListBegin(TType.STRUCT, len(self.parameters))
      for iter226 in self.parameters:
        iter226.write(oprot)
      oprot.writeListEnd()
      oprot.writeFieldEnd()
    if self.addOnId is not None:
      oprot.writeFieldBegin('addOnId', TType.I64, 7)
      oprot.writeI64(self.addOnId)
      oprot.writeFieldEnd()
    if self.disabled is not None:
      oprot.writeFieldBegin('disabled', TType.BOOL, 8)
      oprot.writeBool(self.disabled)
      oprot.writeFieldEnd()
    if self.version is not None:
      oprot.writeFieldBegin('version', TType.STRING, 9)
      oprot.writeString(self.version)
      oprot.writeFieldEnd()
    if self.priority is not None:
      oprot.writeFieldBegin('priority', TType.I32, 10)
      oprot.writeI32(self.priority)
      oprot.writeFieldEnd()
    if self.mimes is not None:
      oprot.writeFieldBegin('mimes', TType.SET, 11)
      oprot.writeSetBegin(TType.STRING, len(self.mimes))
      for iter227 in self.mimes:
        oprot.writeString(iter227)
      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__.iteritems()]
    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 TDataCollectionBatchJob:
  """
  Attributes:
   - batchJob
   - collectionId
   - hadoopJobName
   - mapProgress
   - reduceProgress
  """

  thrift_spec = (
    None, # 0
    (1, TType.STRUCT, 'batchJob', (TBatchJob, TBatchJob.thrift_spec), None, ), # 1
    (2, TType.STRING, 'collectionId', None, None, ), # 2
    (3, TType.STRING, 'hadoopJobName', None, None, ), # 3
    (4, TType.DOUBLE, 'mapProgress', None, None, ), # 4
    (5, TType.DOUBLE, 'reduceProgress', None, None, ), # 5
  )

  def __init__(self, batchJob=None, collectionId=None, hadoopJobName=None, mapProgress=None, reduceProgress=None,):
    self.batchJob = batchJob
    self.collectionId = collectionId
    self.hadoopJobName = hadoopJobName
    self.mapProgress = mapProgress
    self.reduceProgress = reduceProgress

  def read(self, iprot):
    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
      fastbinary.decode_binary(self, iprot.trans, (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.batchJob = TBatchJob()
          self.batchJob.read(iprot)
        else:
          iprot.skip(ftype)
      elif fid == 2:
        if ftype == TType.STRING:
          self.collectionId = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 3:
        if ftype == TType.STRING:
          self.hadoopJobName = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 4:
        if ftype == TType.DOUBLE:
          self.mapProgress = iprot.readDouble();
        else:
          iprot.skip(ftype)
      elif fid == 5:
        if ftype == TType.DOUBLE:
          self.reduceProgress = iprot.readDouble();
        else:
          iprot.skip(ftype)
      else:
        iprot.skip(ftype)
      iprot.readFieldEnd()
    iprot.readStructEnd()

  def write(self, oprot):
    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
      return
    oprot.writeStructBegin('TDataCollectionBatchJob')
    if self.batchJob is not None:
      oprot.writeFieldBegin('batchJob', TType.STRUCT, 1)
      self.batchJob.write(oprot)
      oprot.writeFieldEnd()
    if self.collectionId is not None:
      oprot.writeFieldBegin('collectionId', TType.STRING, 2)
      oprot.writeString(self.collectionId)
      oprot.writeFieldEnd()
    if self.hadoopJobName is not None:
      oprot.writeFieldBegin('hadoopJobName', TType.STRING, 3)
      oprot.writeString(self.hadoopJobName)
      oprot.writeFieldEnd()
    if self.mapProgress is not None:
      oprot.writeFieldBegin('mapProgress', TType.DOUBLE, 4)
      oprot.writeDouble(self.mapProgress)
      oprot.writeFieldEnd()
    if self.reduceProgress is not None:
      oprot.writeFieldBegin('reduceProgress', TType.DOUBLE, 5)
      oprot.writeDouble(self.reduceProgress)
      oprot.writeFieldEnd()
    oprot.writeFieldStop()
    oprot.writeStructEnd()

  def validate(self):
    return


  def __repr__(self):
    L = ['%s=%r' % (key, value)
      for key, value in self.__dict__.iteritems()]
    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 TDataFlowEdge:
  """
  Attributes:
   - objectId
   - key
   - sourceKey
   - targetKey
   - recordCount
   - progressPercent
   - type
   - descriptionTypeId
  """

  thrift_spec = (
    None, # 0
    (1, TType.I64, 'objectId', None, None, ), # 1
    (2, TType.STRING, 'key', None, None, ), # 2
    (3, TType.STRING, 'sourceKey', None, None, ), # 3
    (4, TType.STRING, 'targetKey', None, None, ), # 4
    (5, TType.I64, 'recordCount', None, None, ), # 5
    (6, TType.DOUBLE, 'progressPercent', None, None, ), # 6
    (7, TType.STRING, 'type', None, None, ), # 7
    (8, TType.STRING, 'descriptionTypeId', None, None, ), # 8
  )

  def __init__(self, objectId=None, key=None, sourceKey=None, targetKey=None, recordCount=None, progressPercent=None, type=None, descriptionTypeId=None,):
    self.objectId = objectId
    self.key = key
    self.sourceKey = sourceKey
    self.targetKey = targetKey
    self.recordCount = recordCount
    self.progressPercent = progressPercent
    self.type = type
    self.descriptionTypeId = descriptionTypeId

  def read(self, iprot):
    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
      fastbinary.decode_binary(self, iprot.trans, (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.objectId = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 2:
        if ftype == TType.STRING:
          self.key = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 3:
        if ftype == TType.STRING:
          self.sourceKey = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 4:
        if ftype == TType.STRING:
          self.targetKey = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 5:
        if ftype == TType.I64:
          self.recordCount = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 6:
        if ftype == TType.DOUBLE:
          self.progressPercent = iprot.readDouble();
        else:
          iprot.skip(ftype)
      elif fid == 7:
        if ftype == TType.STRING:
          self.type = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 8:
        if ftype == TType.STRING:
          self.descriptionTypeId = iprot.readString();
        else:
          iprot.skip(ftype)
      else:
        iprot.skip(ftype)
      iprot.readFieldEnd()
    iprot.readStructEnd()

  def write(self, oprot):
    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
      return
    oprot.writeStructBegin('TDataFlowEdge')
    if self.objectId is not None:
      oprot.writeFieldBegin('objectId', TType.I64, 1)
      oprot.writeI64(self.objectId)
      oprot.writeFieldEnd()
    if self.key is not None:
      oprot.writeFieldBegin('key', TType.STRING, 2)
      oprot.writeString(self.key)
      oprot.writeFieldEnd()
    if self.sourceKey is not None:
      oprot.writeFieldBegin('sourceKey', TType.STRING, 3)
      oprot.writeString(self.sourceKey)
      oprot.writeFieldEnd()
    if self.targetKey is not None:
      oprot.writeFieldBegin('targetKey', TType.STRING, 4)
      oprot.writeString(self.targetKey)
      oprot.writeFieldEnd()
    if self.recordCount is not None:
      oprot.writeFieldBegin('recordCount', TType.I64, 5)
      oprot.writeI64(self.recordCount)
      oprot.writeFieldEnd()
    if self.progressPercent is not None:
      oprot.writeFieldBegin('progressPercent', TType.DOUBLE, 6)
      oprot.writeDouble(self.progressPercent)
      oprot.writeFieldEnd()
    if self.type is not None:
      oprot.writeFieldBegin('type', TType.STRING, 7)
      oprot.writeString(self.type)
      oprot.writeFieldEnd()
    if self.descriptionTypeId is not None:
      oprot.writeFieldBegin('descriptionTypeId', TType.STRING, 8)
      oprot.writeString(self.descriptionTypeId)
      oprot.writeFieldEnd()
    oprot.writeFieldStop()
    oprot.writeStructEnd()

  def validate(self):
    return


  def __repr__(self):
    L = ['%s=%r' % (key, value)
      for key, value in self.__dict__.iteritems()]
    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 TDataFlowNode:
  """
  Attributes:
   - nodeType
   - displayName
   - key
   - objectId
   - typeDescriptorId
   - scanProgress
   - recordCount
  """

  thrift_spec = (
    None, # 0
    (1, TType.STRING, 'nodeType', None, None, ), # 1
    (2, TType.STRING, 'displayName', None, None, ), # 2
    (3, TType.STRING, 'key', None, None, ), # 3
    (4, TType.STRING, 'objectId', None, None, ), # 4
    (5, TType.STRING, 'typeDescriptorId', None, None, ), # 5
    (6, TType.DOUBLE, 'scanProgress', None, None, ), # 6
    (7, TType.I64, 'recordCount', None, None, ), # 7
  )

  def __init__(self, nodeType=None, displayName=None, key=None, objectId=None, typeDescriptorId=None, scanProgress=None, recordCount=None,):
    self.nodeType = nodeType
    self.displayName = displayName
    self.key = key
    self.objectId = objectId
    self.typeDescriptorId = typeDescriptorId
    self.scanProgress = scanProgress
    self.recordCount = recordCount

  def read(self, iprot):
    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
      fastbinary.decode_binary(self, iprot.trans, (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.nodeType = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 2:
        if ftype == TType.STRING:
          self.displayName = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 3:
        if ftype == TType.STRING:
          self.key = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 4:
        if ftype == TType.STRING:
          self.objectId = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 5:
        if ftype == TType.STRING:
          self.typeDescriptorId = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 6:
        if ftype == TType.DOUBLE:
          self.scanProgress = iprot.readDouble();
        else:
          iprot.skip(ftype)
      elif fid == 7:
        if ftype == TType.I64:
          self.recordCount = iprot.readI64();
        else:
          iprot.skip(ftype)
      else:
        iprot.skip(ftype)
      iprot.readFieldEnd()
    iprot.readStructEnd()

  def write(self, oprot):
    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
      return
    oprot.writeStructBegin('TDataFlowNode')
    if self.nodeType is not None:
      oprot.writeFieldBegin('nodeType', TType.STRING, 1)
      oprot.writeString(self.nodeType)
      oprot.writeFieldEnd()
    if self.displayName is not None:
      oprot.writeFieldBegin('displayName', TType.STRING, 2)
      oprot.writeString(self.displayName)
      oprot.writeFieldEnd()
    if self.key is not None:
      oprot.writeFieldBegin('key', TType.STRING, 3)
      oprot.writeString(self.key)
      oprot.writeFieldEnd()
    if self.objectId is not None:
      oprot.writeFieldBegin('objectId', TType.STRING, 4)
      oprot.writeString(self.objectId)
      oprot.writeFieldEnd()
    if self.typeDescriptorId is not None:
      oprot.writeFieldBegin('typeDescriptorId', TType.STRING, 5)
      oprot.writeString(self.typeDescriptorId)
      oprot.writeFieldEnd()
    if self.scanProgress is not None:
      oprot.writeFieldBegin('scanProgress', TType.DOUBLE, 6)
      oprot.writeDouble(self.scanProgress)
      oprot.writeFieldEnd()
    if self.recordCount is not None:
      oprot.writeFieldBegin('recordCount', TType.I64, 7)
      oprot.writeI64(self.recordCount)
      oprot.writeFieldEnd()
    oprot.writeFieldStop()
    oprot.writeStructEnd()

  def validate(self):
    return


  def __repr__(self):
    L = ['%s=%r' % (key, value)
      for key, value in self.__dict__.iteritems()]
    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 TDataFlowGraph:
  """
  Attributes:
   - edges
   - nodes
  """

  thrift_spec = (
    None, # 0
    (1, TType.LIST, 'edges', (TType.STRUCT,(TDataFlowEdge, TDataFlowEdge.thrift_spec)), None, ), # 1
    (2, TType.LIST, 'nodes', (TType.STRUCT,(TDataFlowNode, TDataFlowNode.thrift_spec)), None, ), # 2
  )

  def __init__(self, edges=None, nodes=None,):
    self.edges = edges
    self.nodes = nodes

  def read(self, iprot):
    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
      fastbinary.decode_binary(self, iprot.trans, (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.edges = []
          (_etype231, _size228) = iprot.readListBegin()
          for _i232 in xrange(_size228):
            _elem233 = TDataFlowEdge()
            _elem233.read(iprot)
            self.edges.append(_elem233)
          iprot.readListEnd()
        else:
          iprot.skip(ftype)
      elif fid == 2:
        if ftype == TType.LIST:
          self.nodes = []
          (_etype237, _size234) = iprot.readListBegin()
          for _i238 in xrange(_size234):
            _elem239 = TDataFlowNode()
            _elem239.read(iprot)
            self.nodes.append(_elem239)
          iprot.readListEnd()
        else:
          iprot.skip(ftype)
      else:
        iprot.skip(ftype)
      iprot.readFieldEnd()
    iprot.readStructEnd()

  def write(self, oprot):
    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
      return
    oprot.writeStructBegin('TDataFlowGraph')
    if self.edges is not None:
      oprot.writeFieldBegin('edges', TType.LIST, 1)
      oprot.writeListBegin(TType.STRUCT, len(self.edges))
      for iter240 in self.edges:
        iter240.write(oprot)
      oprot.writeListEnd()
      oprot.writeFieldEnd()
    if self.nodes is not None:
      oprot.writeFieldBegin('nodes', TType.LIST, 2)
      oprot.writeListBegin(TType.STRUCT, len(self.nodes))
      for iter241 in self.nodes:
        iter241.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__.iteritems()]
    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 TKind:
  """
  Attributes:
   - name
   - percentCompleted
   - numTasks
   - pending
   - running
   - complete
   - killed
   - failed
  """

  thrift_spec = (
    None, # 0
    (1, TType.STRING, 'name', None, None, ), # 1
    (2, TType.STRING, 'percentCompleted', None, None, ), # 2
    (3, TType.I32, 'numTasks', None, None, ), # 3
    (4, TType.I32, 'pending', None, None, ), # 4
    (5, TType.I32, 'running', None, None, ), # 5
    (6, TType.I32, 'complete', None, None, ), # 6
    (7, TType.I32, 'killed', None, None, ), # 7
    (8, TType.STRING, 'failed', None, None, ), # 8
  )

  def __init__(self, name=None, percentCompleted=None, numTasks=None, pending=None, running=None, complete=None, killed=None, failed=None,):
    self.name = name
    self.percentCompleted = percentCompleted
    self.numTasks = numTasks
    self.pending = pending
    self.running = running
    self.complete = complete
    self.killed = killed
    self.failed = failed

  def read(self, iprot):
    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
      fastbinary.decode_binary(self, iprot.trans, (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();
        else:
          iprot.skip(ftype)
      elif fid == 2:
        if ftype == TType.STRING:
          self.percentCompleted = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 3:
        if ftype == TType.I32:
          self.numTasks = iprot.readI32();
        else:
          iprot.skip(ftype)
      elif fid == 4:
        if ftype == TType.I32:
          self.pending = iprot.readI32();
        else:
          iprot.skip(ftype)
      elif fid == 5:
        if ftype == TType.I32:
          self.running = iprot.readI32();
        else:
          iprot.skip(ftype)
      elif fid == 6:
        if ftype == TType.I32:
          self.complete = iprot.readI32();
        else:
          iprot.skip(ftype)
      elif fid == 7:
        if ftype == TType.I32:
          self.killed = iprot.readI32();
        else:
          iprot.skip(ftype)
      elif fid == 8:
        if ftype == TType.STRING:
          self.failed = iprot.readString();
        else:
          iprot.skip(ftype)
      else:
        iprot.skip(ftype)
      iprot.readFieldEnd()
    iprot.readStructEnd()

  def write(self, oprot):
    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
      return
    oprot.writeStructBegin('TKind')
    if self.name is not None:
      oprot.writeFieldBegin('name', TType.STRING, 1)
      oprot.writeString(self.name)
      oprot.writeFieldEnd()
    if self.percentCompleted is not None:
      oprot.writeFieldBegin('percentCompleted', TType.STRING, 2)
      oprot.writeString(self.percentCompleted)
      oprot.writeFieldEnd()
    if self.numTasks is not None:
      oprot.writeFieldBegin('numTasks', TType.I32, 3)
      oprot.writeI32(self.numTasks)
      oprot.writeFieldEnd()
    if self.pending is not None:
      oprot.writeFieldBegin('pending', TType.I32, 4)
      oprot.writeI32(self.pending)
      oprot.writeFieldEnd()
    if self.running is not None:
      oprot.writeFieldBegin('running', TType.I32, 5)
      oprot.writeI32(self.running)
      oprot.writeFieldEnd()
    if self.complete is not None:
      oprot.writeFieldBegin('complete', TType.I32, 6)
      oprot.writeI32(self.complete)
      oprot.writeFieldEnd()
    if self.killed is not None:
      oprot.writeFieldBegin('killed', TType.I32, 7)
      oprot.writeI32(self.killed)
      oprot.writeFieldEnd()
    if self.failed is not None:
      oprot.writeFieldBegin('failed', TType.STRING, 8)
      oprot.writeString(self.failed)
      oprot.writeFieldEnd()
    oprot.writeFieldStop()
    oprot.writeStructEnd()

  def validate(self):
    return


  def __repr__(self):
    L = ['%s=%r' % (key, value)
      for key, value in self.__dict__.iteritems()]
    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 TCounter:
  """
  Attributes:
   - name
   - mapp
   - reduce
   - total
  """

  thrift_spec = (
    None, # 0
    (1, TType.STRING, 'name', None, None, ), # 1
    (2, TType.I64, 'mapp', None, None, ), # 2
    (3, TType.I64, 'reduce', None, None, ), # 3
    (4, TType.I64, 'total', None, None, ), # 4
  )

  def __init__(self, name=None, mapp=None, reduce=None, total=None,):
    self.name = name
    self.mapp = mapp
    self.reduce = reduce
    self.total = total

  def read(self, iprot):
    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
      fastbinary.decode_binary(self, iprot.trans, (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();
        else:
          iprot.skip(ftype)
      elif fid == 2:
        if ftype == TType.I64:
          self.mapp = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 3:
        if ftype == TType.I64:
          self.reduce = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 4:
        if ftype == TType.I64:
          self.total = iprot.readI64();
        else:
          iprot.skip(ftype)
      else:
        iprot.skip(ftype)
      iprot.readFieldEnd()
    iprot.readStructEnd()

  def write(self, oprot):
    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
      return
    oprot.writeStructBegin('TCounter')
    if self.name is not None:
      oprot.writeFieldBegin('name', TType.STRING, 1)
      oprot.writeString(self.name)
      oprot.writeFieldEnd()
    if self.mapp is not None:
      oprot.writeFieldBegin('mapp', TType.I64, 2)
      oprot.writeI64(self.mapp)
      oprot.writeFieldEnd()
    if self.reduce is not None:
      oprot.writeFieldBegin('reduce', TType.I64, 3)
      oprot.writeI64(self.reduce)
      oprot.writeFieldEnd()
    if self.total is not None:
      oprot.writeFieldBegin('total', TType.I64, 4)
      oprot.writeI64(self.total)
      oprot.writeFieldEnd()
    oprot.writeFieldStop()
    oprot.writeStructEnd()

  def validate(self):
    return


  def __repr__(self):
    L = ['%s=%r' % (key, value)
      for key, value in self.__dict__.iteritems()]
    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 TTaskLog:
  """
  Attributes:
   - attemptId
   - stout
   - sterr
   - syslog
  """

  thrift_spec = (
    None, # 0
    (1, TType.STRING, 'attemptId', None, None, ), # 1
    (2, TType.STRING, 'stout', None, None, ), # 2
    (3, TType.STRING, 'sterr', None, None, ), # 3
    (4, TType.STRING, 'syslog', None, None, ), # 4
  )

  def __init__(self, attemptId=None, stout=None, sterr=None, syslog=None,):
    self.attemptId = attemptId
    self.stout = stout
    self.sterr = sterr
    self.syslog = syslog

  def read(self, iprot):
    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
      fastbinary.decode_binary(self, iprot.trans, (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.attemptId = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 2:
        if ftype == TType.STRING:
          self.stout = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 3:
        if ftype == TType.STRING:
          self.sterr = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 4:
        if ftype == TType.STRING:
          self.syslog = iprot.readString();
        else:
          iprot.skip(ftype)
      else:
        iprot.skip(ftype)
      iprot.readFieldEnd()
    iprot.readStructEnd()

  def write(self, oprot):
    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
      return
    oprot.writeStructBegin('TTaskLog')
    if self.attemptId is not None:
      oprot.writeFieldBegin('attemptId', TType.STRING, 1)
      oprot.writeString(self.attemptId)
      oprot.writeFieldEnd()
    if self.stout is not None:
      oprot.writeFieldBegin('stout', TType.STRING, 2)
      oprot.writeString(self.stout)
      oprot.writeFieldEnd()
    if self.sterr is not None:
      oprot.writeFieldBegin('sterr', TType.STRING, 3)
      oprot.writeString(self.sterr)
      oprot.writeFieldEnd()
    if self.syslog is not None:
      oprot.writeFieldBegin('syslog', TType.STRING, 4)
      oprot.writeString(self.syslog)
      oprot.writeFieldEnd()
    oprot.writeFieldStop()
    oprot.writeStructEnd()

  def validate(self):
    return


  def __repr__(self):
    L = ['%s=%r' % (key, value)
      for key, value in self.__dict__.iteritems()]
    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 TAttempt:
  """
  Attributes:
   - attemptId
   - machine
   - status
   - progress
   - startTime
   - finishTime
   - error
   - counters
   - actions
   - logUrl
   - taskLog
  """

  thrift_spec = (
    None, # 0
    (1, TType.STRING, 'attemptId', None, None, ), # 1
    (2, TType.STRING, 'machine', None, None, ), # 2
    (3, TType.STRING, 'status', None, None, ), # 3
    (4, TType.STRING, 'progress', None, None, ), # 4
    (5, TType.STRING, 'startTime', None, None, ), # 5
    (6, TType.STRING, 'finishTime', None, None, ), # 6
    (7, TType.STRING, 'error', None, None, ), # 7
    (8, TType.I32, 'counters', None, None, ), # 8
    (9, TType.STRING, 'actions', None, None, ), # 9
    (10, TType.STRING, 'logUrl', None, None, ), # 10
    (11, TType.STRUCT, 'taskLog', (TTaskLog, TTaskLog.thrift_spec), None, ), # 11
  )

  def __init__(self, attemptId=None, machine=None, status=None, progress=None, startTime=None, finishTime=None, error=None, counters=None, actions=None, logUrl=None, taskLog=None,):
    self.attemptId = attemptId
    self.machine = machine
    self.status = status
    self.progress = progress
    self.startTime = startTime
    self.finishTime = finishTime
    self.error = error
    self.counters = counters
    self.actions = actions
    self.logUrl = logUrl
    self.taskLog = taskLog

  def read(self, iprot):
    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
      fastbinary.decode_binary(self, iprot.trans, (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.attemptId = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 2:
        if ftype == TType.STRING:
          self.machine = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 3:
        if ftype == TType.STRING:
          self.status = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 4:
        if ftype == TType.STRING:
          self.progress = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 5:
        if ftype == TType.STRING:
          self.startTime = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 6:
        if ftype == TType.STRING:
          self.finishTime = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 7:
        if ftype == TType.STRING:
          self.error = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 8:
        if ftype == TType.I32:
          self.counters = iprot.readI32();
        else:
          iprot.skip(ftype)
      elif fid == 9:
        if ftype == TType.STRING:
          self.actions = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 10:
        if ftype == TType.STRING:
          self.logUrl = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 11:
        if ftype == TType.STRUCT:
          self.taskLog = TTaskLog()
          self.taskLog.read(iprot)
        else:
          iprot.skip(ftype)
      else:
        iprot.skip(ftype)
      iprot.readFieldEnd()
    iprot.readStructEnd()

  def write(self, oprot):
    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
      return
    oprot.writeStructBegin('TAttempt')
    if self.attemptId is not None:
      oprot.writeFieldBegin('attemptId', TType.STRING, 1)
      oprot.writeString(self.attemptId)
      oprot.writeFieldEnd()
    if self.machine is not None:
      oprot.writeFieldBegin('machine', TType.STRING, 2)
      oprot.writeString(self.machine)
      oprot.writeFieldEnd()
    if self.status is not None:
      oprot.writeFieldBegin('status', TType.STRING, 3)
      oprot.writeString(self.status)
      oprot.writeFieldEnd()
    if self.progress is not None:
      oprot.writeFieldBegin('progress', TType.STRING, 4)
      oprot.writeString(self.progress)
      oprot.writeFieldEnd()
    if self.startTime is not None:
      oprot.writeFieldBegin('startTime', TType.STRING, 5)
      oprot.writeString(self.startTime)
      oprot.writeFieldEnd()
    if self.finishTime is not None:
      oprot.writeFieldBegin('finishTime', TType.STRING, 6)
      oprot.writeString(self.finishTime)
      oprot.writeFieldEnd()
    if self.error is not None:
      oprot.writeFieldBegin('error', TType.STRING, 7)
      oprot.writeString(self.error)
      oprot.writeFieldEnd()
    if self.counters is not None:
      oprot.writeFieldBegin('counters', TType.I32, 8)
      oprot.writeI32(self.counters)
      oprot.writeFieldEnd()
    if self.actions is not None:
      oprot.writeFieldBegin('actions', TType.STRING, 9)
      oprot.writeString(self.actions)
      oprot.writeFieldEnd()
    if self.logUrl is not None:
      oprot.writeFieldBegin('logUrl', TType.STRING, 10)
      oprot.writeString(self.logUrl)
      oprot.writeFieldEnd()
    if self.taskLog is not None:
      oprot.writeFieldBegin('taskLog', TType.STRUCT, 11)
      self.taskLog.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__.iteritems()]
    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 TTaskDetails:
  """
  Attributes:
   - jobId
   - attempts
  """

  thrift_spec = (
    None, # 0
    (1, TType.STRING, 'jobId', None, None, ), # 1
    (2, TType.LIST, 'attempts', (TType.STRUCT,(TAttempt, TAttempt.thrift_spec)), None, ), # 2
  )

  def __init__(self, jobId=None, attempts=None,):
    self.jobId = jobId
    self.attempts = attempts

  def read(self, iprot):
    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
      fastbinary.decode_binary(self, iprot.trans, (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.jobId = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 2:
        if ftype == TType.LIST:
          self.attempts = []
          (_etype245, _size242) = iprot.readListBegin()
          for _i246 in xrange(_size242):
            _elem247 = TAttempt()
            _elem247.read(iprot)
            self.attempts.append(_elem247)
          iprot.readListEnd()
        else:
          iprot.skip(ftype)
      else:
        iprot.skip(ftype)
      iprot.readFieldEnd()
    iprot.readStructEnd()

  def write(self, oprot):
    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
      return
    oprot.writeStructBegin('TTaskDetails')
    if self.jobId is not None:
      oprot.writeFieldBegin('jobId', TType.STRING, 1)
      oprot.writeString(self.jobId)
      oprot.writeFieldEnd()
    if self.attempts is not None:
      oprot.writeFieldBegin('attempts', TType.LIST, 2)
      oprot.writeListBegin(TType.STRUCT, len(self.attempts))
      for iter248 in self.attempts:
        iter248.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__.iteritems()]
    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 TTask:
  """
  Attributes:
   - taskId
   - complete
   - status
   - startTime
   - finishTime
   - errors
   - counters
   - taskDetails
  """

  thrift_spec = (
    None, # 0
    (1, TType.STRING, 'taskId', None, None, ), # 1
    (2, TType.STRING, 'complete', None, None, ), # 2
    (3, TType.STRING, 'status', None, None, ), # 3
    (4, TType.STRING, 'startTime', None, None, ), # 4
    (5, TType.STRING, 'finishTime', None, None, ), # 5
    (6, TType.STRING, 'errors', None, None, ), # 6
    (7, TType.I32, 'counters', None, None, ), # 7
    (8, TType.STRUCT, 'taskDetails', (TTaskDetails, TTaskDetails.thrift_spec), None, ), # 8
  )

  def __init__(self, taskId=None, complete=None, status=None, startTime=None, finishTime=None, errors=None, counters=None, taskDetails=None,):
    self.taskId = taskId
    self.complete = complete
    self.status = status
    self.startTime = startTime
    self.finishTime = finishTime
    self.errors = errors
    self.counters = counters
    self.taskDetails = taskDetails

  def read(self, iprot):
    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
      fastbinary.decode_binary(self, iprot.trans, (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.taskId = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 2:
        if ftype == TType.STRING:
          self.complete = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 3:
        if ftype == TType.STRING:
          self.status = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 4:
        if ftype == TType.STRING:
          self.startTime = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 5:
        if ftype == TType.STRING:
          self.finishTime = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 6:
        if ftype == TType.STRING:
          self.errors = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 7:
        if ftype == TType.I32:
          self.counters = iprot.readI32();
        else:
          iprot.skip(ftype)
      elif fid == 8:
        if ftype == TType.STRUCT:
          self.taskDetails = TTaskDetails()
          self.taskDetails.read(iprot)
        else:
          iprot.skip(ftype)
      else:
        iprot.skip(ftype)
      iprot.readFieldEnd()
    iprot.readStructEnd()

  def write(self, oprot):
    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
      return
    oprot.writeStructBegin('TTask')
    if self.taskId is not None:
      oprot.writeFieldBegin('taskId', TType.STRING, 1)
      oprot.writeString(self.taskId)
      oprot.writeFieldEnd()
    if self.complete is not None:
      oprot.writeFieldBegin('complete', TType.STRING, 2)
      oprot.writeString(self.complete)
      oprot.writeFieldEnd()
    if self.status is not None:
      oprot.writeFieldBegin('status', TType.STRING, 3)
      oprot.writeString(self.status)
      oprot.writeFieldEnd()
    if self.startTime is not None:
      oprot.writeFieldBegin('startTime', TType.STRING, 4)
      oprot.writeString(self.startTime)
      oprot.writeFieldEnd()
    if self.finishTime is not None:
      oprot.writeFieldBegin('finishTime', TType.STRING, 5)
      oprot.writeString(self.finishTime)
      oprot.writeFieldEnd()
    if self.errors is not None:
      oprot.writeFieldBegin('errors', TType.STRING, 6)
      oprot.writeString(self.errors)
      oprot.writeFieldEnd()
    if self.counters is not None:
      oprot.writeFieldBegin('counters', TType.I32, 7)
      oprot.writeI32(self.counters)
      oprot.writeFieldEnd()
    if self.taskDetails is not None:
      oprot.writeFieldBegin('taskDetails', TType.STRUCT, 8)
      self.taskDetails.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__.iteritems()]
    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 TJobTasks:
  """
  Attributes:
   - jobId
   - tasks
  """

  thrift_spec = (
    None, # 0
    (1, TType.STRING, 'jobId', None, None, ), # 1
    (2, TType.LIST, 'tasks', (TType.STRUCT,(TTask, TTask.thrift_spec)), None, ), # 2
  )

  def __init__(self, jobId=None, tasks=None,):
    self.jobId = jobId
    self.tasks = tasks

  def read(self, iprot):
    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
      fastbinary.decode_binary(self, iprot.trans, (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.jobId = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 2:
        if ftype == TType.LIST:
          self.tasks = []
          (_etype252, _size249) = iprot.readListBegin()
          for _i253 in xrange(_size249):
            _elem254 = TTask()
            _elem254.read(iprot)
            self.tasks.append(_elem254)
          iprot.readListEnd()
        else:
          iprot.skip(ftype)
      else:
        iprot.skip(ftype)
      iprot.readFieldEnd()
    iprot.readStructEnd()

  def write(self, oprot):
    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
      return
    oprot.writeStructBegin('TJobTasks')
    if self.jobId is not None:
      oprot.writeFieldBegin('jobId', TType.STRING, 1)
      oprot.writeString(self.jobId)
      oprot.writeFieldEnd()
    if self.tasks is not None:
      oprot.writeFieldBegin('tasks', TType.LIST, 2)
      oprot.writeListBegin(TType.STRUCT, len(self.tasks))
      for iter255 in self.tasks:
        iter255.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__.iteritems()]
    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 TJobDetails:
  """
  Attributes:
   - user
   - jobName
   - jobFile
   - submitHost
   - submitHostAddress
   - jobAcls
   - jobSetup
   - status
   - startedAt
   - finishedAt
   - finishedIn
   - jobCleanup
   - mapp
   - reduce
   - counters
   - mapTasks
   - reduceTasks
   - available
  """

  thrift_spec = (
    None, # 0
    (1, TType.STRING, 'user', None, None, ), # 1
    (2, TType.STRING, 'jobName', None, None, ), # 2
    (3, TType.STRING, 'jobFile', None, None, ), # 3
    (4, TType.STRING, 'submitHost', None, None, ), # 4
    (5, TType.STRING, 'submitHostAddress', None, None, ), # 5
    (6, TType.STRING, 'jobAcls', None, None, ), # 6
    (7, TType.STRING, 'jobSetup', None, None, ), # 7
    (8, TType.STRING, 'status', None, None, ), # 8
    (9, TType.STRING, 'startedAt', None, None, ), # 9
    (10, TType.STRING, 'finishedAt', None, None, ), # 10
    (11, TType.STRING, 'finishedIn', None, None, ), # 11
    (12, TType.STRING, 'jobCleanup', None, None, ), # 12
    (13, TType.STRUCT, 'mapp', (TKind, TKind.thrift_spec), None, ), # 13
    (14, TType.STRUCT, 'reduce', (TKind, TKind.thrift_spec), None, ), # 14
    (15, TType.MAP, 'counters', (TType.STRING,None,TType.LIST,(TType.STRUCT,(TCounter, TCounter.thrift_spec))), None, ), # 15
    (16, TType.STRUCT, 'mapTasks', (TJobTasks, TJobTasks.thrift_spec), None, ), # 16
    (17, TType.STRUCT, 'reduceTasks', (TJobTasks, TJobTasks.thrift_spec), None, ), # 17
    (18, TType.BOOL, 'available', None, None, ), # 18
  )

  def __init__(self, user=None, jobName=None, jobFile=None, submitHost=None, submitHostAddress=None, jobAcls=None, jobSetup=None, status=None, startedAt=None, finishedAt=None, finishedIn=None, jobCleanup=None, mapp=None, reduce=None, counters=None, mapTasks=None, reduceTasks=None, available=None,):
    self.user = user
    self.jobName = jobName
    self.jobFile = jobFile
    self.submitHost = submitHost
    self.submitHostAddress = submitHostAddress
    self.jobAcls = jobAcls
    self.jobSetup = jobSetup
    self.status = status
    self.startedAt = startedAt
    self.finishedAt = finishedAt
    self.finishedIn = finishedIn
    self.jobCleanup = jobCleanup
    self.mapp = mapp
    self.reduce = reduce
    self.counters = counters
    self.mapTasks = mapTasks
    self.reduceTasks = reduceTasks
    self.available = available

  def read(self, iprot):
    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
      fastbinary.decode_binary(self, iprot.trans, (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.user = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 2:
        if ftype == TType.STRING:
          self.jobName = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 3:
        if ftype == TType.STRING:
          self.jobFile = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 4:
        if ftype == TType.STRING:
          self.submitHost = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 5:
        if ftype == TType.STRING:
          self.submitHostAddress = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 6:
        if ftype == TType.STRING:
          self.jobAcls = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 7:
        if ftype == TType.STRING:
          self.jobSetup = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 8:
        if ftype == TType.STRING:
          self.status = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 9:
        if ftype == TType.STRING:
          self.startedAt = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 10:
        if ftype == TType.STRING:
          self.finishedAt = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 11:
        if ftype == TType.STRING:
          self.finishedIn = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 12:
        if ftype == TType.STRING:
          self.jobCleanup = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 13:
        if ftype == TType.STRUCT:
          self.mapp = TKind()
          self.mapp.read(iprot)
        else:
          iprot.skip(ftype)
      elif fid == 14:
        if ftype == TType.STRUCT:
          self.reduce = TKind()
          self.reduce.read(iprot)
        else:
          iprot.skip(ftype)
      elif fid == 15:
        if ftype == TType.MAP:
          self.counters = {}
          (_ktype257, _vtype258, _size256 ) = iprot.readMapBegin()
          for _i260 in xrange(_size256):
            _key261 = iprot.readString();
            _val262 = []
            (_etype266, _size263) = iprot.readListBegin()
            for _i267 in xrange(_size263):
              _elem268 = TCounter()
              _elem268.read(iprot)
              _val262.append(_elem268)
            iprot.readListEnd()
            self.counters[_key261] = _val262
          iprot.readMapEnd()
        else:
          iprot.skip(ftype)
      elif fid == 16:
        if ftype == TType.STRUCT:
          self.mapTasks = TJobTasks()
          self.mapTasks.read(iprot)
        else:
          iprot.skip(ftype)
      elif fid == 17:
        if ftype == TType.STRUCT:
          self.reduceTasks = TJobTasks()
          self.reduceTasks.read(iprot)
        else:
          iprot.skip(ftype)
      elif fid == 18:
        if ftype == TType.BOOL:
          self.available = iprot.readBool();
        else:
          iprot.skip(ftype)
      else:
        iprot.skip(ftype)
      iprot.readFieldEnd()
    iprot.readStructEnd()

  def write(self, oprot):
    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
      return
    oprot.writeStructBegin('TJobDetails')
    if self.user is not None:
      oprot.writeFieldBegin('user', TType.STRING, 1)
      oprot.writeString(self.user)
      oprot.writeFieldEnd()
    if self.jobName is not None:
      oprot.writeFieldBegin('jobName', TType.STRING, 2)
      oprot.writeString(self.jobName)
      oprot.writeFieldEnd()
    if self.jobFile is not None:
      oprot.writeFieldBegin('jobFile', TType.STRING, 3)
      oprot.writeString(self.jobFile)
      oprot.writeFieldEnd()
    if self.submitHost is not None:
      oprot.writeFieldBegin('submitHost', TType.STRING, 4)
      oprot.writeString(self.submitHost)
      oprot.writeFieldEnd()
    if self.submitHostAddress is not None:
      oprot.writeFieldBegin('submitHostAddress', TType.STRING, 5)
      oprot.writeString(self.submitHostAddress)
      oprot.writeFieldEnd()
    if self.jobAcls is not None:
      oprot.writeFieldBegin('jobAcls', TType.STRING, 6)
      oprot.writeString(self.jobAcls)
      oprot.writeFieldEnd()
    if self.jobSetup is not None:
      oprot.writeFieldBegin('jobSetup', TType.STRING, 7)
      oprot.writeString(self.jobSetup)
      oprot.writeFieldEnd()
    if self.status is not None:
      oprot.writeFieldBegin('status', TType.STRING, 8)
      oprot.writeString(self.status)
      oprot.writeFieldEnd()
    if self.startedAt is not None:
      oprot.writeFieldBegin('startedAt', TType.STRING, 9)
      oprot.writeString(self.startedAt)
      oprot.writeFieldEnd()
    if self.finishedAt is not None:
      oprot.writeFieldBegin('finishedAt', TType.STRING, 10)
      oprot.writeString(self.finishedAt)
      oprot.writeFieldEnd()
    if self.finishedIn is not None:
      oprot.writeFieldBegin('finishedIn', TType.STRING, 11)
      oprot.writeString(self.finishedIn)
      oprot.writeFieldEnd()
    if self.jobCleanup is not None:
      oprot.writeFieldBegin('jobCleanup', TType.STRING, 12)
      oprot.writeString(self.jobCleanup)
      oprot.writeFieldEnd()
    if self.mapp is not None:
      oprot.writeFieldBegin('mapp', TType.STRUCT, 13)
      self.mapp.write(oprot)
      oprot.writeFieldEnd()
    if self.reduce is not None:
      oprot.writeFieldBegin('reduce', TType.STRUCT, 14)
      self.reduce.write(oprot)
      oprot.writeFieldEnd()
    if self.counters is not None:
      oprot.writeFieldBegin('counters', TType.MAP, 15)
      oprot.writeMapBegin(TType.STRING, TType.LIST, len(self.counters))
      for kiter269,viter270 in self.counters.items():
        oprot.writeString(kiter269)
        oprot.writeListBegin(TType.STRUCT, len(viter270))
        for iter271 in viter270:
          iter271.write(oprot)
        oprot.writeListEnd()
      oprot.writeMapEnd()
      oprot.writeFieldEnd()
    if self.mapTasks is not None:
      oprot.writeFieldBegin('mapTasks', TType.STRUCT, 16)
      self.mapTasks.write(oprot)
      oprot.writeFieldEnd()
    if self.reduceTasks is not None:
      oprot.writeFieldBegin('reduceTasks', TType.STRUCT, 17)
      self.reduceTasks.write(oprot)
      oprot.writeFieldEnd()
    if self.available is not None:
      oprot.writeFieldBegin('available', TType.BOOL, 18)
      oprot.writeBool(self.available)
      oprot.writeFieldEnd()
    oprot.writeFieldStop()
    oprot.writeStructEnd()

  def validate(self):
    return


  def __repr__(self):
    L = ['%s=%r' % (key, value)
      for key, value in self.__dict__.iteritems()]
    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)
