code: def decode(self):
          
  
          report_dict = msgpack.unpackb(self.raw_report, raw=False)
  
          events = [IOTileEvent.FromDict(x) for x in report_dict.get('events', [])]
          readings = [IOTileReading.FromDict(x) for x in report_dict.get('data', [])]
  
          if 'device' not in report_dict:
              raise DataError("Invalid encoded FlexibleDictionaryReport that did not "
                              "have a device key set with the device uuid")
  
          self.origin = report_dict['device']
          self.report_id = report_dict.get("incremental_id", IOTileReading.InvalidReadingID)
          self.sent_timestamp = report_dict.get("device_sent_timestamp", 0)
          self.origin_streamer = report_dict.get("streamer_index")
          self.streamer_selector = report_dict.get("streamer_selector")
          self.lowest_id = report_dict.get('lowest_id')
          self.highest_id = report_dict.get('highest_id')
  
          return readings, events
docs: Decode this report from a msgpack encoded binary blob.