docs: def submit_offline_reports(self):
          """
          Submit offline reports using the enabled methods (SMTP and/or HQ)
          Returns a tuple of (N sent reports, N remaining reports)
          """
          smtp_enabled = bool(self._smtp)
          hq_enabled = bool(self._hq)
          offline_reports = self.get_offline_reports()
          logging.info('Submitting %d offline crash reports' % len(offline_reports))
          offline_reports = offline_reports[:self.send_at_most]
  
          if smtp_enabled:
              try:
                  smtp_success = self._smtp_send_offline_reports(*offline_reports)
              except Exception as e:
                  logging.error(e)
                  smtp_success = [False] * len(offline_reports)
          else:
              smtp_success = [True] * len(offline_reports)
  
          if hq_enabled:
              try:
                  hq_success = self._hq_send_offline_reports(*offline_reports)
              except Exception as e:
                  logging.error(e)
                  hq_success = [False] * len(offline_reports)
          else:
              hq_success = [True] * len(offline_reports)
  
          remaining_reports = self.delete_offline_reports()
          success = [s1 and s2 for (s1, s2) in zip(smtp_success, hq_success)]
          logging.info('%d crash reports successfully submitted' % success.count(True))
          logging.info('%d crash reports remain to be submitted' % len(remaining_reports))
          return all(success)