code: def unhash(text, hashes):
      
      def retrieve_match(match):
          return hashes[match.group(0)]
      while re_hash.search(text):
          text = re_hash.sub(retrieve_match, text)
      text = re_pre_tag.sub(lambda m: re.sub('^' + m.group(1), '', m.group(0), flags=re.M), text)
      return text
docs: Unhashes all hashed entites in the hashes dictionary.
  
      The pattern for hashes is defined by re_hash. After everything is
      unhashed, <pre> blocks are "pulled out" of whatever indentation
      level in which they used to be (e.g. in a list).