Backed out 3 changesets (bug 1697421) for causing mochitest failures on test_webassembly_compile.html. CLOSED TREE
authorIulian Moraru <imoraru@mozilla.com>
Fri, 16 Sep 2022 01:19:21 +0300
changeset 635679 14186f45ec78831fe06f6c4f61d16dad77226a7f
parent 635678 154aa092d659b64d4ab05e898f599f1b1d289673
child 635680 b5f9a98c4e2e9fcc7c1bb067020689ad2ba8c987
push id169896
push userimoraru@mozilla.com
push dateThu, 15 Sep 2022 22:19:47 +0000
treeherderautoland@14186f45ec78 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
bugs1697421
milestone106.0a1
backs out65d4f5822383536c9df728acd885267a64719c1b
cda8626f9cccf68470e4728f19bb071b99111cbc
fe6151585dec8c4001c5429505de9c04816b4112
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Backed out 3 changesets (bug 1697421) for causing mochitest failures on test_webassembly_compile.html. CLOSED TREE Backed out changeset 65d4f5822383 (bug 1697421) Backed out changeset cda8626f9ccc (bug 1697421) Backed out changeset fe6151585dec (bug 1697421)
dom/fetch/Fetch.cpp
dom/fetch/InternalHeaders.cpp
dom/xhr/XMLHttpRequestMainThread.cpp
dom/xhr/XMLHttpRequestMainThread.h
netwerk/protocol/http/nsHttpHeaderArray.cpp
netwerk/protocol/http/nsHttpHeaderArray.h
netwerk/protocol/http/nsHttpResponseHead.cpp
netwerk/protocol/http/nsHttpResponseHead.h
testing/web-platform/meta/fetch/api/basic/header-value-combining.any.js.ini
testing/web-platform/meta/fetch/content-length/api-and-duplicate-headers.any.js.ini
testing/web-platform/meta/fetch/content-type/response.window.js.ini
testing/web-platform/meta/mimesniff/mime-types/parsing.any.js.ini
testing/web-platform/meta/service-workers/service-worker/navigation-sets-cookie.https.html.ini
testing/web-platform/meta/service-workers/service-worker/same-site-cookies.https.html.ini
testing/web-platform/meta/service-workers/service-worker/xhr-content-length.https.window.js.ini
testing/web-platform/meta/xhr/getallresponseheaders.htm.ini
testing/web-platform/meta/xhr/getresponseheader.any.js.ini
--- a/dom/fetch/Fetch.cpp
+++ b/dom/fetch/Fetch.cpp
@@ -16,17 +16,16 @@
 #include "nsJSUtils.h"
 #include "nsNetUtil.h"
 #include "nsReadableUtils.h"
 #include "nsStreamUtils.h"
 #include "nsStringStream.h"
 #include "nsProxyRelease.h"
 
 #include "mozilla/ErrorResult.h"
-#include "mozilla/dom/MimeType.h"
 #include "mozilla/dom/BindingDeclarations.h"
 #include "mozilla/dom/BodyConsumer.h"
 #include "mozilla/dom/Exceptions.h"
 #include "mozilla/dom/DOMException.h"
 #include "mozilla/dom/FetchDriver.h"
 #include "mozilla/dom/File.h"
 #include "mozilla/dom/FormData.h"
 #include "mozilla/dom/Headers.h"
@@ -1255,50 +1254,30 @@ template already_AddRefed<Promise> Fetch
     JSContext* aCx, BodyConsumer::ConsumeType aType, ErrorResult& aRv);
 
 template already_AddRefed<Promise> FetchBody<EmptyBody>::ConsumeBody(
     JSContext* aCx, BodyConsumer::ConsumeType aType, ErrorResult& aRv);
 
 template <class Derived>
 void FetchBody<Derived>::GetMimeType(nsACString& aMimeType,
                                      nsACString& aMixedCaseMimeType) {
+  // Extract mime type.
   ErrorResult result;
-  nsAutoCString contentTypeValues, contentTypeUtf8;
+  nsCString contentTypeValues;
   MOZ_ASSERT(DerivedClass()->GetInternalHeaders());
   DerivedClass()->GetInternalHeaders()->Get("Content-Type"_ns,
                                             contentTypeValues, result);
   MOZ_ALWAYS_TRUE(!result.Failed());
 
-  nsCCharSeparatedTokenizer contentTypeTokens(contentTypeValues, ',');
-
-  // currently we extract the MIME-type from the first content type header
-  // In order to fully comply with the fetch spec we must be able to
-  // parse multiple content-type headers and extrace headers from it
-  // To achieve this we need to modify CMimeType::Parse and implement the
-  // algorithm https://fetch.spec.whatwg.org/#concept-header-extract-mime-type
-  // This issue is tracked by
-  // https://bugzilla.mozilla.org/show_bug.cgi?id=1510180
-  auto contentStr = contentTypeTokens.nextToken();
-
-  CopyLatin1toUTF8(contentStr, contentTypeUtf8);
-  UniquePtr<CMimeType> contentTypeRecord = CMimeType::Parse(contentTypeUtf8);
-  if (contentTypeRecord) {
-    contentTypeRecord->Serialize(aMixedCaseMimeType);
-    // validate invalid/empty parameter checks
-    // according to https://mimesniff.spec.whatwg.org/#parsing-a-mime-type
-    // CMimeType::Parse parses the parameters and discards ill-formed parameters
-    // If we have invalid/illformed paramters we need to discard the parsed
-    // mime-type
-    if (contentStr.Contains(';') && !aMixedCaseMimeType.Contains(';')) {
-      // parameters were discarded after parsing.
-      // This should result in invalid MimeType
-      aMixedCaseMimeType = "";
-    }
-
-    aMimeType = aMixedCaseMimeType;
+  // HTTP ABNF states Content-Type may have only one value.
+  // This is from the "parse a header value" of the fetch spec.
+  if (!contentTypeValues.IsVoid() && contentTypeValues.Find(",") == -1) {
+    // Convert from a bytestring to a UTF8 CString.
+    CopyLatin1toUTF8(contentTypeValues, aMimeType);
+    aMixedCaseMimeType = aMimeType;
     ToLowerCase(aMimeType);
   }
 }
 
 template void FetchBody<Request>::GetMimeType(nsACString& aMimeType,
                                               nsACString& aMixedCaseMimeType);
 template void FetchBody<Response>::GetMimeType(nsACString& aMimeType,
                                                nsACString& aMixedCaseMimeType);
--- a/dom/fetch/InternalHeaders.cpp
+++ b/dom/fetch/InternalHeaders.cpp
@@ -432,89 +432,48 @@ void InternalHeaders::Fill(const Record<
     if (aRv.Failed()) {
       return;
     }
   }
 }
 
 namespace {
 
-class FillOriginalResponseHeaders final : public nsIHttpHeaderVisitor {
+class FillHeaders final : public nsIHttpHeaderVisitor {
   RefPtr<InternalHeaders> mInternalHeaders;
 
-  ~FillOriginalResponseHeaders() = default;
+  ~FillHeaders() = default;
 
  public:
   NS_DECL_ISUPPORTS
 
-  explicit FillOriginalResponseHeaders(InternalHeaders* aInternalHeaders)
+  explicit FillHeaders(InternalHeaders* aInternalHeaders)
       : mInternalHeaders(aInternalHeaders) {
     MOZ_DIAGNOSTIC_ASSERT(mInternalHeaders);
   }
 
   NS_IMETHOD
   VisitHeader(const nsACString& aHeader, const nsACString& aValue) override {
     mInternalHeaders->Append(aHeader, aValue, IgnoreErrors());
     return NS_OK;
   }
 };
 
-NS_IMPL_ISUPPORTS(FillOriginalResponseHeaders, nsIHttpHeaderVisitor)
-
-class FillMissingResponseHeaders final : public nsIHttpHeaderVisitor {
-  RefPtr<InternalHeaders> mInternalHeaders;
-
-  ~FillMissingResponseHeaders() = default;
-
- public:
-  NS_DECL_ISUPPORTS
+NS_IMPL_ISUPPORTS(FillHeaders, nsIHttpHeaderVisitor)
 
-  explicit FillMissingResponseHeaders(InternalHeaders* aInternalHeaders)
-      : mInternalHeaders(aInternalHeaders) {
-    MOZ_DIAGNOSTIC_ASSERT(mInternalHeaders);
-  }
-
-  NS_IMETHOD
-  VisitHeader(const nsACString& aHeader, const nsACString& aValue) override {
-    ErrorResult rv;
-
-    if (!mInternalHeaders->Has(aHeader, rv)) {
-      MOZ_ASSERT(!rv.Failed());
-      mInternalHeaders->Append(aHeader, aValue, IgnoreErrors());
-    }
-    return NS_OK;
-  }
-};
-
-NS_IMPL_ISUPPORTS(FillMissingResponseHeaders, nsIHttpHeaderVisitor)
 }  // namespace
 
 void InternalHeaders::FillResponseHeaders(nsIRequest* aRequest) {
   nsCOMPtr<nsIHttpChannel> httpChannel = do_QueryInterface(aRequest);
   if (!httpChannel) {
     return;
   }
 
-  RefPtr<FillOriginalResponseHeaders> visitor =
-      new FillOriginalResponseHeaders(this);
-  // response headers received from fetch requires extra processing
-  // we need the response headers received in original formats and also include
-  // any headers internally added
-  // nsIHttpChannel does not have any implemenation to give both types of
-  // headers hence, we fetch them seperately and merge them first step is to get
-  // the original response header
-  nsresult rv = httpChannel->VisitOriginalResponseHeaders(visitor);
-  if (NS_FAILED(rv)) {
-    NS_WARNING("failed to fill headers");
-  }
-
-  RefPtr<FillMissingResponseHeaders> visitMissingHeaders =
-      new FillMissingResponseHeaders(this);
-  rv = httpChannel->VisitResponseHeaders(visitMissingHeaders);
-
+  RefPtr<FillHeaders> visitor = new FillHeaders(this);
+  nsresult rv = httpChannel->VisitResponseHeaders(visitor);
   if (NS_FAILED(rv)) {
     NS_WARNING("failed to fill headers");
   }
 }
 
 bool InternalHeaders::HasOnlySimpleHeaders() const {
   for (uint32_t i = 0; i < mList.Length(); ++i) {
     if (!IsSimpleHeader(mList[i].mName, mList[i].mValue)) {
--- a/dom/xhr/XMLHttpRequestMainThread.cpp
+++ b/dom/xhr/XMLHttpRequestMainThread.cpp
@@ -1116,18 +1116,17 @@ void XMLHttpRequestMainThread::GetAllRes
 
   if (mErrorLoad != ErrorType::eOK) {
     return;
   }
 
   if (nsCOMPtr<nsIHttpChannel> httpChannel = GetCurrentHttpChannel()) {
     RefPtr<nsHeaderVisitor> visitor =
         new nsHeaderVisitor(*this, WrapNotNull(httpChannel));
-    if (NS_SUCCEEDED(httpChannel->VisitOriginalResponseHeaders(visitor))) {
-      visitor->MergeDuplicateHeaders();
+    if (NS_SUCCEEDED(httpChannel->VisitResponseHeaders(visitor))) {
       aResponseHeaders = visitor->Headers();
     }
     return;
   }
 
   if (!mChannel) {
     return;
   }
@@ -1152,48 +1151,16 @@ void XMLHttpRequestMainThread::GetAllRes
     if (NS_SUCCEEDED(mChannel->GetContentLength(&length))) {
       aResponseHeaders.AppendLiteral("Content-Length: ");
       aResponseHeaders.AppendInt(length);
       aResponseHeaders.AppendLiteral("\r\n");
     }
   }
 }
 
-namespace {
-// used for parsing headers with duplicate entries
-class nsResponseHeaderVisitor final : public nsIHttpHeaderVisitor {
- public:
-  NS_DECL_ISUPPORTS
-
-  nsResponseHeaderVisitor() = default;
-
-  NS_IMETHOD
-  VisitHeader(const nsACString& aHeader, const nsACString& aValue) override {
-    if (mIsHeaderPresent) {
-      mValue.AppendLiteral(", ");
-    }
-    mValue.Append(aValue);
-    mIsHeaderPresent = true;
-    return NS_OK;
-  }
-
-  void GetValue(nsACString& aValue) { aValue = mValue; }
-
- private:
-  nsCString mValue;
-
-  // indicates whether a header is already stored during parsing
-  bool mIsHeaderPresent{false};
-
-  virtual ~nsResponseHeaderVisitor() = default;
-};
-
-NS_IMPL_ISUPPORTS(nsResponseHeaderVisitor, nsIHttpHeaderVisitor)
-}  // namespace
-
 void XMLHttpRequestMainThread::GetResponseHeader(const nsACString& header,
                                                  nsACString& _retval,
                                                  ErrorResult& aRv) {
   NOT_CALLABLE_IN_SYNC_SEND_RV
 
   _retval.SetIsVoid(true);
 
   nsCOMPtr<nsIHttpChannel> httpChannel = GetCurrentHttpChannel();
@@ -1244,26 +1211,21 @@ void XMLHttpRequestMainThread::GetRespon
     return;
   }
 
   // Check for dangerous headers
   if (!IsSafeHeader(header, WrapNotNull(httpChannel))) {
     return;
   }
 
-  RefPtr<nsResponseHeaderVisitor> resposeHeaderVisitor =
-      new nsResponseHeaderVisitor();
-
-  aRv = httpChannel->GetOriginalResponseHeader(header, resposeHeaderVisitor);
+  aRv = httpChannel->GetResponseHeader(header, _retval);
   if (aRv.ErrorCodeIs(NS_ERROR_NOT_AVAILABLE)) {
     // Means no header
     _retval.SetIsVoid(true);
     aRv.SuppressException();
-  } else if (!aRv.Failed()) {
-    resposeHeaderVisitor->GetValue(_retval);
   }
 }
 
 already_AddRefed<nsILoadGroup> XMLHttpRequestMainThread::GetLoadGroup() const {
   if (mFlagBackgroundRequest) {
     return nullptr;
   }
 
--- a/dom/xhr/XMLHttpRequestMainThread.h
+++ b/dom/xhr/XMLHttpRequestMainThread.h
@@ -566,46 +566,28 @@ class XMLHttpRequestMainThread final : p
       }
     };
 
    public:
     NS_DECL_ISUPPORTS
     NS_DECL_NSIHTTPHEADERVISITOR
     nsHeaderVisitor(const XMLHttpRequestMainThread& aXMLHttpRequest,
                     NotNull<nsIHttpChannel*> aHttpChannel);
-
-    void MergeDuplicateHeaders() {
-      if (mHeaderList.IsEmpty()) {
-        return;
-      }
-
-      mHeaders.Append(mHeaderList.ElementAt(0).mName);
-      mHeaders.AppendLiteral(": ");
-      mHeaders.Append(mHeaderList.ElementAt(0).mValue);
-
-      for (uint32_t i = 1; i < mHeaderList.Length(); i++) {
+    const nsACString& Headers() {
+      for (uint32_t i = 0; i < mHeaderList.Length(); i++) {
         HeaderEntry& header = mHeaderList.ElementAt(i);
-        HeaderEntry& prevHeader = mHeaderList.ElementAt(i - 1);
 
-        if (header.mName != prevHeader.mName) {
-          mHeaders.AppendLiteral("\r\n");
-          mHeaders.Append(header.mName);
-          mHeaders.AppendLiteral(": ");
-          mHeaders.Append(header.mValue);
-        } else {
-          mHeaders.AppendLiteral(", ");
-          mHeaders.Append(header.mValue);
-        }
+        mHeaders.Append(header.mName);
+        mHeaders.AppendLiteral(": ");
+        mHeaders.Append(header.mValue);
+        mHeaders.AppendLiteral("\r\n");
       }
-
-      mHeaders.AppendLiteral("\r\n");
+      return mHeaders;
     }
 
-    const nsACString& Headers() { return mHeaders; }
-
    private:
     virtual ~nsHeaderVisitor();
 
     nsTArray<HeaderEntry> mHeaderList;
     nsCString mHeaders;
     const XMLHttpRequestMainThread& mXHR;
     NotNull<nsCOMPtr<nsIHttpChannel>> mHttpChannel;
   };
--- a/netwerk/protocol/http/nsHttpHeaderArray.cpp
+++ b/netwerk/protocol/http/nsHttpHeaderArray.cpp
@@ -226,20 +226,16 @@ void nsHttpHeaderArray::ClearHeader(cons
     if (entry->variety == eVarietyResponseNetOriginalAndResponse) {
       entry->variety = eVarietyResponseNetOriginal;
     } else {
       mHeaders.RemoveElementAt(index);
     }
   }
 }
 
-void nsHttpHeaderArray::PurgeHeaderEntries(const nsHttpAtom& header) {
-  mHeaders.RemoveElementsBy(
-      [header](const auto& entry) { return (entry.header == header); });
-}
 const char* nsHttpHeaderArray::PeekHeader(const nsHttpAtom& header) const {
   const nsEntry* entry = nullptr;
   LookupEntry(header, &entry);
   return entry ? entry->value.get() : nullptr;
 }
 
 nsresult nsHttpHeaderArray::GetHeader(const nsHttpAtom& header,
                                       nsACString& result) const {
@@ -443,25 +439,21 @@ void nsHttpHeaderArray::FlattenOriginalH
     }
 
     buf.AppendLiteral(": ");
     buf.Append(entry.value);
     buf.AppendLiteral("\r\n");
   }
 }
 
-const char* nsHttpHeaderArray::PeekHeaderAt(uint32_t index, nsHttpAtom& header,
-                                            nsACString& headerNameOriginal,
-                                            HeaderVariety& variety,
-                                            nsACString& val) const {
+const char* nsHttpHeaderArray::PeekHeaderAt(
+    uint32_t index, nsHttpAtom& header, nsACString& headerNameOriginal) const {
   const nsEntry& entry = mHeaders[index];
 
   header = entry.header;
   headerNameOriginal = entry.headerNameOriginal;
-  variety = entry.variety;
-  val = entry.value;
   return entry.value.get();
 }
 
 void nsHttpHeaderArray::Clear() { mHeaders.Clear(); }
 
 }  // namespace net
 }  // namespace mozilla
--- a/netwerk/protocol/http/nsHttpHeaderArray.h
+++ b/netwerk/protocol/http/nsHttpHeaderArray.h
@@ -77,18 +77,16 @@ class nsHttpHeaderArray {
       const nsACString& value, HeaderVariety variety);
 
   [[nodiscard]] nsresult GetHeader(const nsHttpAtom& header,
                                    nsACString& result) const;
   [[nodiscard]] nsresult GetOriginalHeader(const nsHttpAtom& aHeader,
                                            nsIHttpHeaderVisitor* aVisitor);
   void ClearHeader(const nsHttpAtom& h);
 
