code: def do_hexstring(self, token):
      hexStr = "".join(token[1:-1].split())
      if len(hexStr) % 2:
          hexStr = hexStr + "0"
      cleanstr = []
      for i in range(0, len(hexStr), 2):
          cleanstr.append(chr(int(hexStr[i : i + 2], 16)))
      cleanstr = "".join(cleanstr)
      return ps_string(cleanstr)
  
imports: from fontTools.misc.textTools import bytechr, byteord, bytesjoin, tobytes, tostr
  from fontTools.misc import eexec
  from .psOperators import PSOperators, ps_StandardEncoding, ps_array, ps_boolean, ps_dict, ps_integer, ps_literal, ps_mark, ps_name, ps_operator, ps_procedure, ps_procmark, ps_real, ps_string
  import re
  from collections.abc import Callable
  from string import whitespace
  import logging
label_desc: Use image node_id 12 for calling the PSInterpreter obj's underlying member method code with example usage: obj.do_hexstring(token) and returns: ps_string