code: func Unescape(s string) ([]byte, error) {
  	var buf = new(bytes.Buffer)
  	reader := strings.NewReader(s)
  
  	for {
  		r, size, err := reader.ReadRune()
  		if err == io.EOF {
  			break
  		}
  		if err != nil {
  			return nil, err
  		}
  		if size > 1 {
  			return nil, fmt.Errorf("rfc2396: non-ASCII char detected")
  		}
  
  		switch r {
  		case '%':
  			eb1, err := reader.ReadByte()
  			if err == io.EOF {
  				return nil, fmt.Errorf("rfc2396: unexpected end of unescape sequence")
  			}
  			if err != nil {
  				return nil, err
  			}
  			if !isHex(eb1) {
  				return nil, fmt.Errorf("rfc2396: invalid char 0x%x in unescape sequence", r)
  			}
  			eb0, err := reader.ReadByte()
  			if err == io.EOF {
  				return nil, fmt.Errorf("rfc2396: unexpected end of unescape sequence")
  			}
  			if err != nil {
  				return nil, err
  			}
  			if !isHex(eb0) {
  				return nil, fmt.Errorf("rfc2396: invalid char 0x%x in unescape sequence", r)
  			}
  			buf.WriteByte(unhex(eb0) + unhex(eb1)*16)
  		default:
  			buf.WriteByte(byte(r))
  		}
  	}
  	return buf.Bytes(), nil
  }
docs: // Unescape unescapes a character sequence
  // escaped with Escape(String?).