-  void PurgeHeaderEntries(const nsHttpAtom& header);
-
   // Find the location of the given header value, or null if none exists.
   const char* FindHeaderValue(const nsHttpAtom& header,
                               const char* value) const {
     return nsHttp::FindToken(PeekHeader(header), value, HTTP_HEADER_VALUE_SEPS);
   }
 
   // Determine if the given header value exists.
   bool HasHeaderValue(const nsHttpAtom& header, const char* value) const {
@@ -114,18 +112,17 @@ class nsHttpHeaderArray {
       nsACString* headerNameOriginal = nullptr, nsACString* value = nullptr);
 
   void Flatten(nsACString&, bool pruneProxyHeaders, bool pruneTransients);
   void FlattenOriginalHeader(nsACString&);
 
   uint32_t Count() const { return mHeaders.Length(); }
 
   const char* PeekHeaderAt(uint32_t i, nsHttpAtom& header,
-                           nsACString& headerNameOriginal,
-                           HeaderVariety& variety, nsACString& val) const;
+                           nsACString& headerNameOriginal) const;
 
   void Clear();
 
   // Must be copy-constructable and assignable
   struct nsEntry {
     nsHttpAtom header;
     nsCString headerNameOriginal;
     nsCString value;
--- a/netwerk/protocol/http/nsHttpResponseHead.cpp
+++ b/netwerk/protocol/http/nsHttpResponseHead.cpp
@@ -158,20 +158,22 @@ nsresult nsHttpResponseHead::SetHeader(c
 
   if (mInVisitHeaders) {
     return NS_ERROR_FAILURE;
   }
 
   return SetHeader_locked(hdr, ""_ns, val, merge);
 }
 
-nsresult nsHttpResponseHead::SetHeader_locked(
-    const nsHttpAtom& atom, const nsACString& hdr, const nsACString& val,
-    bool merge, const nsHttpHeaderArray::HeaderVariety& variety) {
-  nsresult rv = mHeaders.SetHeader(atom, hdr, val, merge, variety);
+nsresult nsHttpResponseHead::SetHeader_locked(const nsHttpAtom& atom,
+                                              const nsACString& hdr,
+                                              const nsACString& val,
+                                              bool merge) {
+  nsresult rv = mHeaders.SetHeader(atom, hdr, val, merge,
+                                   nsHttpHeaderArray::eVarietyResponse);
   if (NS_FAILED(rv)) return rv;
 
   // respond to changes in these headers.  we need to reparse the entire
   // header since the change may have merged in additional values.
   if (atom == nsHttp::Cache_Control) {
     ParseCacheControl(mHeaders.PeekHeader(atom));
   } else if (atom == nsHttp::Pragma) {
     ParsePragma(mHeaders.PeekHeader(atom));
@@ -886,105 +888,58 @@ bool nsHttpResponseHead::ExpiresInPast_l
   if (NS_SUCCEEDED(GetMaxAgeValue_locked(&maxAgeVal))) {
     return false;
   }
 
   return NS_SUCCEEDED(GetExpiresValue_locked(&expiresVal)) &&
          NS_SUCCEEDED(GetDateValue_locked(&dateVal)) && expiresVal < dateVal;
 }
 
-void nsHttpResponseHead::UpdateOriginalHeaders(nsHttpResponseHead* aOther) {
-  mRecursiveMutex.AssertCurrentThreadIn();
-  aOther->mRecursiveMutex.AssertCurrentThreadIn();
-
-  uint32_t i, count = aOther->mHeaders.Count();
-
-  // container to maintain a list of entries purged
-  nsTHashSet<nsCString> purgedEntries;
-
-  for (i = 0; i < count; ++i) {
-    nsHttpAtom header;
-    nsHttpHeaderArray::HeaderVariety variety;
-    nsAutoCString headerNameOriginal;
-    nsAutoCString val;
-
-    if (!aOther->mHeaders.PeekHeaderAt(i, header, headerNameOriginal, variety,
-                                       val)) {
-      continue;
-    }
-
-    if (CanIgnoreResponseHeaderTypes(header) ||
-        !IsOriginalResponseHeader(variety)) {
-      continue;
-    }
-
-    // remove old response header entries as we have received updated
-    // response headers from 304/206 response
-    if (purgedEntries.EnsureInserted(header.val())) {
-      mHeaders.PurgeHeaderEntries(header);
-    }
-
-    DebugOnly<nsresult> rv =
-        mHeaders.SetHeaderFromNet(header, headerNameOriginal, val, true);
-    MOZ_ASSERT(NS_SUCCEEDED(rv));
-  }
-}
-
-bool nsHttpResponseHead::CanIgnoreResponseHeaderTypes(
-    const nsHttpAtom& header) const {
-  return (header == nsHttp::Connection || header == nsHttp::Proxy_Connection ||
-          header == nsHttp::Keep_Alive ||
-          header == nsHttp::Proxy_Authenticate ||
-          header == nsHttp::Proxy_Authorization ||
-          // not a response header!
-          header == nsHttp::TE || header == nsHttp::Trailer ||
-          header == nsHttp::Transfer_Encoding || header == nsHttp::Upgrade ||
-          // Ignore any non-modifiable headers...
-          header == nsHttp::Content_Location || header == nsHttp::Content_MD5 ||
-          header == nsHttp::ETag ||
-          // Assume Cache-Control: "no-transform"
-          header == nsHttp::Content_Encoding ||
-          header == nsHttp::Content_Range || header == nsHttp::Content_Type ||
-          // Ignore wacky headers too...
-          // this one is for MS servers that send "Content-Length: 0"
-          // on 304 responses
-          header == nsHttp::Content_Length);
-}
-
 void nsHttpResponseHead::UpdateHeaders(nsHttpResponseHead* aOther) {
   LOG(("nsHttpResponseHead::UpdateHeaders [this=%p]\n", this));
 
   RecursiveMutexAutoLock monitor(mRecursiveMutex);
   RecursiveMutexAutoLock monitorOther(aOther->mRecursiveMutex);
 
-  UpdateOriginalHeaders(aOther);
-
   uint32_t i, count = aOther->mHeaders.Count();
-
   for (i = 0; i < count; ++i) {
     nsHttpAtom header;
     nsAutoCString headerNameOriginal;
-    nsHttpHeaderArray::HeaderVariety variety;
-    nsAutoCString val;
 
-    if (!aOther->mHeaders.PeekHeaderAt(i, header, headerNameOriginal, variety,
-                                       val)) {
+    if (!aOther->mHeaders.PeekHeaderAt(i, header, headerNameOriginal)) {
+      continue;
+    }
+
+    nsAutoCString val;
+    if (NS_FAILED(aOther->GetHeader(header, val))) {
       continue;
     }
 
-    if (CanIgnoreResponseHeaderTypes(header)) {
+    // Ignore any hop-by-hop headers...
+    if (header == nsHttp::Connection || header == nsHttp::Proxy_Connection ||
+        header == nsHttp::Keep_Alive || header == nsHttp::Proxy_Authenticate ||
+        header == nsHttp::Proxy_Authorization ||  // not a response header!
+        header == nsHttp::TE || header == nsHttp::Trailer ||
+        header == nsHttp::Transfer_Encoding || header == nsHttp::Upgrade ||
+        // Ignore any non-modifiable headers...
+        header == nsHttp::Content_Location || header == nsHttp::Content_MD5 ||
+        header == nsHttp::ETag ||
+        // Assume Cache-Control: "no-transform"
+        header == nsHttp::Content_Encoding || header == nsHttp::Content_Range ||
+        header == nsHttp::Content_Type ||
+        // Ignore wacky headers too...
+        // this one is for MS servers that send "Content-Length: 0"
+        // on 304 responses
+        header == nsHttp::Content_Length) {
       LOG(("ignoring response header [%s: %s]\n", header.get(), val.get()));
     } else {
       LOG(("new response header [%s: %s]\n", header.get(), val.get()));
 
-      if (NS_FAILED(aOther->GetHeader(header, val))) {
-        continue;
-      }
+      // overwrite the current header value with the new value...
       DebugOnly<nsresult> rv =
-          // overwrite the current header value with the new value...
           SetHeader_locked(header, headerNameOriginal, val);
       MOZ_ASSERT(NS_SUCCEEDED(rv));
     }
   }
 }
 
 void nsHttpResponseHead::Reset() {
   LOG(("nsHttpResponseHead::Reset\n"));
--- a/netwerk/protocol/http/nsHttpResponseHead.h
+++ b/netwerk/protocol/http/nsHttpResponseHead.h
@@ -142,21 +142,20 @@ class nsHttpResponseHead {
   [[nodiscard]] nsresult GetOriginalHeader(const nsHttpAtom& aHeader,
                                            nsIHttpHeaderVisitor* aVisitor);
 
   bool HasContentType() const;
   bool HasContentCharset();
   bool GetContentTypeOptionsHeader(nsACString& aOutput) const;
 
  private:
-  [[nodiscard]] nsresult SetHeader_locked(
-      const nsHttpAtom& atom, const nsACString& h, const nsACString& v,
-      bool m = false,
-      const nsHttpHeaderArray::HeaderVariety& variety =
-          nsHttpHeaderArray::eVarietyResponse) MOZ_REQUIRES(mRecursiveMutex);
+  [[nodiscard]] nsresult SetHeader_locked(const nsHttpAtom& atom,
+                                          const nsACString& h,
+                                          const nsACString& v, bool m = false)
+      MOZ_REQUIRES(mRecursiveMutex);
   void AssignDefaultStatusText() MOZ_REQUIRES(mRecursiveMutex);
   void ParseVersion(const char*) MOZ_REQUIRES(mRecursiveMutex);
   void ParseCacheControl(const char*) MOZ_REQUIRES(mRecursiveMutex);
   void ParsePragma(const char*) MOZ_REQUIRES(mRecursiveMutex);
 
   void ParseStatusLine_locked(const nsACString& line)
       MOZ_REQUIRES(mRecursiveMutex);
   [[nodiscard]] nsresult ParseHeaderLine_locked(const nsACString& line,
@@ -194,29 +193,16 @@ class nsHttpResponseHead {
   }
 
   bool NoCache_locked() const MOZ_REQUIRES(mRecursiveMutex) {
     // We ignore Pragma: no-cache if Cache-Control is set.
     MOZ_ASSERT_IF(mCacheControlNoCache, mHasCacheControl);
     return mHasCacheControl ? mCacheControlNoCache : mPragmaNoCache;
   }
 
-  // update original response headers
-  void UpdateOriginalHeaders(nsHttpResponseHead* aOther);
-
-  // headers that can be ignored for a 304/206 response
-  bool CanIgnoreResponseHeaderTypes(const nsHttpAtom& header) const;
-
-  bool IsOriginalResponseHeader(
-      const nsHttpHeaderArray::HeaderVariety variety) const {
-    return (
-        (variety == nsHttpHeaderArray::eVarietyResponseNetOriginal) ||
-        (variety == nsHttpHeaderArray::eVarietyResponseNetOriginalAndResponse));
-  }
-
  private:
   // All members must be copy-constructable and assignable
   nsHttpHeaderArray mHeaders MOZ_GUARDED_BY(mRecursiveMutex);
   HttpVersion mVersion MOZ_GUARDED_BY(mRecursiveMutex){HttpVersion::v1_1};
   uint16_t mStatus MOZ_GUARDED_BY(mRecursiveMutex){200};
   nsCString mStatusText MOZ_GUARDED_BY(mRecursiveMutex);
   int64_t mContentLength MOZ_GUARDED_BY(mRecursiveMutex){-1};
   nsCString mContentType MOZ_GUARDED_BY(mRecursiveMutex);
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/meta/fetch/api/basic/header-value-combining.any.js.ini
@@ -0,0 +1,55 @@
+[header-value-combining.any.html]
+  [response.headers.get('heya') expects , \x0b\x0c, 1, , , 2]
+    expected: FAIL
+
+  [response.headers.get('double-trouble') expects , ]
+    expected: FAIL
+
+  [response.headers.get('www-authenticate') expects 1, 2, 3, 4]
+    expected: FAIL
+
+  [response.headers.get('content-length') expects 0, 0]
+    expected: FAIL
+
+
+[header-value-combining.any.worker.html]
+  [response.headers.get('heya') expects , \x0b\x0c, 1, , , 2]
+    expected: FAIL
+
+  [response.headers.get('double-trouble') expects , ]
+    expected: FAIL
+
+  [response.headers.get('www-authenticate') expects 1, 2, 3, 4]
+    expected: FAIL
+
+  [response.headers.get('content-length') expects 0, 0]
+    expected: FAIL
+
+
+[header-value-combining.any.serviceworker.html]
+  [response.headers.get('heya') expects , \x0b\x0c, 1, , , 2]
+    expected: FAIL
+
+  [response.headers.get('double-trouble') expects , ]
+    expected: FAIL
+
+  [response.headers.get('www-authenticate') expects 1, 2, 3, 4]
+    expected: FAIL
+
+  [response.headers.get('content-length') expects 0, 0]
+    expected: FAIL
+
+
+[header-value-combining.any.sharedworker.html]
+  [response.headers.get('heya') expects , \x0b\x0c, 1, , , 2]
+    expected: FAIL
+
+  [response.headers.get('double-trouble') expects , ]
+    expected: FAIL
+
+  [response.headers.get('www-authenticate') expects 1, 2, 3, 4]
+    expected: FAIL
+
+  [response.headers.get('content-length') expects 0, 0]
+    expected: FAIL
+
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/meta/fetch/content-length/api-and-duplicate-headers.any.js.ini
@@ -0,0 +1,15 @@
+[api-and-duplicate-headers.any.worker.html]
+  [fetch() and duplicate Content-Length/Content-Type headers]
+    expected: FAIL
+
+  [XMLHttpRequest and duplicate Content-Length/Content-Type headers]
+    expected: FAIL
+
+
+[api-and-duplicate-headers.any.html]
+  [fetch() and duplicate Content-Length/Content-Type headers]
+    expected: FAIL
+
+  [XMLHttpRequest and duplicate Content-Length/Content-Type headers]
+    expected: FAIL
+
--- a/testing/web-platform/meta/fetch/content-type/response.window.js.ini
+++ b/testing/web-platform/meta/fetch/content-type/response.window.js.ini
@@ -1,30 +1,36 @@
 [response.window.html]
   [Response: combined response Content-Type: text/plain;charset=gbk text/plain;charset=windows-1252]
     expected: FAIL
 
   [Request: combined response Content-Type: */* text/html]
     expected: FAIL
 
+  [Response: combined response Content-Type: text/html */*]
+    expected: FAIL
+
   [fetch(): separate response Content-Type: */* text/html]
     expected: FAIL
 
   [fetch(): separate response Content-Type: text/html;" text/plain]
     expected: FAIL
 
   [fetch(): separate response Content-Type: text/html;x=" text/plain]
     expected: FAIL
 
   [fetch(): combined response Content-Type: text/plain;charset=gbk text/html;charset=windows-1254]
     expected: FAIL
 
   [fetch(): combined response Content-Type: */* text/html]
     expected: FAIL
 
+  [Request: combined response Content-Type: text/html */*]
+    expected: FAIL
+
   [Request: combined response Content-Type: text/plain;charset=gbk text/plain;charset=windows-1252]
     expected: FAIL
 
   [Response: combined response Content-Type: text/plain;charset=gbk text/html]
     expected: FAIL
 
   [fetch(): combined response Content-Type: text/html;x=" text/plain]
     expected: FAIL
@@ -39,22 +45,34 @@
     expected: FAIL
 
   [Request: combined response Content-Type: text/html;charset=gbk text/plain text/html]
     expected: FAIL
 
   [<iframe>: separate response Content-Type: text/plain;charset=gbk text/html]
     expected: FAIL
 
+  [fetch(): combined response Content-Type: text/html */*;charset=gbk]
+    expected: FAIL
+
+  [fetch(): combined response Content-Type: text/plain;charset=gbk text/plain]
+    expected: FAIL
+
   [Request: combined response Content-Type: text/html text/plain]
     expected: FAIL
 
+  [Request: combined response Content-Type: text/plain */*]
+    expected: FAIL
+
   [fetch(): separate response Content-Type: text/html;charset=gbk text/plain text/html]
     expected: FAIL
 
+  [Request: combined response Content-Type: text/plain;charset=gbk text/plain]
+    expected: FAIL
+
   [fetch(): combined response Content-Type: text/plain;charset=gbk text/html]
     expected: FAIL
 
   [fetch(): combined response Content-Type: text/html;" text/plain]
     expected: FAIL
 
   [Response: combined response Content-Type: text/html text/plain]
     expected: FAIL
@@ -63,19 +81,28 @@
     expected: FAIL
 
   [fetch(): separate response Content-Type: text/plain;charset=gbk text/plain;charset=windows-1252]
     expected: FAIL
 
   [Request: combined response Content-Type: text/html;x=" text/plain]
     expected: FAIL
 
+  [Response: combined response Content-Type: text/plain */*]
+    expected: FAIL
+
+  [Request: combined response Content-Type: text/html */*;charset=gbk]
+    expected: FAIL
+
   [Response: combined response Content-Type: text/html;x=" text/plain]
     expected: FAIL
 
+  [fetch(): combined response Content-Type: text/html */*]
+    expected: FAIL
+
   [Response: combined response Content-Type: text/html;" text/plain]
     expected: FAIL
 
   [<iframe>: separate response Content-Type: text/html;x=" text/plain]
     expected: FAIL
 
   [Request: combined response Content-Type: text/plain;charset=gbk text/html;charset=windows-1254]
     expected: FAIL
@@ -99,43 +126,70 @@
     expected: FAIL
 
   [fetch(): separate response Content-Type: text/plain;charset=gbk text/html]
     expected: FAIL
 
   [fetch(): combined response Content-Type: text/html;charset=gbk text/html;x=",text/plain]
     expected: FAIL
 
+  [fetch(): combined response Content-Type: text/plain */*]
+    expected: FAIL
+
+  [Request: combined response Content-Type: text/plain */*;charset=gbk]
+    expected: FAIL
+
   [fetch(): separate response Content-Type: text/plain;charset=gbk text/html;charset=windows-1254]
     expected: FAIL
 
+  [fetch(): combined response Content-Type: text/plain */*;charset=gbk]
+    expected: FAIL
+
   [fetch(): combined response Content-Type: text/plain;charset=gbk text/plain;charset=windows-1252]
     expected: FAIL
 
+  [Response: combined response Content-Type: text/plain;charset=gbk text/plain]
+    expected: FAIL
+
   [fetch(): separate response Content-Type: text/html text/plain]
     expected: FAIL
 
   [Request: combined response Content-Type: text/html;" text/plain]
     expected: FAIL
 
+  [Response: combined response Content-Type: text/plain */*;charset=gbk]
+    expected: FAIL
+
   [Request: combined response Content-Type: text/html;charset=gbk text/html;x=",text/plain]
     expected: FAIL
 
+  [Response: combined response Content-Type: text/html */*;charset=gbk]
+    expected: FAIL
+
+  [fetch(): combined response Content-Type: text/plain ]
+    expected: FAIL
+
+  [Response: combined response Content-Type: text/plain ]
+    expected: FAIL
+
   [fetch(): separate response Content-Type:  text/plain]
     expected: FAIL
 
   [Response: combined response Content-Type:  text/plain]
     expected: FAIL
 
   [Request: combined response Content-Type:  text/plain]
     expected: FAIL
 
   [fetch(): combined response Content-Type:  text/plain]
     expected: FAIL
 
+  [Request: combined response Content-Type: text/plain ]
+    expected: FAIL
+
   [fetch(): separate response Content-Type: text/html;" \\" text/plain]
     expected: FAIL
 
   [fetch(): combined response Content-Type: text/html;" \\" text/plain]
     expected: FAIL
 
   [Request: combined response Content-Type: text/html;" \\" text/plain]
     expected: FAIL
--- a/testing/web-platform/meta/mimesniff/mime-types/parsing.any.js.ini
+++ b/testing/web-platform/meta/mimesniff/mime-types/parsing.any.js.ini
@@ -1,312 +1,666 @@
 [parsing.any.html]
+  [¯/x (Request/Response)]
+    expected: FAIL
+
+  [>/x (Request/Response)]
+    expected: FAIL
+
+  [Ë/x (Request/Response)]
+    expected: FAIL
+
+  [\x02/x (Request/Response)]
+    expected: FAIL
+
   [x/x;\n\r\t x=x\n\r\t ;x=y (Blob/File)]
     expected: FAIL
 
   [x/x;x=Ò;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=œ;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=ø;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="„";bonus=x (Blob/File)]
     expected: FAIL
 
+  ["/x (Request/Response)]
+    expected: FAIL
+
   [x/\\ (Blob/File)]
     expected: FAIL
 
   [x/x;x=¥;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="È";bonus=x (Blob/File)]
     expected: FAIL
 
   [x/( (Blob/File)]
     expected: FAIL
 
+  [x/x;test="\\ (Request/Response)]
+    expected: FAIL
+
+  [x/“ (Request/Response)]
+    expected: FAIL
+
   [x/x;x="’";bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/Î (Request/Response)]
+    expected: FAIL
+
+  [ã/x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=Á;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="Á";bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x=;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="Ç";bonus=x (Blob/File)]
     expected: FAIL
 
   [;/x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=[;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=\x1f;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x="\x1c";bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/Æ (Request/Response)]
+    expected: FAIL
+
   [x/x;(=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/\x12 (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=ó;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/ë (Request/Response)]
+    expected: FAIL
+
   [x/x;x="×";bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=Å;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [Ã/x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=Î;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;ñ=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;\\=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x=•;bonus=x (Blob/File)]
     expected: FAIL
 
+  [\x1a/x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=”;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x="\x0e";bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/€ (Request/Response)]
+    expected: FAIL
+
+  [x/” (Request/Response)]
+    expected: FAIL
+
+  [È/x (Request/Response)]
+    expected: FAIL
+
+  [™/x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=¨;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x="À";bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x=\x18;bonus=x (Blob/File)]
     expected: FAIL
 
+  [\x1e/x (Request/Response)]
+    expected: FAIL
+
+  [x/x;Ë=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;Ý=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [text/html;charset={gbk} (Blob/File)]
     expected: FAIL
 
   [x/x;x="¢";bonus=x (Blob/File)]
     expected: FAIL
 
   [x/\n (Request/Response)]
     expected: FAIL
 
   [x/x;x=¡;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/ (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=À;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x="–";bonus=x (Blob/File)]
     expected: FAIL
 
+  [“/x (Request/Response)]
+    expected: FAIL
+
+  [x/‡ (Request/Response)]
+    expected: FAIL
+
+  [x/" (Request/Response)]
+    expected: FAIL
+
   [x/x;x="¾";bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x=\x08;bonus=x (Blob/File)]
     expected: FAIL
 
   [text/html;charset=";charset=foo";charset=GBK (Blob/File)]
     expected: FAIL
 
   [x/x;Ñ=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [TEXT/HTML;CHARSET=GBK (Blob/File)]
     expected: FAIL
 
+  [text/html;charset="\\ gbk" (Request/Response)]
+    expected: FAIL
+
+  [x/x;é=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=–;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;•=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=ý;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="†";bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="á";bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x=",";bonus=x (Request/Response)]
     expected: FAIL
 
+  [x/x;ï=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [Ù/x (Request/Response)]
+    expected: FAIL
+
   [x/x;ä=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/ž (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=\x0e;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/ (Request/Response)]
+    expected: FAIL
+
+  [x/x;å=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;²=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;à=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [{/} (Request/Response)]
+    expected: FAIL
+
   [x/x;\x18=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x=¸;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x=,;bonus=x (Request/Response)]
     expected: FAIL
 
   [text/html;charset=";charset=GBK (Blob/File)]
     expected: FAIL
 
+  [x/\x19 (Request/Response)]
+    expected: FAIL
+
+  [\x0e/x (Request/Response)]
+    expected: FAIL
+
   [x/x;†=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="µ";bonus=x (Blob/File)]
     expected: FAIL
 
+  [É/x (Request/Response)]
+    expected: FAIL
+
+  [x/x;\t=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;test (Request/Response)]
     expected: FAIL
 
   [x/x;x=Ø;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;Õ=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/\x11 (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=Û;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x="Ð";bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/< (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=€;bonus=x (Request/Response)]
+    expected: FAIL
+
   [(/) (Blob/File)]
     expected: FAIL
 
+  [x/x;Â=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [î/x (Request/Response)]
+    expected: FAIL
+
+  [x/x;¡=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;˜=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;²=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/ó (Request/Response)]
+    expected: FAIL
+
+  [x/x;x="\x01";bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=Ý;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;ž=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/ã (Request/Response)]
+    expected: FAIL
+
   [x/x;x="”";bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;Œ=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x="\x12";bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=Ñ;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [þ/x (Request/Response)]
+    expected: FAIL
+
   [x/x;½=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x=½;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=¦;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [‘/x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=¾;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/} (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=ë;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x="ƒ";bonus=x (Blob/File)]
     expected: FAIL
 
   [\]/x (Blob/File)]
     expected: FAIL
 
   [x/x;x="\x14";bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;ž=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;’=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x="\x02";bonus=x (Blob/File)]
     expected: FAIL
 
+  [ý/x (Request/Response)]
+    expected: FAIL
+
+  [/x (Request/Response)]
+    expected: FAIL
+
+  [x/Í (Request/Response)]
+    expected: FAIL
+
+  [¶/x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=„;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [×/x (Request/Response)]
+    expected: FAIL
+
+  [—/x (Request/Response)]
+    expected: FAIL
+
+  [</> (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=ú;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=³;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="‹";bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/ˆ (Request/Response)]
+    expected: FAIL
+
   [x/x;:=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;…=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="²";bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;ó=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [±/x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=Ý;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/Ï (Request/Response)]
+    expected: FAIL
+
   [bogus/ (Blob/File)]
     expected: FAIL
 
+  [x/x;x=\x15;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/  (Request/Response)]
+    expected: FAIL
+
+  [x/µ (Request/Response)]
+    expected: FAIL
+
   [x/x;“=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;™=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="¸";bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;™=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;Ä=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [text/html;\x0bcharset=gbk (Request/Response)]
     expected: FAIL
 
   [x/x;x=;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x="\x06";bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;ª=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="\x06";bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;¹=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/Ÿ (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=«;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/ƒ (Request/Response)]
+    expected: FAIL
+
   [x/x;Á=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x=è;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=†;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;ƒ=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [text/html ; ; charset=gbk (Blob/File)]
     expected: FAIL
 
+  [\x18/x (Request/Response)]
+    expected: FAIL
+
   [x/x;¡=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;´=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x\n\r\t ;x=x (Blob/File)]
     expected: FAIL
 
   [x/x;Ã=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="\x16";bonus=x (Blob/File)]
     expected: FAIL
 
+  [\x04/x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=à;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x=æ;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x=\x13;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=–;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;)=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=Æ;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/< (Blob/File)]
     expected: FAIL
 
   [x/x;Ê=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="Í";bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x=\x14;bonus=x (Blob/File)]
     expected: FAIL
 
+  ["text/html" (Request/Response)]
+    expected: FAIL
+
+  [\t/x (Request/Response)]
+    expected: FAIL
+
+  [x/ò (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=”;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;í=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x=Ž;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/\x1a (Request/Response)]
+    expected: FAIL
+
+  [text/html;charset="gbk (Request/Response)]
+    expected: FAIL
+
   [x/x;ð=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=Š;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [{/x (Request/Response)]
+    expected: FAIL
+
+  [x/x;\x04=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [:/x (Blob/File)]
     expected: FAIL
 
   [x/x;æ=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/É (Request/Response)]
+    expected: FAIL
+
+  [x/x;Ñ=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=Ç;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x="¬";bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;\x1e=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/æ (Request/Response)]
+    expected: FAIL
+
   [bogus/bogus/; (Blob/File)]
     expected: FAIL
 
   [x/x;x=  (Blob/File)]
     expected: FAIL
 
+  [x/\x18 (Request/Response)]
+    expected: FAIL
+
+  [x/¯ (Request/Response)]
+    expected: FAIL
+
+  [Ô/x (Request/Response)]
+    expected: FAIL
+
   [x/x;ò=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="Ž";bonus=x (Blob/File)]
     expected: FAIL
 
+  [ø/x (Request/Response)]
+    expected: FAIL
+
   [x/x;x="\x04";bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;Ú=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;Ž=x;bonus=x (Blob/File)]
     expected: FAIL
@@ -321,724 +675,1672 @@
     expected: FAIL
 
   [x/x;x=:;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="\x13";bonus=x (Blob/File)]
     expected: FAIL
 
+  [Ý/x (Request/Response)]
+    expected: FAIL
+
   [x/x;x="";bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/© (Request/Response)]
+    expected: FAIL
+
   [x/x;x=›;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=ä;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=è;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=Ž;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;å=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;test=�;x=x (Blob/File)]
     expected: FAIL
 
   [x/x;ü=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;Í=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;\x02=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/· (Request/Response)]
+    expected: FAIL
+
+  [text/html;charset="";charset=GBK (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=Â;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x="\x1b";bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;†=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/è (Request/Response)]
+    expected: FAIL
+
+  [x/x;¦=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x="\x19";bonus=x (Request/Response)]
+    expected: FAIL
+
+  [·/x (Request/Response)]
+    expected: FAIL
+
   [x/x;¸=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x=…;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=®;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/î (Request/Response)]
+    expected: FAIL
+
+  [x/¶ (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=\x19;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/ý (Request/Response)]
+    expected: FAIL
+
   [x/x;x="Ÿ";bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=(;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x="\x0f";bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x="ú";bonus=x (Blob/File)]
     expected: FAIL
 
   [text/html;charset=\x0bgbk (Request/Response)]
     expected: FAIL
 
+  [Ü/x (Request/Response)]
+    expected: FAIL
+
+  [x/x;ß=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/" (Blob/File)]
     expected: FAIL
 
   [x/x;x=‹;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;¬=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=\x13;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/À (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=\x05;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/È (Request/Response)]
+    expected: FAIL
+
+  [x/¢ (Request/Response)]
+    expected: FAIL
+
+  [x/x;¶=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=\x02;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;\x1d=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;ï=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;Ð=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/\x1e (Request/Response)]
+    expected: FAIL
+
   [x/x;x="‚";bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x=Â;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;ø=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [\x14/x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=Œ;bonus=x (Blob/File)]
     expected: FAIL
 
+  [õ/x (Request/Response)]
+    expected: FAIL
+
+  [x/x;Ô=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=\x12;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/\x03 (Request/Response)]
+    expected: FAIL
+
   [x/x;x=’;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/± (Request/Response)]
+    expected: FAIL
+
   [x/x;x=¨;bonus=x (Blob/File)]
     expected: FAIL
 
+  [\x1b/x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=å;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;“=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;\\=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;\x10=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [text/html;charset="gbk (Blob/File)]
     expected: FAIL
 
+  [x/ß (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=\x11;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=\x07;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=Ã;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=};bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="¯";bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;ˆ=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [ü/x (Request/Response)]
+    expected: FAIL
+
+  [x/x;ý=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;©=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [text/html;charset=gbk( (Request/Response)]
+    expected: FAIL
+
   [x/x;ñ=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;±=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;õ=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=\x0c;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;\x14=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;Ô=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x="\x17";bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=š;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="³";bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=);bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/Ù (Request/Response)]
+    expected: FAIL
+
+  [à/x (Request/Response)]
+    expected: FAIL
+
   [x/x;x="Ä";bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="©";bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x=Æ;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="\x1e";bonus=x (Blob/File)]
     expected: FAIL
 
+  [Å/x (Request/Response)]
+    expected: FAIL
+
+  [x/\x17 (Request/Response)]
+    expected: FAIL
+
+  [x/\x1f (Request/Response)]
+    expected: FAIL
+
   [x/x;\x03=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/Ò (Request/Response)]
+    expected: FAIL
+
   [x/x;x=È;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="™";bonus=x (Blob/File)]
     expected: FAIL
 
+  [‚/x (Request/Response)]
+    expected: FAIL
+
+  [text/html;test;charset=gbk (Request/Response)]
+    expected: FAIL
+
+  [â/x (Request/Response)]
+    expected: FAIL
+
+  [x/ (Request/Response)]
+    expected: FAIL
+
   [x/x;x="\x18";bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/ÿ (Request/Response)]
+    expected: FAIL
+
+  [x/x;\x0c=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;±=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;›=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;\x06=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;‰=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;˜=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x="\x1e";bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=ñ;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/« (Request/Response)]
+    expected: FAIL
+
   [x/x;x=\x00;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/\x08 (Request/Response)]
+    expected: FAIL
+
   [x/x;x="\x0f";bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=¹;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/\\ (Request/Response)]
+    expected: FAIL
+
   [\r/x (Request/Response)]
     expected: FAIL
 
+  [ò/x (Request/Response)]
+    expected: FAIL
+
+  [x/x;ª=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [¦/x (Request/Response)]
+    expected: FAIL
+
   ["/x (Blob/File)]
     expected: FAIL
 
   [x/x;x="»";bonus=x (Blob/File)]
     expected: FAIL
 
+  [(/x (Request/Response)]
+    expected: FAIL
+
+  [x/x;œ=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;ù=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=ø;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;¿=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=æ;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [š/x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x= ;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/´ (Request/Response)]
+    expected: FAIL
+
   [x/x;x=ž;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x=ç;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="Ñ";bonus=x (Blob/File)]
     expected: FAIL
 
   [text/html(;doesnot=matter (Blob/File)]
     expected: FAIL
 
   [x/x;x="\x12";bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/ª (Request/Response)]
+    expected: FAIL
+
+  [ƒ/x (Request/Response)]
+    expected: FAIL
+
   [x/x;­=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [text/html;';charset=gbk (Request/Response)]
+    expected: FAIL
+
+  [x/é (Request/Response)]
+    expected: FAIL
+
   [x/x;›=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/\x0e (Request/Response)]
+    expected: FAIL
+
+  [x/x;Æ=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;\x14=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;\x01=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;Â=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="§";bonus=x (Blob/File)]
     expected: FAIL
 
+  [’/x (Request/Response)]
+    expected: FAIL
+
   [x/{ (Blob/File)]
     expected: FAIL
 
   [x/x;x="Ó";bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/\x05 (Request/Response)]
+    expected: FAIL
+
   [x/x;„=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [³/x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=£;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;Ü=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=Á;bonus=x (Request/Response)]
+    expected: FAIL
+
   [{/x (Blob/File)]
     expected: FAIL
 
   [x/x;\n=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/¼ (Request/Response)]
+    expected: FAIL
+
+  [x/( (Request/Response)]
+    expected: FAIL
+
   [x/x;õ=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x=Ô;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="Ë";bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/Û (Request/Response)]
+    expected: FAIL
+
+  [x/x;…=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;¤=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [ç/x (Request/Response)]
+    expected: FAIL
+
+  [x/ (Request/Response)]
+    expected: FAIL
+
   [x/x;=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/‹ (Request/Response)]
+    expected: FAIL
+
   [x/x;x=‚;bonus=x (Blob/File)]
     expected: FAIL
 
   [text/html;\x0bcharset=gbk (Blob/File)]
     expected: FAIL
 
+  [x/x;?=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [\x08/x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=€;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;\x12=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [/x (Request/Response)]
+    expected: FAIL
+
   [x/x;,=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [Þ/x (Request/Response)]
+    expected: FAIL
+
+  [text/html(;doesnot=matter (Request/Response)]
+    expected: FAIL
+
   [x/x;x=<;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x=\x16;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;ÿ=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;Î=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;ß=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [Ì/x (Request/Response)]
+    expected: FAIL
+
   [x/x;x="÷";bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x=Š;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=Ê;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x="Ý";bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;ã=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/? (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=¡;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x="Ê";bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=É;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/> (Request/Response)]
+    expected: FAIL
+
   [x/x;x=\];bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;Ø=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=\x0f;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=…;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;/=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=>;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/@ (Blob/File)]
     expected: FAIL
 
   [x/x;x=á;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=Þ;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;Ò=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=°;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=î;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [/x (Request/Response)]
+    expected: FAIL
+
   [x/x;»=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [text/html;charset=';charset=GBK (Request/Response)]
+    expected: FAIL
+
   [x/x;x=²;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/; (Blob/File)]
     expected: FAIL
 
+  [x/¿ (Request/Response)]
+    expected: FAIL
+
+  [x/x;x="\x15";bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;\x19=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;î=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [bogus/  (Blob/File)]
     expected: FAIL
 
+  [÷/x (Request/Response)]
+    expected: FAIL
+
+  [x/x;\x17=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x="Ã";bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;¹=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="“";bonus=x (Blob/File)]
     expected: FAIL
 
+  [„/x (Request/Response)]
+    expected: FAIL
+
+  [Í/x (Request/Response)]
+    expected: FAIL
+
   [text/html;;;;charset=gbk (Blob/File)]
     expected: FAIL
 
+  [\x16/x (Request/Response)]
+    expected: FAIL
+
+  [x/\x0c (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=þ;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x="‰";bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=±;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;\x16=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/™ (Request/Response)]
+    expected: FAIL
+
   [x/x;x="£";bonus=x (Blob/File)]
     expected: FAIL
 
   [\n\r\t x/x;x=x\n\r\t  (Request/Response)]
     expected: FAIL
 
+  [x/x;ø=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [!#$%&'*+-.^_`|~0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz/!#$%&'*+-.^_`|~0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz;!#$%&'*+-.^_`|~0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz=!#$%&'*+-.^_`|~0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz (Blob/File)]
     expected: FAIL
 
+  [º/x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x="\x16";bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;°=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x=\x0f;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;Š=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;{=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/Ê (Request/Response)]
+    expected: FAIL
+
   [x/x;x=(;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/  (Blob/File)]
     expected: FAIL
 
   [x/x;x="·";bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=\x03;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=ô;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/÷ (Request/Response)]
+    expected: FAIL
+
+  [x/Ë (Request/Response)]
+    expected: FAIL
+
+  [x/x;Õ=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [\x07/x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=\x01;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/» (Request/Response)]
+    expected: FAIL
+
   [x/x;x="°";bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;ö=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [‡/x (Request/Response)]
+    expected: FAIL
+
+  [x/x;‡=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [text/html;charset=";charset=foo";charset=GBK (Request/Response)]
     expected: FAIL
 
   [x/x;x="ß";bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/Þ (Request/Response)]
+    expected: FAIL
+
   [x/x;x=—;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x=\x05;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x=\x04;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=¼;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [Æ/x (Request/Response)]
+    expected: FAIL
+
+  [Ç/x (Request/Response)]
+    expected: FAIL
+
+  [x/º (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=à;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;\x0c=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="—";bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;>=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x==;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=­;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="½";bonus=x (Blob/File)]
     expected: FAIL
 
+  [}/x (Request/Response)]
+    expected: FAIL
+
+  [æ/x (Request/Response)]
+    expected: FAIL
+
   [x/x;\x00=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [\]/x (Request/Response)]
+    expected: FAIL
+
+  [°/x (Request/Response)]
+    expected: FAIL
+
+  [ê/x (Request/Response)]
+    expected: FAIL
+
+  [text/html;charset= "gbk" (Request/Response)]
+    expected: FAIL
+
   [x/x;x=‰;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x=\x06;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x=‘;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/Ä (Request/Response)]
+    expected: FAIL
+
+  [x/x;Ó=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x="ð";bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;Ì=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x=ô;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;\r=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=Ô;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x="Ï";bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/@ (Request/Response)]
+    expected: FAIL
+
   [x/x;x="ø";bonus=x (Blob/File)]
     expected: FAIL
 
+  [À/x (Request/Response)]
+    expected: FAIL
+
+  [x/ô (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=¸;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/\x1d (Request/Response)]
+    expected: FAIL
+
   [x/x;x="Î";bonus=x (Blob/File)]
     expected: FAIL
 
+  [\x06/x (Request/Response)]
+    expected: FAIL
+
+  [ú/x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=•;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x="´";bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="Ü";bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x=Ð;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/\x1c (Request/Response)]
+    expected: FAIL
+
   [x/x;x="Þ";bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;\x04=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [bogus/  (Request/Response)]
+    expected: FAIL
+
+  [¥/x (Request/Response)]
+    expected: FAIL
+
   [text/html;";charset=gbk (Blob/File)]
     expected: FAIL
 
+  [Î/x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=Ü;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;Ù=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x=Ê;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="ì";bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x=Ä;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/\t (Request/Response)]
+    expected: FAIL
+
+  [text/html; charset=gbk (Request/Response)]
+    expected: FAIL
+
+  [\x19/x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=ƒ;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [á/x (Request/Response)]
+    expected: FAIL
+
   [x/x;x="\x03";bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;¯=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=²;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=;bonus=x (Blob/File)]
     expected: FAIL
 
   [{/} (Blob/File)]
     expected: FAIL
 
   [x/x;x="\x19";bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=‚;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/í (Request/Response)]
+    expected: FAIL
+
+  [x/x;Ž=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;Ÿ=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;ô=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;þ=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [¾/x (Request/Response)]
+    expected: FAIL
+
   [x/} (Blob/File)]
     expected: FAIL
 
+  [x/x;â=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;Š=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;Á=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [/ (Blob/File)]
     expected: FAIL
 
+  [x/x;x=¥;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [Û/x (Request/Response)]
+    expected: FAIL
+
   [x/x;‘=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/§ (Request/Response)]
+    expected: FAIL
+
   [x/x;x=É;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=—;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;¦=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="ž";bonus=x (Blob/File)]
     expected: FAIL
 
+  [¸/x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=/;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/\x13 (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=÷;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=’;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;ð=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x="É";bonus=x (Blob/File)]
     expected: FAIL
 
   [text/html;charset= gbk (Blob/File)]
     expected: FAIL
 
+  [x/– (Request/Response)]
+    expected: FAIL
+
+  [x/x;x="\x1a";bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;\x1f=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=\x1c;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;‹=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [text/html;charset=";charset=GBK (Request/Response)]
     expected: FAIL
 
+  [Ò/x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=õ;bonus=x (Request/Response)]
+    expected: FAIL
+
   [text/html;charset="";charset=GBK (Blob/File)]
     expected: FAIL
 
+  [x/x;Ÿ=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;·=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=“;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [¨/x (Request/Response)]
+    expected: FAIL
+
+  [x/x;[=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;\x18=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;ú=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;ç=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [\x0f/x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=­;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;@=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [:/x (Request/Response)]
+    expected: FAIL
+
+  [x/x;\x1d=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=Ã;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="œ";bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="\x07";bonus=x (Blob/File)]
     expected: FAIL
 
+  [\x0b/x (Request/Response)]
+    expected: FAIL
+
+  [x/x;ú=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=§;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x=¯;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;ê=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;\x10=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [@/x (Request/Response)]
+    expected: FAIL
+
+  [bogus/ (Request/Response)]
+    expected: FAIL
+
   [text/html;charset=gbk" (Blob/File)]
     expected: FAIL
 
+  [x/Ú (Request/Response)]
+    expected: FAIL
+
+  [)/x (Request/Response)]
+    expected: FAIL
+
   [x/x;\x12=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/ú (Request/Response)]
+    expected: FAIL
+
   [x/x;x="ÿ";bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;Ý=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;©=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=Ó;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=@;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [¤/x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=ð;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x="å";bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;\x1b=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;\x03=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x="è";bonus=x (Blob/File)]
     expected: FAIL
 
   [text/html;charset="gbk"x (Blob/File)]
     expected: FAIL
 
+  [Ê/x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x="\x1d";bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/ð (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=³;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=¤;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;<=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x=\x1e;bonus=x (Blob/File)]
     expected: FAIL
 
+  [text/html;charset="gbk"x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=Ë;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;\x05=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [\x05/x (Request/Response)]
+    expected: FAIL
+
+  [Ÿ/x (Request/Response)]
+    expected: FAIL
+
   [x/x;Ö=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;Ø=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [ž/x (Request/Response)]
+    expected: FAIL
+
   [x/x;x="¨";bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;ô=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x="€";bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x=ã;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;Ü=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [ˆ/x (Request/Response)]
+    expected: FAIL
+
+  [\x12/x (Request/Response)]
+    expected: FAIL
+
+  [˜/x (Request/Response)]
+    expected: FAIL
+
   [x/x;¾=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [(/) (Request/Response)]
+    expected: FAIL
+
+  [ /x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=\];bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/š (Request/Response)]
+    expected: FAIL
+
+  [x/ü (Request/Response)]
+    expected: FAIL
+
+  [x/x;Å=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;Ð=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [text/html;charset={gbk} (Request/Response)]
+    expected: FAIL
+
   [x/x;x=¼;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="Ú";bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;§=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;\x0b=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x=©;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;\x0b=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/ (Request/Response)]
+    expected: FAIL
+
+  [x/x;µ=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=ß;bonus=x (Blob/File)]
     expected: FAIL
 
+  [½/x (Request/Response)]
+    expected: FAIL
+
+  [´/x (Request/Response)]
+    expected: FAIL
+
   [x/x;x="";bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/ö (Request/Response)]
+    expected: FAIL
+
   [x/x;\x15=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [text/html;charset="\\g\\b\\k" (Blob/File)]
     expected: FAIL
 
+  [x/x;x=©;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x="ã";bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=/;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [ë/x (Request/Response)]
+    expected: FAIL
+
   [x/\r (Request/Response)]
     expected: FAIL
 
   [x/x;x=“;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x=\x0b;bonus=x (Blob/File)]
     expected: FAIL
 
   [text/html;test;charset=gbk (Blob/File)]
     expected: FAIL
 
+  [x/x;û=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;À=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="\x0e";bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;¿=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=þ;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;á=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [bogus/bogus/; (Request/Response)]
+    expected: FAIL
+
+  [\x17/x (Request/Response)]
+    expected: FAIL
+
   [x/x;\x1c=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;\x11=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=¬;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x="\x10";bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/‘ (Request/Response)]
+    expected: FAIL
+
+  [x/x;=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [\x10/x (Request/Response)]
+    expected: FAIL
+
   [x/x;x="¹";bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;ó=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;\x1b=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;‡=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [œ/x (Request/Response)]
+    expected: FAIL
+
   [x/x; =x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=Ú;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=\x15;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;î=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x={;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x=¿;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;¨=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;Ã=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [;/x (Request/Response)]
+    expected: FAIL
+
+  [Ñ/x (Request/Response)]
+    expected: FAIL
+
+  [x/× (Request/Response)]
+    expected: FAIL
+
   [x/x;x=\x1b;bonus=x (Blob/File)]
     expected: FAIL
 
   ["text/html" (Blob/File)]
     expected: FAIL
 
+  [x/Ž (Request/Response)]
+    expected: FAIL
+
   [x/x;÷=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/þ (Request/Response)]
+    expected: FAIL
+
+  [ß/x (Request/Response)]
+    expected: FAIL
+
+  [x/x;\x1c=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [¡/x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=\r;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="¶";bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="\x0c";bonus=x (Blob/File)]
     expected: FAIL
 
+  [¹/x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=ù;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;\x01=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/Â (Request/Response)]
+    expected: FAIL
+
+  [x/¨ (Request/Response)]
+    expected: FAIL
+
   [x/x;)=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [\x13/x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=\x1c;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;¨=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;‰=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=\x0b;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=Ÿ;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/ç (Request/Response)]
+    expected: FAIL
+
+  [x/x;þ=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/… (Request/Response)]
+    expected: FAIL
+
   [x/x;x=‡;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="Â";bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=È;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;æ=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;¼=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x="±";bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;¥=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=\x02;bonus=x (Blob/File)]
     expected: FAIL
 
   [)/x (Blob/File)]
     expected: FAIL
 
+  [x/Ç (Request/Response)]
+    expected: FAIL
+
+  [x/x;\x16=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [Š/x (Request/Response)]
+    expected: FAIL
+
   [x/x;·=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="Š";bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="®";bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/Ñ (Request/Response)]
+    expected: FAIL
+
   [x/x;¢=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [!#$%&'*+-.^_`|~0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz/!#$%&'*+-.^_`|~0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz;!#$%&'*+-.^_`|~0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz=!#$%&'*+-.^_`|~0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz (Request/Response)]
     expected: FAIL
 
   [x/x;x=¹;bonus=x (Blob/File)]
     expected: FAIL
@@ -1050,157 +2352,337 @@
     expected: FAIL
 
   [x/> (Blob/File)]
     expected: FAIL
 
   [text/html;charset=';charset=GBK (Blob/File)]
     expected: FAIL
 
+  [x/x;x=ç;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x="\x10";bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x; =x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [ù/x (Request/Response)]
+    expected: FAIL
+
   [x/x;\x17=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;Ë=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;test (Blob/File)]
     expected: FAIL
 
   [x/x;\x05=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x=\n;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=Ì;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [û/x (Request/Response)]
+    expected: FAIL
+
+  [x/x\x0b (Request/Response)]
+    expected: FAIL
+
   [x/x;x="Û";bonus=x (Blob/File)]
     expected: FAIL
 
+  [text/html;charset=();charset=GBK (Request/Response)]
+    expected: FAIL
+
   [x/x;x=»;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/) (Request/Response)]
+    expected: FAIL
+
+  [ó/x (Request/Response)]
+    expected: FAIL
+
   [x/x;x="­";bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;\x08=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;–=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [è/x (Request/Response)]
+    expected: FAIL
+
+  [å/x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=‘;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/\x15 (Request/Response)]
+    expected: FAIL
+
   [text/html;charset=gbk;charset=windows-1255 (Blob/File)]
     expected: FAIL
 
   [x/x;Æ=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/å (Request/Response)]
+    expected: FAIL
+
+  [\x11/x (Request/Response)]
+    expected: FAIL
+
+  [Ð/x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=¢;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x="¦";bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/ø (Request/Response)]
+    expected: FAIL
+
   [x/x;x=\t (Blob/File)]
     expected: FAIL
 
   [x/x;[=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;–=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [/x (Request/Response)]
+    expected: FAIL
+
   [x/x;Î=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/¡ (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=ü;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [ï/x (Request/Response)]
+    expected: FAIL
+
   [x/x;test="\\ (Blob/File)]
     expected: FAIL
 
+  [x/x;x=\x1d;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;\x07=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=\x1f;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;à=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=\x18;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;µ=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;—=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [¿/x (Request/Response)]
+    expected: FAIL
+
+  [x/\x10 (Request/Response)]
+    expected: FAIL
+
   [x/x;è=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;Ó=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [text/html;test=ÿ;charset=gbk (Request/Response)]
+    expected: FAIL
+
+  [x/x;\]=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=ž;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;â=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [§/x (Request/Response)]
+    expected: FAIL
+
+  [\x15/x (Request/Response)]
+    expected: FAIL
+
+  [ª/x (Request/Response)]
+    expected: FAIL
+
+  [x/x;º=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;\x1e=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;ì=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x=ì;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=?;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;ÿ=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [ /x (Blob/File)]
     expected: FAIL
 
   [x/x;x=\x0e;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/\x06 (Request/Response)]
+    expected: FAIL
+
+  [ô/x (Request/Response)]
+    expected: FAIL
+
+  [x/‰ (Request/Response)]
+    expected: FAIL
+
+  [x/x;ä=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;«=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [text/html;charset="gbk" (Blob/File)]
     expected: FAIL
 
+  [x/x;¤=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [«/x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=ú;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/{ (Request/Response)]
+    expected: FAIL
+
   [x/x;x=÷;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x="\x11";bonus=x (Request/Response)]
+    expected: FAIL
+
+  [text/html;charset="gbk" (Request/Response)]
+    expected: FAIL
+
   [x/x;x="ç";bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;¼=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=ß;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;\x13=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/ì (Request/Response)]
+    expected: FAIL
+
   [x/x;x="š";bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x=Ü;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=á;bonus=x (Request/Response)]
+    expected: FAIL
+
   [[/x (Blob/File)]
     expected: FAIL
 
+  [x/½ (Request/Response)]
+    expected: FAIL
+
+  [¬/x (Request/Response)]
+    expected: FAIL
+
   [x/x;x="ˆ";bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x=ë;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=Ø;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x="\x1a";bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x=õ;bonus=x (Blob/File)]
     expected: FAIL
 
+  [ä/x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=º;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;—=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x={;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;ƒ=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [text/html;;;;charset=gbk (Request/Response)]
+    expected: FAIL
+
   [x/x;ê=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [Œ/x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x="";bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=ü;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x=[;bonus=x (Blob/File)]
     expected: FAIL
 
   [?/x (Blob/File)]
     expected: FAIL
@@ -1227,457 +2709,1027 @@
     expected: FAIL
 
   [x/x;‹=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="";bonus=x (Blob/File)]
     expected: FAIL
 
+  [•/x (Request/Response)]
+    expected: FAIL
+
+  [Ó/x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=Ï;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x="\x05";bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;Þ=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x="ö";bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x=" ";bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x=«;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;@=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;\x0e=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/\] (Request/Response)]
+    expected: FAIL
+
   [x/x;x=\x1a;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=Œ;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x="˜";bonus=x (Blob/File)]
     expected: FAIL
 
+  [Ö/x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x="\x0b";bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/ (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=½;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/Ü (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=Ä;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/Ö (Request/Response)]
+    expected: FAIL
+
+  [x/x;\x19=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [text/html;charset="\\ gbk" (Blob/File)]
     expected: FAIL
 
+  [x/x;É=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=Ñ;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;\t=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;‘=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x="þ";bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/; (Request/Response)]
+    expected: FAIL
+
+  [x/x;Ì=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [\\/x (Blob/File)]
     expected: FAIL
 
+  [x/¥ (Request/Response)]
+    expected: FAIL
+
+  [x/à (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=ö;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x="ª";bonus=x (Blob/File)]
     expected: FAIL
 
+  [µ/x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x="\x04";bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x="";bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="û";bonus=x (Blob/File)]
     expected: FAIL
 
+  [text/html;x=(;charset=gbk (Request/Response)]
+    expected: FAIL
+
+  [x/x;ü=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=À;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;?=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;½=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x= ;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;£=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x="…";bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="\t !\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ" (Request/Response)]
     expected: FAIL
 
   [x/x;Þ=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x=µ;bonus=x (Blob/File)]
     expected: FAIL
 
+  [/ (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=˜;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=  (Request/Response)]
     expected: FAIL
 
   [x/x;x="‡";bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=ò;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/† (Request/Response)]
+    expected: FAIL
+
   [x/x;}=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;Ò=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;š=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=};bonus=x (Request/Response)]
+    expected: FAIL
+
   [text/html;charset= "gbk" (Blob/File)]
     expected: FAIL
 
   [text/html;\x0ccharset=gbk (Blob/File)]
     expected: FAIL
 
   [,/x (Blob/File)]
     expected: FAIL
 
+  [x/x;®=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=˜;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x=œ;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x="\x08";bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x="º";bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="Œ";bonus=x (Blob/File)]
     expected: FAIL
 
   [text/html;\x0ccharset=gbk (Request/Response)]
     expected: FAIL
 
+  [\x1d/x (Request/Response)]
+    expected: FAIL
+
+  [text/html ;charset=gbk (Request/Response)]
+    expected: FAIL
+
+  [£/x (Request/Response)]
+    expected: FAIL
+
   [x/x;x="\n";bonus=x (Blob/File)]
     expected: FAIL
 
   [x/= (Blob/File)]
     expected: FAIL
 
   [x/x;‚=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/) (Blob/File)]
     expected: FAIL
 
+  [x/x;x=\x17;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;œ=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [text /html (Request/Response)]
+    expected: FAIL
+
+  [€/x (Request/Response)]
+    expected: FAIL
+
+  [x/x\x0c (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=·;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/\x0b (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=û;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/\x01 (Request/Response)]
+    expected: FAIL
+
+  [x/£ (Request/Response)]
+    expected: FAIL
+
   [x/x;É=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;¾=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x="ï";bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=¾;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;Ú=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/’ (Request/Response)]
+    expected: FAIL
+
+  [x/x;»=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;‚=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/¸ (Request/Response)]
+    expected: FAIL
+
   [x/x;x=ó;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;º=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x==;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/­ (Request/Response)]
+    expected: FAIL
+
+  [¼/x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=¿;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=£;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [Ø/x (Request/Response)]
+    expected: FAIL
+
   [x/x;\]=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="\x00";bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="";bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x="\x14";bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=\x19;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;}=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=\x01;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=\x08;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [[/x (Request/Response)]
+    expected: FAIL
+
+  [x/x;À=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/ù (Request/Response)]
+    expected: FAIL
+
   [x/x;x="ý";bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;§=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/á (Request/Response)]
+    expected: FAIL
+
   [text/html ;charset=gbk (Blob/File)]
     expected: FAIL
 
+  [x/ä (Request/Response)]
+    expected: FAIL
+
+  [x/x;Ê=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;û=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [/x (Request/Response)]
+    expected: FAIL
+
   [x/x;x="¤";bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="";bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="\x08";bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="à";bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=Ö;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x="‘";bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x=\x07;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;•=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [©/x (Request/Response)]
+    expected: FAIL
+
+  [\x0bx/x (Request/Response)]
+    expected: FAIL
+
   [x/x;´=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [?/x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=Ù;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/• (Request/Response)]
+    expected: FAIL
+
+  [x/Á (Request/Response)]
+    expected: FAIL
+
   [x/[ (Blob/File)]
     expected: FAIL
 
+  [x/x;x=™;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x="Ò";bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;Í=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x="\x07";bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/[ (Request/Response)]
+    expected: FAIL
+
   [x/x;ë=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;<=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;\x08=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=ù;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;š=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="Ô";bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=›;bonus=x (Request/Response)]
+    expected: FAIL
+
   [}/x (Blob/File)]
     expected: FAIL
 
   [x/x;x="\x15";bonus=x (Blob/File)]
     expected: FAIL
 
+  [ð/x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=\x11;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=<;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=Ú;bonus=x (Blob/File)]
     expected: FAIL
 
+  [é/x (Request/Response)]
+    expected: FAIL
+
   [x/x;x="\x17";bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;\x06=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;:=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;(=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;/=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;Ç=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=ö;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/¦ (Request/Response)]
+    expected: FAIL
+
   [x/: (Blob/File)]
     expected: FAIL
 
   [x/x;x="\x11";bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x=ò;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=\x1b;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;ç=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;£=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="ò";bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="\x1c";bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=:;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=â;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;€=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [ñ/x (Request/Response)]
+    expected: FAIL
+
+  [\x0c/x (Request/Response)]
+    expected: FAIL
+
   [text/ html (Blob/File)]
     expected: FAIL
 
   [\n\r\t x/x;x=x\n\r\t  (Blob/File)]
     expected: FAIL
 
   [x/x;x=ƒ;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x=Ï;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="ù";bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=\x0c;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=ì;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=„;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;\x0f=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;\x0f=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [text/html; charset=gbk (Blob/File)]
     expected: FAIL
 
+  [x/‚ (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=¢;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/\x16 (Request/Response)]
+    expected: FAIL
+
   [x/x;x="â";bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=í;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/õ (Request/Response)]
+    expected: FAIL
+
+  [Ž/x (Request/Response)]
+    expected: FAIL
+
+  [x/x;Ù=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [\\/x (Request/Response)]
+    expected: FAIL
+
   [x/? (Blob/File)]
     expected: FAIL
 
+  [‹/x (Request/Response)]
+    expected: FAIL
+
+  [x/x;"=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [text/html;charset=gbk;charset=windows-1255 (Request/Response)]
+    expected: FAIL
+
   [x/x;x="î";bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=é;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=?;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;Ï=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;¸=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x="\x1f";bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/: (Request/Response)]
+    expected: FAIL
+
+  [Õ/x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=Ì;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x; =x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x="Å";bonus=x (Blob/File)]
     expected: FAIL
 
+  [¢/x (Request/Response)]
+    expected: FAIL
+
   [x/x;x="\r";bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x=¤;bonus=x (Blob/File)]
     expected: FAIL
 
   [bogus (Blob/File)]
     expected: FAIL
 
   [x/x;x=î;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/ê (Request/Response)]
+    expected: FAIL
+
+  [x/³ (Request/Response)]
+    expected: FAIL
+
+  [x/x;\x1a=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;Ö=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=ˆ;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x="\x1d";bonus=x (Blob/File)]
     expected: FAIL
 
   [text/html;charset=gbk( (Blob/File)]
     expected: FAIL
 
   [x/x;x="\x01";bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/° (Request/Response)]
+    expected: FAIL
+
   [text/html;charset= ";charset=GBK (Blob/File)]
     expected: FAIL
 
+  [\x01/x (Request/Response)]
+    expected: FAIL
+
+  [–/x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x="\x02";bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/Ì (Request/Response)]
+    expected: FAIL
+
   [text/html;test=;charset=gbk (Blob/File)]
     expected: FAIL
 
+  [x/x;Ï=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [text/html;charset="\\g\\b\\k" (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=¯;bonus=x (Request/Response)]
+    expected: FAIL
+
   [text /html (Blob/File)]
     expected: FAIL
 
   [x/x;x="ñ";bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/› (Request/Response)]
+    expected: FAIL
+
+  [x/x;>=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x="\x13";bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;\x07=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="\x1f";bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="¿";bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x=ð;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/¾ (Request/Response)]
+    expected: FAIL
+
   [x/x;x=ï;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;”=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/Ã (Request/Response)]
+    expected: FAIL
+
   [x/x;x=,;bonus=x (Blob/File)]
     expected: FAIL
 
+  [Ï/x (Request/Response)]
+    expected: FAIL
+
   [x/x;ö=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x=é;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=ê;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=×;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/® (Request/Response)]
+    expected: FAIL
+
+  [x/x; =x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=Ö;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=\x10;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;\x13=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x="ä";bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="«";bonus=x (Blob/File)]
     expected: FAIL
 
+  [text/html;test=;charset=gbk (Request/Response)]
+    expected: FAIL
+
   [x/x;x="õ";bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x=\x03;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="Ì";bonus=x (Blob/File)]
     expected: FAIL
 
+  [›/x (Request/Response)]
+    expected: FAIL
+
   [x/x;\x11=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=\x1e;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [</x (Request/Response)]
+    expected: FAIL
+
+  [x/x;è=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;{=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/= (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=º;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=¶;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;"=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/Ð (Request/Response)]
+    expected: FAIL
+
   [x/x;x=×;bonus=x (Blob/File)]
     expected: FAIL
 
+  [ì/x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=ÿ;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;é=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [\x03/x (Request/Response)]
+    expected: FAIL
+
+  [†/x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=ý;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/Õ (Request/Response)]
+    expected: FAIL
+
+  [x/\x1b (Request/Response)]
+    expected: FAIL
+
   [x/x;x="ë";bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x=â;bonus=x (Blob/File)]
     expected: FAIL
 
   [text/html;charset=\x0cgbk (Blob/File)]
     expected: FAIL
 
+  [x/x;«=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/¬ (Request/Response)]
+    expected: FAIL
+
   [x/x;x="¼";bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="ó";bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=\x14;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=@;bonus=x (Blob/File)]
     expected: FAIL
 
+  [text/html;charset= gbk (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=Í;bonus=x (Request/Response)]
+    expected: FAIL
+
   [text/html;x=(;charset=gbk (Blob/File)]
     expected: FAIL
 
   [x/x;x=û;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x=\t (Request/Response)]
     expected: FAIL
 
   [x/x;x=ê;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/û (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=Ð;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;Û=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=Ÿ;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/\x14 (Request/Response)]
+    expected: FAIL
+
   [x/x;Å=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;È=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/â (Request/Response)]
+    expected: FAIL
+
+  [x/x;ò=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [\n/x (Request/Response)]
     expected: FAIL
 
   [</x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=§;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/Ø (Request/Response)]
+    expected: FAIL
+
+  [text/html;charset=gbk" (Request/Response)]
+    expected: FAIL
+
+  [x/ñ (Request/Response)]
+    expected: FAIL
+
   [TEXT/HTML;CHARSET=GBK (Request/Response)]
     expected: FAIL
 
+  [/x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=ÿ;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x="›";bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;\x15=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=\x17;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;¥=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;’=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="ê";bonus=x (Blob/File)]
     expected: FAIL
 
+  [­/x (Request/Response)]
+    expected: FAIL
+
+  [bogus (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=\x16;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/Π(Request/Response)]
+    expected: FAIL
+
+  [Ú/x (Request/Response)]
+    expected: FAIL
+
+  [x/¹ (Request/Response)]
+    expected: FAIL
+
   [x/x;x=·;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x=°;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/, (Blob/File)]
     expected: FAIL
@@ -1686,115 +3738,262 @@
     expected: FAIL
 
   [x/x;x=);bonus=x (Blob/File)]
     expected: FAIL
 
   [text/html;charset =gbk (Blob/File)]
     expected: FAIL
 
+  [x/x;x=ï;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/„ (Request/Response)]
+    expected: FAIL
+
   [x/x;x=´;bonus=x (Blob/File)]
     expected: FAIL
 
+  [ÿ/ÿ (Request/Response)]
+    expected: FAIL
+
   [x/x;x=±;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;×=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [text/html ; ; charset=gbk (Request/Response)]
+    expected: FAIL
+
   [x/\] (Blob/File)]
     expected: FAIL
 
   [x/x;x="•";bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/\x07 (Request/Response)]
+    expected: FAIL
+
   [x/x;x=Í;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/Š (Request/Response)]
+    expected: FAIL
+
   [x/x;x=Õ;bonus=x (Blob/File)]
     expected: FAIL
 
+  [text/html;";charset=gbk (Request/Response)]
+    expected: FAIL
+
   [x/x;x="\x05";bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;\x1a=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x=;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;Œ=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;€=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=\x04;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [ /x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=Î;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/\x02 (Request/Response)]
+    expected: FAIL
+
   [(/x (Blob/File)]
     expected: FAIL
 
+  [ö/x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=‰;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x="Ö";bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;ì=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=ª;bonus=x (Blob/File)]
     expected: FAIL
 
+  [‰/x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=‡;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;ù=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=\x1a;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x="\x03";bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/¤ (Request/Response)]
+    expected: FAIL
+
+  [x/x;ˆ=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;¯=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/Ó (Request/Response)]
+    expected: FAIL
+
+  [x/œ (Request/Response)]
+    expected: FAIL
+
+  [x/x;³=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;³=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/\x0f (Request/Response)]
+    expected: FAIL
+
   [x/x;®=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/ï (Request/Response)]
+    expected: FAIL
+
   [text/html;test=ÿ;charset=gbk (Blob/File)]
     expected: FAIL
 
   [x/x;x="\t !\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ" (Blob/File)]
     expected: FAIL
 
   [x/x;\x1f=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;°=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [text/ html (Request/Response)]
+    expected: FAIL
+
+  [Â/x (Request/Response)]
+    expected: FAIL
+
+  [®/x (Request/Response)]
+    expected: FAIL
+
   [x/x;x="Æ";bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;\x02=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;Û=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/Ô (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=ã;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=‹;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;¶=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [text/html;';charset=gbk (Blob/File)]
     expected: FAIL
 
   [x/x;”=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [”/x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=ñ;bonus=x (Blob/File)]
     expected: FAIL
 
+  [\x0cx/x (Request/Response)]
+    expected: FAIL
+
   [x/x;á=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [=/x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=´;bonus=x (Request/Response)]
+    expected: FAIL
+
   [@/x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=>;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/² (Request/Response)]
+    expected: FAIL
+
   [x/x;x=¦;bonus=x (Blob/File)]
     expected: FAIL
 
   [text/html;charset=\x0bgbk (Blob/File)]
     expected: FAIL
 
+  [»/x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x="\x18";bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;÷=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [Á/x (Request/Response)]
+    expected: FAIL
+
+  [\x1c/x (Request/Response)]
+    expected: FAIL
+
+  [Ä/x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=™;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=µ;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;\x0e=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/— (Request/Response)]
+    expected: FAIL
+
+  [x/x;x="\x0c";bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;ý=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [text/html;charset= ";charset=GBK (Request/Response)]
     expected: FAIL
 
   [x/x;x=ˆ;bonus=x (Blob/File)]
     expected: FAIL
@@ -1809,826 +4008,1909 @@
     expected: FAIL
 
   [x/x;x="\x0b";bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="é";bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=\x06;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=š;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;í=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/Å (Request/Response)]
+    expected: FAIL
+
+  [ÿ/x (Request/Response)]
+    expected: FAIL
+
+  [x/\x04 (Request/Response)]
+    expected: FAIL
+
   [x/x;ã=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;¢=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [text/html;charset=();charset=GBK (Blob/File)]
     expected: FAIL
 
   [x/x;¬=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="Õ";bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x=ä;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=å;bonus=x (Request/Response)]
+    expected: FAIL
+
+  […/x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=¶;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [=/x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=®;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/  (Request/Response)]
+    expected: FAIL
+
   [x/x;x=\x1d;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/Ý (Request/Response)]
+    expected: FAIL
+
+  [²/x (Request/Response)]
+    expected: FAIL
+
+  [x/x;×=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;ë=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x="\x1b";bonus=x (Request/Response)]
+    expected: FAIL
+
+  [\x1f/x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=Å;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x=Ù;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="¥";bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;È=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=Õ;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x="æ";bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=Ë;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=Ò;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x="í";bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x="ü";bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=ª;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;­=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=»;bonus=x (Request/Response)]
+    expected: FAIL
+
   [text/html;charset=\x0cgbk (Request/Response)]
     expected: FAIL
 
   [x/x;Ç=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=Ó;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/˜ (Request/Response)]
+    expected: FAIL
+
   [x/x;,=x;bonus=x (Request/Response)]
     expected: FAIL
 
+  [x/x;„=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [í/x (Request/Response)]
+    expected: FAIL
+
+  [¯/x (Request/Response)]
+    expected: FAIL
+
+  [Ë/x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=Ò;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=œ;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=ø;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="„";bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x=¥;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="È";bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/“ (Request/Response)]
+    expected: FAIL
+
   [x/x;x="’";bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/Î (Request/Response)]
+    expected: FAIL
+
+  [ã/x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=Á;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="Á";bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="Ç";bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/Æ (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=ó;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/ë (Request/Response)]
+    expected: FAIL
+
   [x/x;x="×";bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=Å;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [Ã/x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=Î;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;ñ=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=•;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x=”;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/€ (Request/Response)]
+    expected: FAIL
+
+  [x/” (Request/Response)]
+    expected: FAIL
+
+  [È/x (Request/Response)]
+    expected: FAIL
+
+  [™/x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=¨;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x="À";bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;Ë=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;Ý=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="¢";bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x=¡;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/ (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=À;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x="–";bonus=x (Blob/File)]
     expected: FAIL
 
+  [“/x (Request/Response)]
+    expected: FAIL
+
+  [x/‡ (Request/Response)]
+    expected: FAIL
+
   [x/x;x="¾";bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;Ñ=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;é=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=–;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;•=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=ý;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="†";bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="á";bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;ï=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [Ù/x (Request/Response)]
+    expected: FAIL
+
   [x/x;ä=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/ž (Request/Response)]
+    expected: FAIL
+
+  [x/x;å=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;²=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;à=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x=¸;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;†=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="µ";bonus=x (Blob/File)]
     expected: FAIL
 
+  [É/x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=Ø;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;Õ=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=Û;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x="Ð";bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=€;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;Â=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [î/x (Request/Response)]
+    expected: FAIL
+
+  [x/x;¡=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;˜=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;²=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/ó (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=Ý;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;ž=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/ã (Request/Response)]
+    expected: FAIL
+
   [x/x;x="”";bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;Œ=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=Ñ;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [þ/x (Request/Response)]
+    expected: FAIL
+
   [x/x;½=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x=½;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=¦;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [‘/x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=¾;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=ë;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x="ƒ";bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;ž=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;’=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [ý/x (Request/Response)]
+    expected: FAIL
+
+  [/x (Request/Response)]
+    expected: FAIL
+
+  [x/Í (Request/Response)]
+    expected: FAIL
+
+  [¶/x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=„;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [×/x (Request/Response)]
+    expected: FAIL
+
+  [—/x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=ú;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=³;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="‹";bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/ˆ (Request/Response)]
+    expected: FAIL
+
   [x/x;…=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="²";bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;ó=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [±/x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=Ý;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/Ï (Request/Response)]
+    expected: FAIL
+
+  [x/µ (Request/Response)]
+    expected: FAIL
+
   [x/x;“=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;™=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="¸";bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;™=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;Ä=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;ª=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;¹=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/Ÿ (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=«;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/ƒ (Request/Response)]
+    expected: FAIL
+
   [x/x;Á=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x=è;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=†;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;ƒ=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;¡=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;´=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;Ã=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x=à;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x=æ;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=–;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=Æ;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;Ê=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="Í";bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/ò (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=”;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;í=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x=Ž;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;ð=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=Š;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;æ=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/É (Request/Response)]
+    expected: FAIL
+
+  [x/x;Ñ=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=Ç;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x="¬";bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/æ (Request/Response)]
+    expected: FAIL
+
+  [x/¯ (Request/Response)]
+    expected: FAIL
+
+  [Ô/x (Request/Response)]
+    expected: FAIL
+
   [x/x;ò=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="Ž";bonus=x (Blob/File)]
     expected: FAIL
 
+  [ø/x (Request/Response)]
+    expected: FAIL
+
   [x/x;Ú=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;Ž=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x=í;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="¡";bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;Ä=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [Ý/x (Request/Response)]
+    expected: FAIL
+
   [x/x;x="";bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/© (Request/Response)]
+    expected: FAIL
+
   [x/x;x=›;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=ä;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=è;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=Ž;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;å=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;test=�;x=x (Blob/File)]
     expected: FAIL
 
   [x/x;ü=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;Í=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/· (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=Â;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;†=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/è (Request/Response)]
+    expected: FAIL
+
+  [x/x;¦=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [·/x (Request/Response)]
+    expected: FAIL
+
   [x/x;¸=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x=…;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=®;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/î (Request/Response)]
+    expected: FAIL
+
+  [x/¶ (Request/Response)]
+    expected: FAIL
+
+  [x/ý (Request/Response)]
+    expected: FAIL
+
   [x/x;x="Ÿ";bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="ú";bonus=x (Blob/File)]
     expected: FAIL
 
+  [Ü/x (Request/Response)]
+    expected: FAIL
+
+  [x/x;ß=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=‹;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;¬=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/À (Request/Response)]
+    expected: FAIL
+
+  [x/È (Request/Response)]
+    expected: FAIL
+
+  [x/¢ (Request/Response)]
+    expected: FAIL
+
+  [x/x;¶=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;ï=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;Ð=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="‚";bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x=Â;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;ø=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=Œ;bonus=x (Blob/File)]
     expected: FAIL
 
+  [õ/x (Request/Response)]
+    expected: FAIL
+
+  [x/x;Ô=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=’;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/± (Request/Response)]
+    expected: FAIL
+
   [x/x;x=¨;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x=å;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;“=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/ß (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=Ã;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x="¯";bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;ˆ=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [ü/x (Request/Response)]
+    expected: FAIL
+
+  [x/x;ý=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;©=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;ñ=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;±=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;õ=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;Ô=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x=š;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="³";bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/Ù (Request/Response)]
+    expected: FAIL
+
+  [à/x (Request/Response)]
+    expected: FAIL
+
   [x/x;x="Ä";bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="©";bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x=Æ;bonus=x (Blob/File)]
     expected: FAIL
 
+  [Å/x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/Ò (Request/Response)]
+    expected: FAIL
+
   [x/x;x=È;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="™";bonus=x (Blob/File)]
     expected: FAIL
 
+  [‚/x (Request/Response)]
+    expected: FAIL
+
+  [â/x (Request/Response)]
+    expected: FAIL
+
+  [x/ (Request/Response)]
+    expected: FAIL
+
+  [x/ÿ (Request/Response)]
+    expected: FAIL
+
+  [x/x;±=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;›=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;‰=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;˜=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=ñ;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/« (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=¹;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [ò/x (Request/Response)]
+    expected: FAIL
+
+  [x/x;ª=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [¦/x (Request/Response)]
+    expected: FAIL
+
   [x/x;x="»";bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;œ=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;ù=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=ø;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;¿=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=æ;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [š/x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x= ;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/´ (Request/Response)]
+    expected: FAIL
+
   [x/x;x=ž;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x=ç;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="Ñ";bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/ª (Request/Response)]
+    expected: FAIL
+
+  [ƒ/x (Request/Response)]
+    expected: FAIL
+
   [x/x;­=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/é (Request/Response)]
+    expected: FAIL
+
   [x/x;›=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;Æ=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;Â=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="§";bonus=x (Blob/File)]
     expected: FAIL
 
+  [’/x (Request/Response)]
+    expected: FAIL
+
   [x/x;x="Ó";bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;„=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [³/x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=£;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;Ü=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=Á;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/¼ (Request/Response)]
+    expected: FAIL
+
   [x/x;õ=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x=Ô;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="Ë";bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/Û (Request/Response)]
+    expected: FAIL
+
+  [x/x;…=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;¤=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [ç/x (Request/Response)]
+    expected: FAIL
+
+  [x/ (Request/Response)]
+    expected: FAIL
+
+  [x/‹ (Request/Response)]
+    expected: FAIL
+
   [x/x;x=‚;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x=€;bonus=x (Blob/File)]
     expected: FAIL
 
+  [/x (Request/Response)]
+    expected: FAIL
+
+  [Þ/x (Request/Response)]
+    expected: FAIL
+
   [x/x;ÿ=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;Î=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;ß=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [Ì/x (Request/Response)]
+    expected: FAIL
+
   [x/x;x="÷";bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x=Š;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=Ê;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x="Ý";bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;ã=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=¡;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x="Ê";bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=É;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;Ø=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=…;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=á;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=Þ;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;Ò=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=°;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=î;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [/x (Request/Response)]
+    expected: FAIL
+
   [x/x;»=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x=²;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/¿ (Request/Response)]
+    expected: FAIL
+
   [x/x;î=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [÷/x (Request/Response)]
+    expected: FAIL
+
   [x/x;x="Ã";bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;¹=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="“";bonus=x (Blob/File)]
     expected: FAIL
 
+  [„/x (Request/Response)]
+    expected: FAIL
+
+  [Í/x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=þ;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x="‰";bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=±;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/™ (Request/Response)]
+    expected: FAIL
+
   [x/x;x="£";bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;ø=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [º/x (Request/Response)]
+    expected: FAIL
+
   [x/x;°=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;Š=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/Ê (Request/Response)]
+    expected: FAIL
+
   [x/x;x="·";bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=ô;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/÷ (Request/Response)]
+    expected: FAIL
+
+  [x/Ë (Request/Response)]
+    expected: FAIL
+
+  [x/x;Õ=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/» (Request/Response)]
+    expected: FAIL
+
   [x/x;x="°";bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;ö=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [‡/x (Request/Response)]
+    expected: FAIL
+
+  [x/x;‡=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x="ß";bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/Þ (Request/Response)]
+    expected: FAIL
+
   [x/x;x=—;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=¼;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [Æ/x (Request/Response)]
+    expected: FAIL
+
+  [Ç/x (Request/Response)]
+    expected: FAIL
+
+  [x/º (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=à;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x="—";bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x=­;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="½";bonus=x (Blob/File)]
     expected: FAIL
 
+  [æ/x (Request/Response)]
+    expected: FAIL
+
+  [°/x (Request/Response)]
+    expected: FAIL
+
+  [ê/x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=‰;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x=‘;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/Ä (Request/Response)]
+    expected: FAIL
+
+  [x/x;Ó=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x="ð";bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;Ì=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x=ô;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=Ô;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x="Ï";bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="ø";bonus=x (Blob/File)]
     expected: FAIL
 
+  [À/x (Request/Response)]
+    expected: FAIL
+
+  [x/ô (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=¸;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x="Î";bonus=x (Blob/File)]
     expected: FAIL
 
+  [ú/x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=•;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x="´";bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="Ü";bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x=Ð;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="Þ";bonus=x (Blob/File)]
     expected: FAIL
 
+  [¥/x (Request/Response)]
+    expected: FAIL
+
+  [Î/x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=Ü;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;Ù=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x=Ê;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="ì";bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x=Ä;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=ƒ;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [á/x (Request/Response)]
+    expected: FAIL
+
   [x/x;¯=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=²;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=‚;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/í (Request/Response)]
+    expected: FAIL
+
+  [x/x;Ž=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;Ÿ=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;ô=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;þ=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [¾/x (Request/Response)]
+    expected: FAIL
+
+  [x/x;â=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;Š=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;Á=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=¥;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [Û/x (Request/Response)]
+    expected: FAIL
+
   [x/x;‘=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/§ (Request/Response)]
+    expected: FAIL
+
   [x/x;x=É;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=—;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;¦=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="ž";bonus=x (Blob/File)]
     expected: FAIL
 
+  [¸/x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=÷;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=’;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;ð=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x="É";bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/– (Request/Response)]
+    expected: FAIL
+
+  [x/x;‹=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [Ò/x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=õ;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;Ÿ=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;·=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=“;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [¨/x (Request/Response)]
+    expected: FAIL
+
   [x/x;ú=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;ç=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=­;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=Ã;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="œ";bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;ú=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=§;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x=¯;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;ê=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/Ú (Request/Response)]
+    expected: FAIL
+
+  [x/ú (Request/Response)]
+    expected: FAIL
+
   [x/x;x="ÿ";bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;Ý=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;©=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=Ó;bonus=x (Blob/File)]
     expected: FAIL
 
+  [¤/x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=ð;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x="å";bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x="è";bonus=x (Blob/File)]
     expected: FAIL
 
+  [Ê/x (Request/Response)]
+    expected: FAIL
+
+  [x/ð (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=³;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=¤;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=Ë;bonus=x (Blob/File)]
     expected: FAIL
 
+  [Ÿ/x (Request/Response)]
+    expected: FAIL
+
   [x/x;Ö=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;Ø=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [ž/x (Request/Response)]
+    expected: FAIL
+
   [x/x;x="¨";bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;ô=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x="€";bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x=ã;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;Ü=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [ˆ/x (Request/Response)]
+    expected: FAIL
+
+  [˜/x (Request/Response)]
+    expected: FAIL
+
   [x/x;¾=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [ /x (Request/Response)]
+    expected: FAIL
+
+  [x/š (Request/Response)]
+    expected: FAIL
+
+  [x/ü (Request/Response)]
+    expected: FAIL
+
+  [x/x;Å=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;Ð=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=¼;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="Ú";bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;§=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x=©;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/ (Request/Response)]
+    expected: FAIL
+
+  [x/x;µ=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=ß;bonus=x (Blob/File)]
     expected: FAIL
 
+  [½/x (Request/Response)]
+    expected: FAIL
+
+  [´/x (Request/Response)]
+    expected: FAIL
+
   [x/x;x="";bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/ö (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=©;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x="ã";bonus=x (Blob/File)]
     expected: FAIL
 
+  [ë/x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=“;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;û=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;À=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;¿=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=þ;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;á=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=¬;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/‘ (Request/Response)]
+    expected: FAIL
+
+  [x/x;=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x="¹";bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;ó=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;‡=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [œ/x (Request/Response)]
+    expected: FAIL
+
   [x/x; =x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=Ú;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;î=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=¿;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;¨=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;Ã=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [Ñ/x (Request/Response)]
+    expected: FAIL
+
+  [x/× (Request/Response)]
+    expected: FAIL
+
+  [x/Ž (Request/Response)]
+    expected: FAIL
+
   [x/x;÷=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/þ (Request/Response)]
+    expected: FAIL
+
+  [ß/x (Request/Response)]
+    expected: FAIL
+
+  [¡/x (Request/Response)]
+    expected: FAIL
+
   [x/x;x="¶";bonus=x (Blob/File)]
     expected: FAIL
 
+  [¹/x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=ù;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/Â (Request/Response)]
+    expected: FAIL
+
+  [x/¨ (Request/Response)]
+    expected: FAIL
+
   [x/x;¨=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;‰=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=Ÿ;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/ç (Request/Response)]
+    expected: FAIL
+
+  [x/x;þ=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/… (Request/Response)]
+    expected: FAIL
+
   [x/x;x=‡;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="Â";bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=È;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;æ=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;¼=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x="±";bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;¥=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/Ç (Request/Response)]
+    expected: FAIL
+
+  [Š/x (Request/Response)]
+    expected: FAIL
+
   [x/x;·=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="Š";bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="®";bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/Ñ (Request/Response)]
+    expected: FAIL
+
   [x/x;¢=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x=¹;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x=Ç;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x=Û;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=ç;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [ù/x (Request/Response)]
+    expected: FAIL
+
   [x/x;Ë=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=Ì;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [û/x (Request/Response)]
+    expected: FAIL
+
   [x/x;x="Û";bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x=»;bonus=x (Blob/File)]
     expected: FAIL
 
+  [ó/x (Request/Response)]
+    expected: FAIL
+
   [x/x;x="­";bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;–=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [è/x (Request/Response)]
+    expected: FAIL
+
+  [å/x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=‘;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;Æ=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/å (Request/Response)]
+    expected: FAIL
+
+  [Ð/x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=¢;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x="¦";bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/ø (Request/Response)]
+    expected: FAIL
+
+  [x/x;–=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [/x (Request/Response)]
+    expected: FAIL
+
   [x/x;Î=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/¡ (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=ü;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [ï/x (Request/Response)]
+    expected: FAIL
+
+  [x/x;à=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;µ=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;—=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [¿/x (Request/Response)]
+    expected: FAIL
+
   [x/x;è=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;Ó=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [text/html;test=ÿ;charset=gbk (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=ž;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;â=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [§/x (Request/Response)]
+    expected: FAIL
+
+  [ª/x (Request/Response)]
+    expected: FAIL
+
+  [x/x;º=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;ì=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x=ì;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;ÿ=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [ô/x (Request/Response)]
+    expected: FAIL
+
+  [x/‰ (Request/Response)]
+    expected: FAIL
+
+  [x/x;ä=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;«=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;¤=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [«/x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=ú;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x=÷;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="ç";bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;¼=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=ß;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/ì (Request/Response)]
+    expected: FAIL
+
   [x/x;x="š";bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x=Ü;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=á;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/½ (Request/Response)]
+    expected: FAIL
+
+  [¬/x (Request/Response)]
+    expected: FAIL
+
   [x/x;x="ˆ";bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x=ë;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=Ø;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=õ;bonus=x (Blob/File)]
     expected: FAIL
 
+  [ä/x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=º;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;—=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;ƒ=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;ê=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [Œ/x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x=ü;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="ô";bonus=x (Blob/File)]
     expected: FAIL
@@ -2640,202 +5922,499 @@
     expected: FAIL
 
   [x/x;‹=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="";bonus=x (Blob/File)]
     expected: FAIL
 
+  [•/x (Request/Response)]
+    expected: FAIL
+
+  [Ó/x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=Ï;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;Þ=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x="ö";bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x=" ";bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x=«;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=Œ;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x="˜";bonus=x (Blob/File)]
     expected: FAIL
 
+  [Ö/x (Request/Response)]
+    expected: FAIL
+
+  [x/ (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=½;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/Ü (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=Ä;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/Ö (Request/Response)]
+    expected: FAIL
+
+  [x/x;É=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=Ñ;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;‘=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x="þ";bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;Ì=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/¥ (Request/Response)]
+    expected: FAIL
+
+  [x/à (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=ö;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x="ª";bonus=x (Blob/File)]
     expected: FAIL
 
+  [µ/x (Request/Response)]
+    expected: FAIL
+
   [x/x;x="û";bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;ü=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=À;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;½=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x= ;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;£=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x="…";bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="\t !\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ" (Request/Response)]
     expected: FAIL
 
   [x/x;Þ=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x=µ;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=˜;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x="‡";bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=ò;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/† (Request/Response)]
+    expected: FAIL
+
+  [x/x;Ò=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;š=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;®=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=˜;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x=œ;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="º";bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="Œ";bonus=x (Blob/File)]
     expected: FAIL
 
+  [£/x (Request/Response)]
+    expected: FAIL
+
   [x/x;‚=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;œ=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [€/x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=·;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=û;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/£ (Request/Response)]
+    expected: FAIL
+
   [x/x;É=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;¾=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x="ï";bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=¾;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;Ú=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/’ (Request/Response)]
+    expected: FAIL
+
+  [x/x;»=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;‚=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/¸ (Request/Response)]
+    expected: FAIL
+
   [x/x;x=ó;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;º=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/­ (Request/Response)]
+    expected: FAIL
+
+  [¼/x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=¿;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=£;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [Ø/x (Request/Response)]
+    expected: FAIL
+
   [x/x;x="";bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;À=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/ù (Request/Response)]
+    expected: FAIL
+
   [x/x;x="ý";bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;§=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/á (Request/Response)]
+    expected: FAIL
+
+  [x/ä (Request/Response)]
+    expected: FAIL
+
+  [x/x;Ê=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;û=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="¤";bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="";bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="à";bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=Ö;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x="‘";bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;•=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [©/x (Request/Response)]
+    expected: FAIL
+
   [x/x;´=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=Ù;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/• (Request/Response)]
+    expected: FAIL
+
+  [x/Á (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=™;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x="Ò";bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;Í=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;ë=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=ù;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;š=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="Ô";bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=›;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [ð/x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=Ú;bonus=x (Blob/File)]
     expected: FAIL
 
+  [é/x (Request/Response)]
+    expected: FAIL
+
+  [x/x;Ç=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=ö;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/¦ (Request/Response)]
+    expected: FAIL
+
   [x/x;x=ò;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;ç=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;£=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="ò";bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=â;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;€=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [ñ/x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=ƒ;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x=Ï;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="ù";bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=ì;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=„;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/‚ (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=¢;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x="â";bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=í;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/õ (Request/Response)]
+    expected: FAIL
+
+  [Ž/x (Request/Response)]
+    expected: FAIL
+
+  [x/x;Ù=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [‹/x (Request/Response)]
+    expected: FAIL
+
   [x/x;x="î";bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=é;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;Ï=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;¸=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [Õ/x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=Ì;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="Å";bonus=x (Blob/File)]
     expected: FAIL
 
+  [¢/x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=¤;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x=î;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/ê (Request/Response)]
+    expected: FAIL
+
+  [x/³ (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;Ö=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=ˆ;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/° (Request/Response)]
+    expected: FAIL
+
+  [–/x (Request/Response)]
+    expected: FAIL
+
+  [x/Ì (Request/Response)]
+    expected: FAIL
+
+  [x/x;Ï=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=¯;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x="ñ";bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/› (Request/Response)]
+    expected: FAIL
+
   [x/x;x="¿";bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x=ð;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/¾ (Request/Response)]
+    expected: FAIL
+
   [x/x;x=ï;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;”=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/Ã (Request/Response)]
+    expected: FAIL
+
+  [Ï/x (Request/Response)]
+    expected: FAIL
+
   [x/x;ö=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x=é;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=ê;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=×;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/® (Request/Response)]
+    expected: FAIL
+
+  [x/x; =x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=Ö;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="ä";bonus=x (Blob/File)]
     expected: FAIL
@@ -2844,507 +6423,1116 @@
     expected: FAIL
 
   [x/x;x="õ";bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="Ì";bonus=x (Blob/File)]
     expected: FAIL
 
+  [›/x (Request/Response)]
+    expected: FAIL
+
+  [x/x;è=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=º;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=¶;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/Ð (Request/Response)]
+    expected: FAIL
+
   [x/x;x=×;bonus=x (Blob/File)]
     expected: FAIL
 
+  [ì/x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=ÿ;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;é=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [†/x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=ý;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/Õ (Request/Response)]
+    expected: FAIL
+
   [x/x;x="ë";bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x=â;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;«=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/¬ (Request/Response)]
+    expected: FAIL
+
   [x/x;x="¼";bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="ó";bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=Í;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=û;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x=ê;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/û (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=Ð;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;Û=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=Ÿ;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;Å=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;È=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/â (Request/Response)]
+    expected: FAIL
+
+  [x/x;ò=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=§;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/Ø (Request/Response)]
+    expected: FAIL
+
+  [x/ñ (Request/Response)]
+    expected: FAIL
+
+  [/x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=ÿ;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x="›";bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;¥=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;’=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="ê";bonus=x (Blob/File)]
     expected: FAIL
 
+  [­/x (Request/Response)]
+    expected: FAIL
+
+  [x/Π(Request/Response)]
+    expected: FAIL
+
+  [Ú/x (Request/Response)]
+    expected: FAIL
+
+  [x/¹ (Request/Response)]
+    expected: FAIL
+
   [x/x;x=·;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x=°;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="Ù";bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=ï;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/„ (Request/Response)]
+    expected: FAIL
+
   [x/x;x=´;bonus=x (Blob/File)]
     expected: FAIL
 
+  [ÿ/ÿ (Request/Response)]
+    expected: FAIL
+
   [x/x;x=±;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;×=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="•";bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x=Í;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/Š (Request/Response)]
+    expected: FAIL
+
   [x/x;x=Õ;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x=;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;Œ=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;€=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x=Î;bonus=x (Blob/File)]
     expected: FAIL
 
+  [ö/x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=‰;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x="Ö";bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;ì=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=ª;bonus=x (Blob/File)]
     expected: FAIL
 
+  [‰/x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=‡;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;ù=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/¤ (Request/Response)]
+    expected: FAIL
+
+  [x/x;ˆ=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;¯=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/Ó (Request/Response)]
+    expected: FAIL
+
+  [x/œ (Request/Response)]
+    expected: FAIL
+
+  [x/x;³=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;³=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;®=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/ï (Request/Response)]
+    expected: FAIL
+
   [text/html;test=ÿ;charset=gbk (Blob/File)]
     expected: FAIL
 
   [x/x;x="\t !\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ" (Blob/File)]
     expected: FAIL
 
+  [x/x;°=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [Â/x (Request/Response)]
+    expected: FAIL
+
+  [®/x (Request/Response)]
+    expected: FAIL
+
   [x/x;x="Æ";bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;Û=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/Ô (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=ã;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=‹;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;¶=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;”=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [”/x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=ñ;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;á=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=´;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/² (Request/Response)]
+    expected: FAIL
+
   [x/x;x=¦;bonus=x (Blob/File)]
     expected: FAIL
 
+  [»/x (Request/Response)]
+    expected: FAIL
+
+  [x/x;÷=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [Á/x (Request/Response)]
+    expected: FAIL
+
+  [Ä/x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=™;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=µ;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/— (Request/Response)]
+    expected: FAIL
+
   [x/x;ý=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x=ˆ;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x=†;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x=¬;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="é";bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=š;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;í=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/Å (Request/Response)]
+    expected: FAIL
+
+  [ÿ/x (Request/Response)]
+    expected: FAIL
+
   [x/x;ã=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;¢=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;¬=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="Õ";bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x=ä;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=å;bonus=x (Request/Response)]
+    expected: FAIL
+
+  […/x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=¶;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=®;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/  (Request/Response)]
+    expected: FAIL
+
+  [x/Ý (Request/Response)]
+    expected: FAIL
+
+  [²/x (Request/Response)]
+    expected: FAIL
+
+  [x/x;×=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;ë=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=Å;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x=Ù;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="¥";bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;È=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=Õ;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x="æ";bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=Ë;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=Ò;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x="í";bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x="ü";bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=ª;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;­=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=»;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;Ç=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=Ó;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/˜ (Request/Response)]
+    expected: FAIL
+
+  [x/x;„=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [í/x (Request/Response)]
+    expected: FAIL
+
   [text/html;a\]=bar;b[=bar;c=bar (Blob/File)]
     expected: FAIL
 
+  [text/html;a\]=bar;b[=bar;c=bar (Request/Response)]
+    expected: FAIL
+
   [text/html;in\]valid=";asd=foo";foo=bar (Blob/File)]
     expected: FAIL
 
+  [text/html;in\]valid=";asd=foo";foo=bar (Request/Response)]
+    expected: FAIL
+
 
 [parsing.any.worker.html]
+  [¯/x (Request/Response)]
+    expected: FAIL
+
+  [>/x (Request/Response)]
+    expected: FAIL
+
+  [Ë/x (Request/Response)]
+    expected: FAIL
+
+  [\x02/x (Request/Response)]
+    expected: FAIL
+
   [x/x;\n\r\t x=x\n\r\t ;x=y (Blob/File)]
     expected: FAIL
 
   [x/x;x=Ò;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=œ;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=ø;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="„";bonus=x (Blob/File)]
     expected: FAIL
 
+  ["/x (Request/Response)]
+    expected: FAIL
+
   [x/\\ (Blob/File)]
     expected: FAIL
 
   [x/x;x=¥;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="È";bonus=x (Blob/File)]
     expected: FAIL
 
   [x/( (Blob/File)]
     expected: FAIL
 
+  [x/x;test="\\ (Request/Response)]
+    expected: FAIL
+
+  [x/“ (Request/Response)]
+    expected: FAIL
+
   [x/x;x="’";bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/Î (Request/Response)]
+    expected: FAIL
+
+  [ã/x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=Á;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="Á";bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x=;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="Ç";bonus=x (Blob/File)]
     expected: FAIL
 
   [;/x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=[;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=\x1f;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x="\x1c";bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/Æ (Request/Response)]
+    expected: FAIL
+
   [x/x;(=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/\x12 (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=ó;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/ë (Request/Response)]
+    expected: FAIL
+
   [x/x;x="×";bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=Å;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [Ã/x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=Î;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;ñ=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;\\=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x=•;bonus=x (Blob/File)]
     expected: FAIL
 
+  [\x1a/x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=”;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x="\x0e";bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/€ (Request/Response)]
+    expected: FAIL
+
+  [x/” (Request/Response)]
+    expected: FAIL
+
+  [È/x (Request/Response)]
+    expected: FAIL
+
+  [™/x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=¨;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x="À";bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x=\x18;bonus=x (Blob/File)]
     expected: FAIL
 
+  [\x1e/x (Request/Response)]
+    expected: FAIL
+
+  [x/x;Ë=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;Ý=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [text/html;charset={gbk} (Blob/File)]
     expected: FAIL
 
   [x/x;x="¢";bonus=x (Blob/File)]
     expected: FAIL
 
   [x/\n (Request/Response)]
     expected: FAIL
 
   [x/x;x=¡;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/ (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=À;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x="–";bonus=x (Blob/File)]
     expected: FAIL
 
+  [“/x (Request/Response)]
+    expected: FAIL
+
+  [x/‡ (Request/Response)]
+    expected: FAIL
+
+  [x/" (Request/Response)]
+    expected: FAIL
+
   [x/x;x="¾";bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x=\x08;bonus=x (Blob/File)]
     expected: FAIL
 
   [text/html;charset=";charset=foo";charset=GBK (Blob/File)]
     expected: FAIL
 
   [x/x;Ñ=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [TEXT/HTML;CHARSET=GBK (Blob/File)]
     expected: FAIL
 
+  [text/html;charset="\\ gbk" (Request/Response)]
+    expected: FAIL
+
+  [x/x;é=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=–;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;•=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=ý;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="†";bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="á";bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x=",";bonus=x (Request/Response)]
     expected: FAIL
 
+  [x/x;ï=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [Ù/x (Request/Response)]
+    expected: FAIL
+
   [x/x;ä=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/ž (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=\x0e;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/ (Request/Response)]
+    expected: FAIL
+
+  [x/x;å=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;²=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;à=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [{/} (Request/Response)]
+    expected: FAIL
+
   [x/x;\x18=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x=¸;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x=,;bonus=x (Request/Response)]
     expected: FAIL
 
   [text/html;charset=";charset=GBK (Blob/File)]
     expected: FAIL
 
+  [x/\x19 (Request/Response)]
+    expected: FAIL
+
+  [\x0e/x (Request/Response)]
+    expected: FAIL
+
   [x/x;†=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="µ";bonus=x (Blob/File)]
     expected: FAIL
 
+  [É/x (Request/Response)]
+    expected: FAIL
+
+  [x/x;\t=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;test (Request/Response)]
     expected: FAIL
 
   [x/x;x=Ø;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;Õ=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/\x11 (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=Û;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x="Ð";bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/< (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=€;bonus=x (Request/Response)]
+    expected: FAIL
+
   [(/) (Blob/File)]
     expected: FAIL
 
+  [x/x;Â=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [î/x (Request/Response)]
+    expected: FAIL
+
+  [x/x;¡=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;˜=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;²=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/ó (Request/Response)]
+    expected: FAIL
+
+  [x/x;x="\x01";bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=Ý;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;ž=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/ã (Request/Response)]
+    expected: FAIL
+
   [x/x;x="”";bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;Œ=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x="\x12";bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=Ñ;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [þ/x (Request/Response)]
+    expected: FAIL
+
   [x/x;½=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x=½;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=¦;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [‘/x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=¾;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/} (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=ë;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x="ƒ";bonus=x (Blob/File)]
     expected: FAIL
 
   [\]/x (Blob/File)]
     expected: FAIL
 
   [x/x;x="\x14";bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;ž=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;’=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x="\x02";bonus=x (Blob/File)]
     expected: FAIL
 
+  [ý/x (Request/Response)]
+    expected: FAIL
+
+  [/x (Request/Response)]
+    expected: FAIL
+
+  [x/Í (Request/Response)]
+    expected: FAIL
+
+  [¶/x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=„;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [×/x (Request/Response)]
+    expected: FAIL
+
+  [—/x (Request/Response)]
+    expected: FAIL
+
+  [</> (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=ú;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=³;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="‹";bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/ˆ (Request/Response)]
+    expected: FAIL
+
   [x/x;:=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;…=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="²";bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;ó=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [±/x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=Ý;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/Ï (Request/Response)]
+    expected: FAIL
+
   [bogus/ (Blob/File)]
     expected: FAIL
 
+  [x/x;x=\x15;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/  (Request/Response)]
+    expected: FAIL
+
+  [x/µ (Request/Response)]
+    expected: FAIL
+
   [x/x;“=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;™=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="¸";bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;™=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;Ä=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [text/html;\x0bcharset=gbk (Request/Response)]
     expected: FAIL
 
   [x/x;x=;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x="\x06";bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;ª=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="\x06";bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;¹=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/Ÿ (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=«;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/ƒ (Request/Response)]
+    expected: FAIL
+
   [x/x;Á=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x=è;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=†;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;ƒ=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [text/html ; ; charset=gbk (Blob/File)]
     expected: FAIL
 
+  [\x18/x (Request/Response)]
+    expected: FAIL
+
   [x/x;¡=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;´=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x\n\r\t ;x=x (Blob/File)]
     expected: FAIL
 
   [x/x;Ã=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="\x16";bonus=x (Blob/File)]
     expected: FAIL
 
+  [\x04/x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=à;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x=æ;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x=\x13;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=–;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;)=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=Æ;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/< (Blob/File)]
     expected: FAIL
 
   [x/x;Ê=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="Í";bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x=\x14;bonus=x (Blob/File)]
     expected: FAIL
 
+  ["text/html" (Request/Response)]
+    expected: FAIL
+
+  [\t/x (Request/Response)]
+    expected: FAIL
+
+  [x/ò (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=”;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;í=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x=Ž;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/\x1a (Request/Response)]
+    expected: FAIL
+
+  [text/html;charset="gbk (Request/Response)]
+    expected: FAIL
+
   [x/x;ð=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=Š;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [{/x (Request/Response)]
+    expected: FAIL
+
+  [x/x;\x04=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [:/x (Blob/File)]
     expected: FAIL
 
   [x/x;æ=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/É (Request/Response)]
+    expected: FAIL
+
+  [x/x;Ñ=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=Ç;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x="¬";bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;\x1e=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/æ (Request/Response)]
+    expected: FAIL
+
   [bogus/bogus/; (Blob/File)]
     expected: FAIL
 
   [x/x;x=  (Blob/File)]
     expected: FAIL
 
+  [x/\x18 (Request/Response)]
+    expected: FAIL
+
+  [x/¯ (Request/Response)]
+    expected: FAIL
+
+  [Ô/x (Request/Response)]
+    expected: FAIL
+
   [x/x;ò=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="Ž";bonus=x (Blob/File)]
     expected: FAIL
 
+  [ø/x (Request/Response)]
+    expected: FAIL
+
   [x/x;x="\x04";bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;Ú=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;Ž=x;bonus=x (Blob/File)]
     expected: FAIL
@@ -3359,724 +7547,1672 @@
     expected: FAIL
 
   [x/x;x=:;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="\x13";bonus=x (Blob/File)]
     expected: FAIL
 
+  [Ý/x (Request/Response)]
+    expected: FAIL
+
   [x/x;x="";bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/© (Request/Response)]
+    expected: FAIL
+
   [x/x;x=›;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=ä;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=è;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=Ž;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;å=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;test=�;x=x (Blob/File)]
     expected: FAIL
 
   [x/x;ü=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;Í=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;\x02=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/· (Request/Response)]
+    expected: FAIL
+
+  [text/html;charset="";charset=GBK (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=Â;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x="\x1b";bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;†=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/è (Request/Response)]
+    expected: FAIL
+
+  [x/x;¦=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x="\x19";bonus=x (Request/Response)]
+    expected: FAIL
+
+  [·/x (Request/Response)]
+    expected: FAIL
+
   [x/x;¸=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x=…;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=®;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/î (Request/Response)]
+    expected: FAIL
+
+  [x/¶ (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=\x19;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/ý (Request/Response)]
+    expected: FAIL
+
   [x/x;x="Ÿ";bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=(;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x="\x0f";bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x="ú";bonus=x (Blob/File)]
     expected: FAIL
 
   [text/html;charset=\x0bgbk (Request/Response)]
     expected: FAIL
 
+  [Ü/x (Request/Response)]
+    expected: FAIL
+
+  [x/x;ß=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/" (Blob/File)]
     expected: FAIL
 
   [x/x;x=‹;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;¬=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=\x13;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/À (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=\x05;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/È (Request/Response)]
+    expected: FAIL
+
+  [x/¢ (Request/Response)]
+    expected: FAIL
+
+  [x/x;¶=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=\x02;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;\x1d=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;ï=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;Ð=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/\x1e (Request/Response)]
+    expected: FAIL
+
   [x/x;x="‚";bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x=Â;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;ø=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [\x14/x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=Œ;bonus=x (Blob/File)]
     expected: FAIL
 
+  [õ/x (Request/Response)]
+    expected: FAIL
+
+  [x/x;Ô=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=\x12;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/\x03 (Request/Response)]
+    expected: FAIL
+
   [x/x;x=’;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/± (Request/Response)]
+    expected: FAIL
+
   [x/x;x=¨;bonus=x (Blob/File)]
     expected: FAIL
 
+  [\x1b/x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=å;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;“=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;\\=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;\x10=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [text/html;charset="gbk (Blob/File)]
     expected: FAIL
 
+  [x/ß (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=\x11;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=\x07;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=Ã;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=};bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="¯";bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;ˆ=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [ü/x (Request/Response)]
+    expected: FAIL
+
+  [x/x;ý=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;©=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [text/html;charset=gbk( (Request/Response)]
+    expected: FAIL
+
   [x/x;ñ=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;±=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;õ=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=\x0c;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;\x14=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;Ô=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x="\x17";bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=š;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="³";bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=);bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/Ù (Request/Response)]
+    expected: FAIL
+
+  [à/x (Request/Response)]
+    expected: FAIL
+
   [x/x;x="Ä";bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="©";bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x=Æ;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="\x1e";bonus=x (Blob/File)]
     expected: FAIL
 
+  [Å/x (Request/Response)]
+    expected: FAIL
+
+  [x/\x17 (Request/Response)]
+    expected: FAIL
+
+  [x/\x1f (Request/Response)]
+    expected: FAIL
+
   [x/x;\x03=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/Ò (Request/Response)]
+    expected: FAIL
+
   [x/x;x=È;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="™";bonus=x (Blob/File)]
     expected: FAIL
 
+  [‚/x (Request/Response)]
+    expected: FAIL
+
+  [text/html;test;charset=gbk (Request/Response)]
+    expected: FAIL
+
+  [â/x (Request/Response)]
+    expected: FAIL
+
+  [x/ (Request/Response)]
+    expected: FAIL
+
   [x/x;x="\x18";bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/ÿ (Request/Response)]
+    expected: FAIL
+
+  [x/x;\x0c=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;±=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;›=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;\x06=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;‰=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;˜=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x="\x1e";bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=ñ;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/« (Request/Response)]
+    expected: FAIL
+
   [x/x;x=\x00;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/\x08 (Request/Response)]
+    expected: FAIL
+
   [x/x;x="\x0f";bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=¹;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/\\ (Request/Response)]
+    expected: FAIL
+
   [\r/x (Request/Response)]
     expected: FAIL
 
+  [ò/x (Request/Response)]
+    expected: FAIL
+
+  [x/x;ª=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [¦/x (Request/Response)]
+    expected: FAIL
+
   ["/x (Blob/File)]
     expected: FAIL
 
   [x/x;x="»";bonus=x (Blob/File)]
     expected: FAIL
 
+  [(/x (Request/Response)]
+    expected: FAIL
+
+  [x/x;œ=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;ù=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=ø;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;¿=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=æ;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [š/x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x= ;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/´ (Request/Response)]
+    expected: FAIL
+
   [x/x;x=ž;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x=ç;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="Ñ";bonus=x (Blob/File)]
     expected: FAIL
 
   [text/html(;doesnot=matter (Blob/File)]
     expected: FAIL
 
   [x/x;x="\x12";bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/ª (Request/Response)]
+    expected: FAIL
+
+  [ƒ/x (Request/Response)]
+    expected: FAIL
+
   [x/x;­=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [text/html;';charset=gbk (Request/Response)]
+    expected: FAIL
+
+  [x/é (Request/Response)]
+    expected: FAIL
+
   [x/x;›=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/\x0e (Request/Response)]
+    expected: FAIL
+
+  [x/x;Æ=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;\x14=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;\x01=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;Â=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="§";bonus=x (Blob/File)]
     expected: FAIL
 
+  [’/x (Request/Response)]
+    expected: FAIL
+
   [x/{ (Blob/File)]
     expected: FAIL
 
   [x/x;x="Ó";bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/\x05 (Request/Response)]
+    expected: FAIL
+
   [x/x;„=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [³/x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=£;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;Ü=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=Á;bonus=x (Request/Response)]
+    expected: FAIL
+
   [{/x (Blob/File)]
     expected: FAIL
 
   [x/x;\n=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/¼ (Request/Response)]
+    expected: FAIL
+
+  [x/( (Request/Response)]
+    expected: FAIL
+
   [x/x;õ=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x=Ô;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="Ë";bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/Û (Request/Response)]
+    expected: FAIL
+
+  [x/x;…=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;¤=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [ç/x (Request/Response)]
+    expected: FAIL
+
+  [x/ (Request/Response)]
+    expected: FAIL
+
   [x/x;=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/‹ (Request/Response)]
+    expected: FAIL
+
   [x/x;x=‚;bonus=x (Blob/File)]
     expected: FAIL
 
   [text/html;\x0bcharset=gbk (Blob/File)]
     expected: FAIL
 
+  [x/x;?=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [\x08/x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=€;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;\x12=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [/x (Request/Response)]
+    expected: FAIL
+
   [x/x;,=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [Þ/x (Request/Response)]
+    expected: FAIL
+
+  [text/html(;doesnot=matter (Request/Response)]
+    expected: FAIL
+
   [x/x;x=<;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x=\x16;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;ÿ=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;Î=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;ß=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [Ì/x (Request/Response)]
+    expected: FAIL
+
   [x/x;x="÷";bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x=Š;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=Ê;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x="Ý";bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;ã=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/? (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=¡;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x="Ê";bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=É;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/> (Request/Response)]
+    expected: FAIL
+
   [x/x;x=\];bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;Ø=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=\x0f;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=…;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;/=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=>;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/@ (Blob/File)]
     expected: FAIL
 
   [x/x;x=á;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=Þ;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;Ò=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=°;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=î;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [/x (Request/Response)]
+    expected: FAIL
+
   [x/x;»=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [text/html;charset=';charset=GBK (Request/Response)]
+    expected: FAIL
+
   [x/x;x=²;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/; (Blob/File)]
     expected: FAIL
 
+  [x/¿ (Request/Response)]
+    expected: FAIL
+
+  [x/x;x="\x15";bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;\x19=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;î=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [bogus/  (Blob/File)]
     expected: FAIL
 
+  [÷/x (Request/Response)]
+    expected: FAIL
+
+  [x/x;\x17=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x="Ã";bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;¹=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="“";bonus=x (Blob/File)]
     expected: FAIL
 
+  [„/x (Request/Response)]
+    expected: FAIL
+
+  [Í/x (Request/Response)]
+    expected: FAIL
+
   [text/html;;;;charset=gbk (Blob/File)]
     expected: FAIL
 
+  [\x16/x (Request/Response)]
+    expected: FAIL
+
+  [x/\x0c (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=þ;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x="‰";bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=±;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;\x16=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/™ (Request/Response)]
+    expected: FAIL
+
   [x/x;x="£";bonus=x (Blob/File)]
     expected: FAIL
 
   [\n\r\t x/x;x=x\n\r\t  (Request/Response)]
     expected: FAIL
 
+  [x/x;ø=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [!#$%&'*+-.^_`|~0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz/!#$%&'*+-.^_`|~0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz;!#$%&'*+-.^_`|~0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz=!#$%&'*+-.^_`|~0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz (Blob/File)]
     expected: FAIL
 
+  [º/x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x="\x16";bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;°=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x=\x0f;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;Š=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;{=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/Ê (Request/Response)]
+    expected: FAIL
+
   [x/x;x=(;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/  (Blob/File)]
     expected: FAIL
 
   [x/x;x="·";bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=\x03;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=ô;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/÷ (Request/Response)]
+    expected: FAIL
+
+  [x/Ë (Request/Response)]
+    expected: FAIL
+
+  [x/x;Õ=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [\x07/x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=\x01;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/» (Request/Response)]
+    expected: FAIL
+
   [x/x;x="°";bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;ö=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [‡/x (Request/Response)]
+    expected: FAIL
+
+  [x/x;‡=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [text/html;charset=";charset=foo";charset=GBK (Request/Response)]
     expected: FAIL
 
   [x/x;x="ß";bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/Þ (Request/Response)]
+    expected: FAIL
+
   [x/x;x=—;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x=\x05;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x=\x04;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=¼;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [Æ/x (Request/Response)]
+    expected: FAIL
+
+  [Ç/x (Request/Response)]
+    expected: FAIL
+
+  [x/º (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=à;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;\x0c=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="—";bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;>=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x==;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=­;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="½";bonus=x (Blob/File)]
     expected: FAIL
 
+  [}/x (Request/Response)]
+    expected: FAIL
+
+  [æ/x (Request/Response)]
+    expected: FAIL
+
   [x/x;\x00=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [\]/x (Request/Response)]
+    expected: FAIL
+
+  [°/x (Request/Response)]
+    expected: FAIL
+
+  [ê/x (Request/Response)]
+    expected: FAIL
+
+  [text/html;charset= "gbk" (Request/Response)]
+    expected: FAIL
+
   [x/x;x=‰;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x=\x06;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x=‘;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/Ä (Request/Response)]
+    expected: FAIL
+
+  [x/x;Ó=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x="ð";bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;Ì=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x=ô;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;\r=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=Ô;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x="Ï";bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/@ (Request/Response)]
+    expected: FAIL
+
   [x/x;x="ø";bonus=x (Blob/File)]
     expected: FAIL
 
+  [À/x (Request/Response)]
+    expected: FAIL
+
+  [x/ô (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=¸;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/\x1d (Request/Response)]
+    expected: FAIL
+
   [x/x;x="Î";bonus=x (Blob/File)]
     expected: FAIL
 
+  [\x06/x (Request/Response)]
+    expected: FAIL
+
+  [ú/x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=•;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x="´";bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="Ü";bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x=Ð;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/\x1c (Request/Response)]
+    expected: FAIL
+
   [x/x;x="Þ";bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;\x04=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [bogus/  (Request/Response)]
+    expected: FAIL
+
+  [¥/x (Request/Response)]
+    expected: FAIL
+
   [text/html;";charset=gbk (Blob/File)]
     expected: FAIL
 
+  [Î/x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=Ü;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;Ù=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x=Ê;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="ì";bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x=Ä;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/\t (Request/Response)]
+    expected: FAIL
+
+  [text/html; charset=gbk (Request/Response)]
+    expected: FAIL
+
+  [\x19/x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=ƒ;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [á/x (Request/Response)]
+    expected: FAIL
+
   [x/x;x="\x03";bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;¯=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=²;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=;bonus=x (Blob/File)]
     expected: FAIL
 
   [{/} (Blob/File)]
     expected: FAIL
 
   [x/x;x="\x19";bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=‚;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/í (Request/Response)]
+    expected: FAIL
+
+  [x/x;Ž=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;Ÿ=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;ô=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;þ=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [¾/x (Request/Response)]
+    expected: FAIL
+
   [x/} (Blob/File)]
     expected: FAIL
 
+  [x/x;â=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;Š=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;Á=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [/ (Blob/File)]
     expected: FAIL
 
+  [x/x;x=¥;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [Û/x (Request/Response)]
+    expected: FAIL
+
   [x/x;‘=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/§ (Request/Response)]
+    expected: FAIL
+
   [x/x;x=É;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=—;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;¦=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="ž";bonus=x (Blob/File)]
     expected: FAIL
 
+  [¸/x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=/;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/\x13 (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=÷;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=’;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;ð=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x="É";bonus=x (Blob/File)]
     expected: FAIL
 
   [text/html;charset= gbk (Blob/File)]
     expected: FAIL
 
+  [x/– (Request/Response)]
+    expected: FAIL
+
+  [x/x;x="\x1a";bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;\x1f=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=\x1c;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;‹=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [text/html;charset=";charset=GBK (Request/Response)]
     expected: FAIL
 
+  [Ò/x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=õ;bonus=x (Request/Response)]
+    expected: FAIL
+
   [text/html;charset="";charset=GBK (Blob/File)]
     expected: FAIL
 
+  [x/x;Ÿ=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;·=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=“;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [¨/x (Request/Response)]
+    expected: FAIL
+
+  [x/x;[=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;\x18=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;ú=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;ç=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [\x0f/x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=­;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;@=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [:/x (Request/Response)]
+    expected: FAIL
+
+  [x/x;\x1d=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=Ã;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="œ";bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="\x07";bonus=x (Blob/File)]
     expected: FAIL
 
+  [\x0b/x (Request/Response)]
+    expected: FAIL
+
+  [x/x;ú=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=§;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x=¯;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;ê=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;\x10=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [@/x (Request/Response)]
+    expected: FAIL
+
+  [bogus/ (Request/Response)]
+    expected: FAIL
+
   [text/html;charset=gbk" (Blob/File)]
     expected: FAIL
 
+  [x/Ú (Request/Response)]
+    expected: FAIL
+
+  [)/x (Request/Response)]
+    expected: FAIL
+
   [x/x;\x12=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/ú (Request/Response)]
+    expected: FAIL
+
   [x/x;x="ÿ";bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;Ý=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;©=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=Ó;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=@;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [¤/x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=ð;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x="å";bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;\x1b=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;\x03=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x="è";bonus=x (Blob/File)]
     expected: FAIL
 
   [text/html;charset="gbk"x (Blob/File)]
     expected: FAIL
 
+  [Ê/x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x="\x1d";bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/ð (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=³;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=¤;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;<=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x=\x1e;bonus=x (Blob/File)]
     expected: FAIL
 
+  [text/html;charset="gbk"x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=Ë;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;\x05=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [\x05/x (Request/Response)]
+    expected: FAIL
+
+  [Ÿ/x (Request/Response)]
+    expected: FAIL
+
   [x/x;Ö=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;Ø=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [ž/x (Request/Response)]
+    expected: FAIL
+
   [x/x;x="¨";bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;ô=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x="€";bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x=ã;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;Ü=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [ˆ/x (Request/Response)]
+    expected: FAIL
+
+  [\x12/x (Request/Response)]
+    expected: FAIL
+
+  [˜/x (Request/Response)]
+    expected: FAIL
+
   [x/x;¾=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [(/) (Request/Response)]
+    expected: FAIL
+
+  [ /x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=\];bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/š (Request/Response)]
+    expected: FAIL
+
+  [x/ü (Request/Response)]
+    expected: FAIL
+
+  [x/x;Å=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;Ð=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [text/html;charset={gbk} (Request/Response)]
+    expected: FAIL
+
   [x/x;x=¼;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="Ú";bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;§=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;\x0b=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x=©;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;\x0b=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/ (Request/Response)]
+    expected: FAIL
+
+  [x/x;µ=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=ß;bonus=x (Blob/File)]
     expected: FAIL
 
+  [½/x (Request/Response)]
+    expected: FAIL
+
+  [´/x (Request/Response)]
+    expected: FAIL
+
   [x/x;x="";bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/ö (Request/Response)]
+    expected: FAIL
+
   [x/x;\x15=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [text/html;charset="\\g\\b\\k" (Blob/File)]
     expected: FAIL
 
+  [x/x;x=©;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x="ã";bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=/;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [ë/x (Request/Response)]
+    expected: FAIL
+
   [x/\r (Request/Response)]
     expected: FAIL
 
   [x/x;x=“;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x=\x0b;bonus=x (Blob/File)]
     expected: FAIL
 
   [text/html;test;charset=gbk (Blob/File)]
     expected: FAIL
 
+  [x/x;û=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;À=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="\x0e";bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;¿=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=þ;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;á=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [bogus/bogus/; (Request/Response)]
+    expected: FAIL
+
+  [\x17/x (Request/Response)]
+    expected: FAIL
+
   [x/x;\x1c=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;\x11=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=¬;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x="\x10";bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/‘ (Request/Response)]
+    expected: FAIL
+
+  [x/x;=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [\x10/x (Request/Response)]
+    expected: FAIL
+
   [x/x;x="¹";bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;ó=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;\x1b=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;‡=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [œ/x (Request/Response)]
+    expected: FAIL
+
   [x/x; =x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=Ú;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=\x15;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;î=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x={;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x=¿;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;¨=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;Ã=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [;/x (Request/Response)]
+    expected: FAIL
+
+  [Ñ/x (Request/Response)]
+    expected: FAIL
+
+  [x/× (Request/Response)]
+    expected: FAIL
+
   [x/x;x=\x1b;bonus=x (Blob/File)]
     expected: FAIL
 
   ["text/html" (Blob/File)]
     expected: FAIL
 
+  [x/Ž (Request/Response)]
+    expected: FAIL
+
   [x/x;÷=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/þ (Request/Response)]
+    expected: FAIL
+
+  [ß/x (Request/Response)]
+    expected: FAIL
+
+  [x/x;\x1c=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [¡/x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=\r;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="¶";bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="\x0c";bonus=x (Blob/File)]
     expected: FAIL
 
+  [¹/x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=ù;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;\x01=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/Â (Request/Response)]
+    expected: FAIL
+
+  [x/¨ (Request/Response)]
+    expected: FAIL
+
   [x/x;)=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [\x13/x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=\x1c;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;¨=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;‰=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=\x0b;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=Ÿ;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/ç (Request/Response)]
+    expected: FAIL
+
+  [x/x;þ=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/… (Request/Response)]
+    expected: FAIL
+
   [x/x;x=‡;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="Â";bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=È;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;æ=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;¼=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x="±";bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;¥=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=\x02;bonus=x (Blob/File)]
     expected: FAIL
 
   [)/x (Blob/File)]
     expected: FAIL
 
+  [x/Ç (Request/Response)]
+    expected: FAIL
+
+  [x/x;\x16=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [Š/x (Request/Response)]
+    expected: FAIL
+
   [x/x;·=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="Š";bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="®";bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/Ñ (Request/Response)]
+    expected: FAIL
+
   [x/x;¢=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [!#$%&'*+-.^_`|~0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz/!#$%&'*+-.^_`|~0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz;!#$%&'*+-.^_`|~0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz=!#$%&'*+-.^_`|~0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz (Request/Response)]
     expected: FAIL
 
   [x/x;x=¹;bonus=x (Blob/File)]
     expected: FAIL
@@ -4088,157 +9224,337 @@
     expected: FAIL
 
   [x/> (Blob/File)]
     expected: FAIL
 
   [text/html;charset=';charset=GBK (Blob/File)]
     expected: FAIL
 
+  [x/x;x=ç;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x="\x10";bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x; =x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [ù/x (Request/Response)]
+    expected: FAIL
+
   [x/x;\x17=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;Ë=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;test (Blob/File)]
     expected: FAIL
 
   [x/x;\x05=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x=\n;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=Ì;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [û/x (Request/Response)]
+    expected: FAIL
+
+  [x/x\x0b (Request/Response)]
+    expected: FAIL
+
   [x/x;x="Û";bonus=x (Blob/File)]
     expected: FAIL
 
+  [text/html;charset=();charset=GBK (Request/Response)]
+    expected: FAIL
+
   [x/x;x=»;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/) (Request/Response)]
+    expected: FAIL
+
+  [ó/x (Request/Response)]
+    expected: FAIL
+
   [x/x;x="­";bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;\x08=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;–=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [è/x (Request/Response)]
+    expected: FAIL
+
+  [å/x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=‘;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/\x15 (Request/Response)]
+    expected: FAIL
+
   [text/html;charset=gbk;charset=windows-1255 (Blob/File)]
     expected: FAIL
 
   [x/x;Æ=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/å (Request/Response)]
+    expected: FAIL
+
+  [\x11/x (Request/Response)]
+    expected: FAIL
+
+  [Ð/x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=¢;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x="¦";bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/ø (Request/Response)]
+    expected: FAIL
+
   [x/x;x=\t (Blob/File)]
     expected: FAIL
 
   [x/x;[=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;–=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [/x (Request/Response)]
+    expected: FAIL
+
   [x/x;Î=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/¡ (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=ü;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [ï/x (Request/Response)]
+    expected: FAIL
+
   [x/x;test="\\ (Blob/File)]
     expected: FAIL
 
+  [x/x;x=\x1d;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;\x07=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=\x1f;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;à=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=\x18;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;µ=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;—=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [¿/x (Request/Response)]
+    expected: FAIL
+
+  [x/\x10 (Request/Response)]
+    expected: FAIL
+
   [x/x;è=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;Ó=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [text/html;test=ÿ;charset=gbk (Request/Response)]
+    expected: FAIL
+
+  [x/x;\]=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=ž;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;â=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [§/x (Request/Response)]
+    expected: FAIL
+
+  [\x15/x (Request/Response)]
+    expected: FAIL
+
+  [ª/x (Request/Response)]
+    expected: FAIL
+
+  [x/x;º=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;\x1e=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;ì=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x=ì;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=?;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;ÿ=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [ /x (Blob/File)]
     expected: FAIL
 
   [x/x;x=\x0e;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/\x06 (Request/Response)]
+    expected: FAIL
+
+  [ô/x (Request/Response)]
+    expected: FAIL
+
+  [x/‰ (Request/Response)]
+    expected: FAIL
+
+  [x/x;ä=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;«=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [text/html;charset="gbk" (Blob/File)]
     expected: FAIL
 
+  [x/x;¤=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [«/x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=ú;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/{ (Request/Response)]
+    expected: FAIL
+
   [x/x;x=÷;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x="\x11";bonus=x (Request/Response)]
+    expected: FAIL
+
+  [text/html;charset="gbk" (Request/Response)]
+    expected: FAIL
+
   [x/x;x="ç";bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;¼=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=ß;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;\x13=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/ì (Request/Response)]
+    expected: FAIL
+
   [x/x;x="š";bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x=Ü;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=á;bonus=x (Request/Response)]
+    expected: FAIL
+
   [[/x (Blob/File)]
     expected: FAIL
 
+  [x/½ (Request/Response)]
+    expected: FAIL
+
+  [¬/x (Request/Response)]
+    expected: FAIL
+
   [x/x;x="ˆ";bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x=ë;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=Ø;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x="\x1a";bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x=õ;bonus=x (Blob/File)]
     expected: FAIL
 
+  [ä/x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=º;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;—=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x={;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;ƒ=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [text/html;;;;charset=gbk (Request/Response)]
+    expected: FAIL
+
   [x/x;ê=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [Œ/x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x="";bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=ü;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x=[;bonus=x (Blob/File)]
     expected: FAIL
 
   [?/x (Blob/File)]
     expected: FAIL
@@ -4265,457 +9581,1027 @@
     expected: FAIL
 
   [x/x;‹=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="";bonus=x (Blob/File)]
     expected: FAIL
 
+  [•/x (Request/Response)]
+    expected: FAIL
+
+  [Ó/x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=Ï;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x="\x05";bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;Þ=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x="ö";bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x=" ";bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x=«;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;@=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;\x0e=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/\] (Request/Response)]
+    expected: FAIL
+
   [x/x;x=\x1a;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=Œ;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x="˜";bonus=x (Blob/File)]
     expected: FAIL
 
+  [Ö/x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x="\x0b";bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/ (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=½;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/Ü (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=Ä;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/Ö (Request/Response)]
+    expected: FAIL
+
+  [x/x;\x19=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [text/html;charset="\\ gbk" (Blob/File)]
     expected: FAIL
 
+  [x/x;É=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=Ñ;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;\t=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;‘=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x="þ";bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/; (Request/Response)]
+    expected: FAIL
+
+  [x/x;Ì=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [\\/x (Blob/File)]
     expected: FAIL
 
+  [x/¥ (Request/Response)]
+    expected: FAIL
+
+  [x/à (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=ö;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x="ª";bonus=x (Blob/File)]
     expected: FAIL
 
+  [µ/x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x="\x04";bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x="";bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="û";bonus=x (Blob/File)]
     expected: FAIL
 
+  [text/html;x=(;charset=gbk (Request/Response)]
+    expected: FAIL
+
+  [x/x;ü=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=À;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;?=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;½=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x= ;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;£=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x="…";bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="\t !\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ" (Request/Response)]
     expected: FAIL
 
   [x/x;Þ=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x=µ;bonus=x (Blob/File)]
     expected: FAIL
 
+  [/ (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=˜;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=  (Request/Response)]
     expected: FAIL
 
   [x/x;x="‡";bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=ò;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/† (Request/Response)]
+    expected: FAIL
+
   [x/x;}=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;Ò=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;š=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=};bonus=x (Request/Response)]
+    expected: FAIL
+
   [text/html;charset= "gbk" (Blob/File)]
     expected: FAIL
 
   [text/html;\x0ccharset=gbk (Blob/File)]
     expected: FAIL
 
   [,/x (Blob/File)]
     expected: FAIL
 
+  [x/x;®=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=˜;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x=œ;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x="\x08";bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x="º";bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="Œ";bonus=x (Blob/File)]
     expected: FAIL
 
   [text/html;\x0ccharset=gbk (Request/Response)]
     expected: FAIL
 
+  [\x1d/x (Request/Response)]
+    expected: FAIL
+
+  [text/html ;charset=gbk (Request/Response)]
+    expected: FAIL
+
+  [£/x (Request/Response)]
+    expected: FAIL
+
   [x/x;x="\n";bonus=x (Blob/File)]
     expected: FAIL
 
   [x/= (Blob/File)]
     expected: FAIL
 
   [x/x;‚=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/) (Blob/File)]
     expected: FAIL
 
+  [x/x;x=\x17;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;œ=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [text /html (Request/Response)]
+    expected: FAIL
+
+  [€/x (Request/Response)]
+    expected: FAIL
+
+  [x/x\x0c (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=·;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/\x0b (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=û;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/\x01 (Request/Response)]
+    expected: FAIL
+
+  [x/£ (Request/Response)]
+    expected: FAIL
+
   [x/x;É=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;¾=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x="ï";bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=¾;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;Ú=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/’ (Request/Response)]
+    expected: FAIL
+
+  [x/x;»=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;‚=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/¸ (Request/Response)]
+    expected: FAIL
+
   [x/x;x=ó;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;º=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x==;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/­ (Request/Response)]
+    expected: FAIL
+
+  [¼/x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=¿;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=£;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [Ø/x (Request/Response)]
+    expected: FAIL
+
   [x/x;\]=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="\x00";bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="";bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x="\x14";bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=\x19;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;}=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=\x01;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=\x08;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [[/x (Request/Response)]
+    expected: FAIL
+
+  [x/x;À=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/ù (Request/Response)]
+    expected: FAIL
+
   [x/x;x="ý";bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;§=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/á (Request/Response)]
+    expected: FAIL
+
   [text/html ;charset=gbk (Blob/File)]
     expected: FAIL
 
+  [x/ä (Request/Response)]
+    expected: FAIL
+
+  [x/x;Ê=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;û=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [/x (Request/Response)]
+    expected: FAIL
+
   [x/x;x="¤";bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="";bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="\x08";bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="à";bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=Ö;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x="‘";bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x=\x07;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;•=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [©/x (Request/Response)]
+    expected: FAIL
+
+  [\x0bx/x (Request/Response)]
+    expected: FAIL
+
   [x/x;´=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [?/x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=Ù;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/• (Request/Response)]
+    expected: FAIL
+
+  [x/Á (Request/Response)]
+    expected: FAIL
+
   [x/[ (Blob/File)]
     expected: FAIL
 
+  [x/x;x=™;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x="Ò";bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;Í=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x="\x07";bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/[ (Request/Response)]
+    expected: FAIL
+
   [x/x;ë=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;<=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;\x08=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=ù;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;š=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="Ô";bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=›;bonus=x (Request/Response)]
+    expected: FAIL
+
   [}/x (Blob/File)]
     expected: FAIL
 
   [x/x;x="\x15";bonus=x (Blob/File)]
     expected: FAIL
 
+  [ð/x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=\x11;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=<;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=Ú;bonus=x (Blob/File)]
     expected: FAIL
 
+  [é/x (Request/Response)]
+    expected: FAIL
+
   [x/x;x="\x17";bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;\x06=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;:=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;(=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;/=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;Ç=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=ö;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/¦ (Request/Response)]
+    expected: FAIL
+
   [x/: (Blob/File)]
     expected: FAIL
 
   [x/x;x="\x11";bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x=ò;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=\x1b;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;ç=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;£=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="ò";bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="\x1c";bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=:;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=â;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;€=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [ñ/x (Request/Response)]
+    expected: FAIL
+
+  [\x0c/x (Request/Response)]
+    expected: FAIL
+
   [text/ html (Blob/File)]
     expected: FAIL
 
   [\n\r\t x/x;x=x\n\r\t  (Blob/File)]
     expected: FAIL
 
   [x/x;x=ƒ;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x=Ï;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="ù";bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=\x0c;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=ì;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=„;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;\x0f=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;\x0f=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [text/html; charset=gbk (Blob/File)]
     expected: FAIL
 
+  [x/‚ (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=¢;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/\x16 (Request/Response)]
+    expected: FAIL
+
   [x/x;x="â";bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=í;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/õ (Request/Response)]
+    expected: FAIL
+
+  [Ž/x (Request/Response)]
+    expected: FAIL
+
+  [x/x;Ù=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [\\/x (Request/Response)]
+    expected: FAIL
+
   [x/? (Blob/File)]
     expected: FAIL
 
+  [‹/x (Request/Response)]
+    expected: FAIL
+
+  [x/x;"=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [text/html;charset=gbk;charset=windows-1255 (Request/Response)]
+    expected: FAIL
+
   [x/x;x="î";bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=é;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=?;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;Ï=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;¸=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x="\x1f";bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/: (Request/Response)]
+    expected: FAIL
+
+  [Õ/x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=Ì;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x; =x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x="Å";bonus=x (Blob/File)]
     expected: FAIL
 
+  [¢/x (Request/Response)]
+    expected: FAIL
+
   [x/x;x="\r";bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x=¤;bonus=x (Blob/File)]
     expected: FAIL
 
   [bogus (Blob/File)]
     expected: FAIL
 
   [x/x;x=î;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/ê (Request/Response)]
+    expected: FAIL
+
+  [x/³ (Request/Response)]
+    expected: FAIL
+
+  [x/x;\x1a=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;Ö=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=ˆ;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x="\x1d";bonus=x (Blob/File)]
     expected: FAIL
 
   [text/html;charset=gbk( (Blob/File)]
     expected: FAIL
 
   [x/x;x="\x01";bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/° (Request/Response)]
+    expected: FAIL
+
   [text/html;charset= ";charset=GBK (Blob/File)]
     expected: FAIL
 
+  [\x01/x (Request/Response)]
+    expected: FAIL
+
+  [–/x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x="\x02";bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/Ì (Request/Response)]
+    expected: FAIL
+
   [text/html;test=;charset=gbk (Blob/File)]
     expected: FAIL
 
+  [x/x;Ï=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [text/html;charset="\\g\\b\\k" (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=¯;bonus=x (Request/Response)]
+    expected: FAIL
+
   [text /html (Blob/File)]
     expected: FAIL
 
   [x/x;x="ñ";bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/› (Request/Response)]
+    expected: FAIL
+
+  [x/x;>=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x="\x13";bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;\x07=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="\x1f";bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="¿";bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x=ð;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/¾ (Request/Response)]
+    expected: FAIL
+
   [x/x;x=ï;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;”=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/Ã (Request/Response)]
+    expected: FAIL
+
   [x/x;x=,;bonus=x (Blob/File)]
     expected: FAIL
 
+  [Ï/x (Request/Response)]
+    expected: FAIL
+
   [x/x;ö=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x=é;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=ê;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=×;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/® (Request/Response)]
+    expected: FAIL
+
+  [x/x; =x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=Ö;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=\x10;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;\x13=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x="ä";bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="«";bonus=x (Blob/File)]
     expected: FAIL
 
+  [text/html;test=;charset=gbk (Request/Response)]
+    expected: FAIL
+
   [x/x;x="õ";bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x=\x03;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="Ì";bonus=x (Blob/File)]
     expected: FAIL
 
+  [›/x (Request/Response)]
+    expected: FAIL
+
   [x/x;\x11=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=\x1e;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [</x (Request/Response)]
+    expected: FAIL
+
+  [x/x;è=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;{=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/= (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=º;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=¶;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;"=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/Ð (Request/Response)]
+    expected: FAIL
+
   [x/x;x=×;bonus=x (Blob/File)]
     expected: FAIL
 
+  [ì/x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=ÿ;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;é=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [\x03/x (Request/Response)]
+    expected: FAIL
+
+  [†/x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=ý;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/Õ (Request/Response)]
+    expected: FAIL
+
+  [x/\x1b (Request/Response)]
+    expected: FAIL
+
   [x/x;x="ë";bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x=â;bonus=x (Blob/File)]
     expected: FAIL
 
   [text/html;charset=\x0cgbk (Blob/File)]
     expected: FAIL
 
+  [x/x;«=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/¬ (Request/Response)]
+    expected: FAIL
+
   [x/x;x="¼";bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="ó";bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=\x14;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=@;bonus=x (Blob/File)]
     expected: FAIL
 
+  [text/html;charset= gbk (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=Í;bonus=x (Request/Response)]
+    expected: FAIL
+
   [text/html;x=(;charset=gbk (Blob/File)]
     expected: FAIL
 
   [x/x;x=û;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x=\t (Request/Response)]
     expected: FAIL
 
   [x/x;x=ê;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/û (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=Ð;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;Û=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=Ÿ;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/\x14 (Request/Response)]
+    expected: FAIL
+
   [x/x;Å=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;È=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/â (Request/Response)]
+    expected: FAIL
+
+  [x/x;ò=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [\n/x (Request/Response)]
     expected: FAIL
 
   [</x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=§;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/Ø (Request/Response)]
+    expected: FAIL
+
+  [text/html;charset=gbk" (Request/Response)]
+    expected: FAIL
+
+  [x/ñ (Request/Response)]
+    expected: FAIL
+
   [TEXT/HTML;CHARSET=GBK (Request/Response)]
     expected: FAIL
 
+  [/x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=ÿ;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x="›";bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;\x15=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=\x17;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;¥=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;’=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="ê";bonus=x (Blob/File)]
     expected: FAIL
 
+  [­/x (Request/Response)]
+    expected: FAIL
+
+  [bogus (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=\x16;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/Π(Request/Response)]
+    expected: FAIL
+
+  [Ú/x (Request/Response)]
+    expected: FAIL
+
+  [x/¹ (Request/Response)]
+    expected: FAIL
+
   [x/x;x=·;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x=°;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/, (Blob/File)]
     expected: FAIL
@@ -4724,115 +10610,262 @@
     expected: FAIL
 
   [x/x;x=);bonus=x (Blob/File)]
     expected: FAIL
 
   [text/html;charset =gbk (Blob/File)]
     expected: FAIL
 
+  [x/x;x=ï;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/„ (Request/Response)]
+    expected: FAIL
+
   [x/x;x=´;bonus=x (Blob/File)]
     expected: FAIL
 
+  [ÿ/ÿ (Request/Response)]
+    expected: FAIL
+
   [x/x;x=±;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;×=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [text/html ; ; charset=gbk (Request/Response)]
+    expected: FAIL
+
   [x/\] (Blob/File)]
     expected: FAIL
 
   [x/x;x="•";bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/\x07 (Request/Response)]
+    expected: FAIL
+
   [x/x;x=Í;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/Š (Request/Response)]
+    expected: FAIL
+
   [x/x;x=Õ;bonus=x (Blob/File)]
     expected: FAIL
 
+  [text/html;";charset=gbk (Request/Response)]
+    expected: FAIL
+
   [x/x;x="\x05";bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;\x1a=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x=;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;Œ=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;€=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=\x04;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [ /x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=Î;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/\x02 (Request/Response)]
+    expected: FAIL
+
   [(/x (Blob/File)]
     expected: FAIL
 
+  [ö/x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=‰;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x="Ö";bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;ì=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=ª;bonus=x (Blob/File)]
     expected: FAIL
 
+  [‰/x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=‡;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;ù=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=\x1a;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x="\x03";bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/¤ (Request/Response)]
+    expected: FAIL
+
+  [x/x;ˆ=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;¯=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/Ó (Request/Response)]
+    expected: FAIL
+
+  [x/œ (Request/Response)]
+    expected: FAIL
+
+  [x/x;³=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;³=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/\x0f (Request/Response)]
+    expected: FAIL
+
   [x/x;®=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/ï (Request/Response)]
+    expected: FAIL
+
   [text/html;test=ÿ;charset=gbk (Blob/File)]
     expected: FAIL
 
   [x/x;x="\t !\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ" (Blob/File)]
     expected: FAIL
 
   [x/x;\x1f=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;°=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [text/ html (Request/Response)]
+    expected: FAIL
+
+  [Â/x (Request/Response)]
+    expected: FAIL
+
+  [®/x (Request/Response)]
+    expected: FAIL
+
   [x/x;x="Æ";bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;\x02=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;Û=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/Ô (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=ã;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=‹;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;¶=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [text/html;';charset=gbk (Blob/File)]
     expected: FAIL
 
   [x/x;”=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [”/x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=ñ;bonus=x (Blob/File)]
     expected: FAIL
 
+  [\x0cx/x (Request/Response)]
+    expected: FAIL
+
   [x/x;á=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [=/x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=´;bonus=x (Request/Response)]
+    expected: FAIL
+
   [@/x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=>;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/² (Request/Response)]
+    expected: FAIL
+
   [x/x;x=¦;bonus=x (Blob/File)]
     expected: FAIL
 
   [text/html;charset=\x0bgbk (Blob/File)]
     expected: FAIL
 
+  [»/x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x="\x18";bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;÷=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [Á/x (Request/Response)]
+    expected: FAIL
+
+  [\x1c/x (Request/Response)]
+    expected: FAIL
+
+  [Ä/x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=™;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=µ;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;\x0e=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/— (Request/Response)]
+    expected: FAIL
+
+  [x/x;x="\x0c";bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;ý=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [text/html;charset= ";charset=GBK (Request/Response)]
     expected: FAIL
 
   [x/x;x=ˆ;bonus=x (Blob/File)]
     expected: FAIL
@@ -4847,826 +10880,1909 @@
     expected: FAIL
 
   [x/x;x="\x0b";bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="é";bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=\x06;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=š;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;í=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/Å (Request/Response)]
+    expected: FAIL
+
+  [ÿ/x (Request/Response)]
+    expected: FAIL
+
+  [x/\x04 (Request/Response)]
+    expected: FAIL
+
   [x/x;ã=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;¢=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [text/html;charset=();charset=GBK (Blob/File)]
     expected: FAIL
 
   [x/x;¬=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="Õ";bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x=ä;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=å;bonus=x (Request/Response)]
+    expected: FAIL
+
+  […/x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=¶;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [=/x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=®;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/  (Request/Response)]
+    expected: FAIL
+
   [x/x;x=\x1d;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/Ý (Request/Response)]
+    expected: FAIL
+
+  [²/x (Request/Response)]
+    expected: FAIL
+
+  [x/x;×=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;ë=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x="\x1b";bonus=x (Request/Response)]
+    expected: FAIL
+
+  [\x1f/x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=Å;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x=Ù;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="¥";bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;È=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=Õ;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x="æ";bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=Ë;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=Ò;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x="í";bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x="ü";bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=ª;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;­=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=»;bonus=x (Request/Response)]
+    expected: FAIL
+
   [text/html;charset=\x0cgbk (Request/Response)]
     expected: FAIL
 
   [x/x;Ç=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=Ó;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/˜ (Request/Response)]
+    expected: FAIL
+
   [x/x;,=x;bonus=x (Request/Response)]
     expected: FAIL
 
+  [x/x;„=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [í/x (Request/Response)]
+    expected: FAIL
+
+  [¯/x (Request/Response)]
+    expected: FAIL
+
+  [Ë/x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=Ò;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=œ;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=ø;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="„";bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x=¥;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="È";bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/“ (Request/Response)]
+    expected: FAIL
+
   [x/x;x="’";bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/Î (Request/Response)]
+    expected: FAIL
+
+  [ã/x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=Á;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="Á";bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="Ç";bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/Æ (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=ó;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/ë (Request/Response)]
+    expected: FAIL
+
   [x/x;x="×";bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=Å;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [Ã/x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=Î;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;ñ=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=•;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x=”;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/€ (Request/Response)]
+    expected: FAIL
+
+  [x/” (Request/Response)]
+    expected: FAIL
+
+  [È/x (Request/Response)]
+    expected: FAIL
+
+  [™/x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=¨;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x="À";bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;Ë=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;Ý=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="¢";bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x=¡;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/ (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=À;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x="–";bonus=x (Blob/File)]
     expected: FAIL
 
+  [“/x (Request/Response)]
+    expected: FAIL
+
+  [x/‡ (Request/Response)]
+    expected: FAIL
+
   [x/x;x="¾";bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;Ñ=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;é=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=–;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;•=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=ý;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="†";bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="á";bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;ï=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [Ù/x (Request/Response)]
+    expected: FAIL
+
   [x/x;ä=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/ž (Request/Response)]
+    expected: FAIL
+
+  [x/x;å=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;²=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;à=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x=¸;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;†=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="µ";bonus=x (Blob/File)]
     expected: FAIL
 
+  [É/x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=Ø;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;Õ=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=Û;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x="Ð";bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=€;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;Â=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [î/x (Request/Response)]
+    expected: FAIL
+
+  [x/x;¡=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;˜=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;²=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/ó (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=Ý;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;ž=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/ã (Request/Response)]
+    expected: FAIL
+
   [x/x;x="”";bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;Œ=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=Ñ;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [þ/x (Request/Response)]
+    expected: FAIL
+
   [x/x;½=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x=½;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=¦;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [‘/x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=¾;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=ë;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x="ƒ";bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;ž=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;’=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [ý/x (Request/Response)]
+    expected: FAIL
+
+  [/x (Request/Response)]
+    expected: FAIL
+
+  [x/Í (Request/Response)]
+    expected: FAIL
+
+  [¶/x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=„;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [×/x (Request/Response)]
+    expected: FAIL
+
+  [—/x (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=ú;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=³;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="‹";bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/ˆ (Request/Response)]
+    expected: FAIL
+
   [x/x;…=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="²";bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;ó=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [±/x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=Ý;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/Ï (Request/Response)]
+    expected: FAIL
+
+  [x/µ (Request/Response)]
+    expected: FAIL
+
   [x/x;“=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;™=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x="¸";bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;™=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/x;Ä=x;bonus=x (Request/Response)]
+    expected: FAIL
+
   [x/x;x=;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;ª=x;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;¹=x;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/Ÿ (Request/Response)]
+    expected: FAIL
+
+  [x/x;x=«;bonus=x (Request/Response)]
+    expected: FAIL
+
+  [x/ƒ (Request/Response)]
+    expected: FAIL
+
   [x/x;Á=x;bonus=x (Blob/File)]
     expected: FAIL
 
   [x/x;x=è;bonus=x (Blob/File)]
     expected: FAIL
 
+  [x/x;x=†;bonus=x (Request/Response)]