nodes: 0, module; 1, function_definition; 2, function_name:_ExportEvent; 3, parameters; 4, block; 5, identifier:self; 6, identifier:output_module; 7, identifier:event; 8, default_parameter; 9, expression_statement; 10, if_statement; 11, expression_statement; 12, identifier:deduplicate_events; 13, True; 14, comment:"""Exports an event using an output module.
  
      Args:
        output_module (OutputModule): output module.
        event (EventObject): event.
        deduplicate_events (Optional[bool]): True if events should be
            deduplicated.
      """; 15, comparison_operator:event.timestamp != self._export_event_timestamp; 16, block; 17, call; 18, attribute; 19, attribute; 20, expression_statement; 21, expression_statement; 22, attribute; 23, argument_list; 24, identifier:event; 25, identifier:timestamp; 26, identifier:self; 27, identifier:_export_event_timestamp; 28, call; 29, assignment; 30, attribute; 31, identifier:PushEvent; 32, identifier:event; 33, attribute; 34, argument_list; 35, attribute; 36, attribute; 37, identifier:self; 38, identifier:_export_event_heap; 39, identifier:self; 40, identifier:_FlushExportBuffer; 41, identifier:output_module; 42, keyword_argument; 43, identifier:self; 44, identifier:_export_event_timestamp; 45, identifier:event; 46, identifier:timestamp; 47, identifier:deduplicate_events; 48, identifier:deduplicate_events
code: def _ExportEvent(self, output_module, event, deduplicate_events=True):
      """Exports an event using an output module.
  
      Args:
        output_module (OutputModule): output module.
        event (EventObject): event.
        deduplicate_events (Optional[bool]): True if events should be
            deduplicated.
      """
      if event.timestamp != self._export_event_timestamp:
        self._FlushExportBuffer(
            output_module, deduplicate_events=deduplicate_events)
        self._export_event_timestamp = event.timestamp
  
      self._export_event_heap.PushEvent(event)