code: def query(self, filter_text, max_servers=10, timeout=30, **kw):
          r
          if 'geo_location_ip' in kw:
              kw['geo_location_ip'] = ip_to_int(kw['geo_location_ip'])
  
          kw['filter_text'] = filter_text
          kw['max_servers'] = max_servers
  
          resp = self._s.send_job_and_wait(MsgProto(EMsg.ClientGMSServerQuery),
                                           kw,
                                           timeout=timeout,
                                           )
  
          if resp is None:
              return None
  
          resp = proto_to_dict(resp)
  
          for server in resp['servers']:
              server['server_ip'] = ip_from_int(server['server_ip'])
  
          return resp['servers']
docs: r"""
          Query game servers
  
          https://developer.valvesoftware.com/wiki/Master_Server_Query_Protocol
  
          .. note::
              When specifying ``filter_text`` use *raw strings* otherwise python won't treat backslashes
              as literal characters (e.g. ``query(r'\appid\730\white\1')``)
  
          :param filter_text: filter for servers
          :type  filter_text: str
          :param max_servers: (optional) number of servers to return
          :type  max_servers: int
          :param timeout: (optional) timeout for request in seconds
          :type  timeout: int
          :param app_id: (optional) app id
          :type  app_id: int
          :param geo_location_ip: (optional) ip (e.g. '1.2.3.4')
          :type  geo_location_ip: str
          :returns: list of servers, see below. (``None`` is returned steam doesn't respond)
          :rtype: :class:`list`, :class:`None`
  
          Sample response:
  
          .. code:: python
  
              [{'auth_players': 0, 'server_ip': '1.2.3.4', 'server_port': 27015},
               {'auth_players': 6, 'server_ip': '1.2.3.4', 'server_port': 27016},
               ...
              ]