code: def decompile(self, data, offset):
      # initial offset is from the start of trak table to the current TrackData
      trackDataHeader = data[offset : offset + TRACK_DATA_FORMAT_SIZE]
      if len(trackDataHeader) != TRACK_DATA_FORMAT_SIZE:
          raise TTLibError(
              "not enough data to decompile TrackData header"
          )
      sstruct.unpack(TRACK_DATA_FORMAT, trackDataHeader, self)
      offset += TRACK_DATA_FORMAT_SIZE
  
      nSizes = self.nSizes
      sizeTableOffset = self.sizeTableOffset
      sizeTable = []
      for i in range(nSizes):
          sizeValueData = data[
              sizeTableOffset : sizeTableOffset + SIZE_VALUE_FORMAT_SIZE
          ]
          if len(sizeValueData) < SIZE_VALUE_FORMAT_SIZE:
              raise TTLibError(
                  "not enough data to decompile TrackData size subtable"
              )
          (sizeValue,) = struct.unpack(SIZE_VALUE_FORMAT, sizeValueData)
          sizeTable.append(fi2fl(sizeValue, 16))
          sizeTableOffset += SIZE_VALUE_FORMAT_SIZE
  
      for i in range(self.nTracks):
          entry = TrackTableEntry()
          entryData = data[
              offset : offset + TRACK_TABLE_ENTRY_FORMAT_SIZE
          ]
          if len(entryData) < TRACK_TABLE_ENTRY_FORMAT_SIZE:
              raise TTLibError(
                  "not enough data to decompile TrackTableEntry record"
              )
          sstruct.unpack(TRACK_TABLE_ENTRY_FORMAT, entryData, entry)
          perSizeOffset = entry.offset
          for j in range(nSizes):
              size = sizeTable[j]
              perSizeValueData = data[
                  perSizeOffset : perSizeOffset
                  + PER_SIZE_VALUE_FORMAT_SIZE
              ]
              if len(perSizeValueData) < PER_SIZE_VALUE_FORMAT_SIZE:
                  raise TTLibError(
                      "not enough data to decompile per-size track values"
                  )
              (perSizeValue,) = struct.unpack(
                  PER_SIZE_VALUE_FORMAT, perSizeValueData
              )
              entry[size] = perSizeValue
              perSizeOffset += PER_SIZE_VALUE_FORMAT_SIZE
          self[entry.track] = entry
          offset += TRACK_TABLE_ENTRY_FORMAT_SIZE
  
imports: from fontTools.misc import sstruct
  from fontTools.misc.fixedTools import fixedToFloat, floatToFixed, floatToFixedToStr, strToFixedToFloat
  from fontTools.misc.textTools import bytesjoin, safeEval
  from fontTools.ttLib import TTLibError
  from .None import DefaultTable
  import struct
  from collections.abc import MutableMapping
label_desc: Use image node_id 3 for calling the TrackData obj's underlying member method code with example usage: obj.decompile(data, offset) without return types