code: def _parseCusdResponse(self, lines):
          
          if len(lines) > 1:
              # Issue #20: Some modem/network combinations use \r\n as in-message EOL indicators;
              # - join lines to compensate for that (thanks to davidjb for the fix)
              # Also, look for more than one +CUSD response because of certain modems' strange behaviour
              cusdMatches = list(self.CUSD_REGEX.finditer('\r\n'.join(lines)))
          else:
              # Single standard +CUSD response
              cusdMatches = [self.CUSD_REGEX.match(lines[0])]
          message = None
          sessionActive = True
          if len(cusdMatches) > 1:
              self.log.debug('Multiple +CUSD responses received; filtering...')
              # Some modems issue a non-standard "extra" +CUSD notification for releasing the session
              for cusdMatch in cusdMatches:
                  if cusdMatch.group(1) == '2':
                      # Set the session to inactive, but ignore the message
                      self.log.debug('Ignoring "session release" message: %s', cusdMatch.group(2))
                      sessionActive = False
                  else:
                      # Not a "session release" message
                      message = cusdMatch.group(2)
                      if sessionActive and cusdMatch.group(1) != '1':
                          sessionActive = False
          else:
              sessionActive = cusdMatches[0].group(1) == '1'
              message = cusdMatches[0].group(2)
          return Ussd(self, sessionActive, message)
docs: Parses one or more +CUSD notification lines (for USSD)
          :return: USSD response object
          :rtype: gsmmodem.modem.Ussd