Bug 1261841 part 2 - Use encoding_rs instead of uconv. r=emk,mystor. draft
authorHenri Sivonen <hsivonen@hsivonen.fi>
Thu, 27 Apr 2017 13:27:03 +0300
changeset 593175 8bee31b80564ace1355ee3b4f4b7956706c283b4
parent 593174 03c4672cf3146f0e28e0c291bab51292ba53c0fe
child 593176 c6ce992886057a9f22e5c49e84c46520c4c38c14
push id63619
push userbmo:hsivonen@hsivonen.fi
push dateTue, 13 Jun 2017 09:01:19 +0000
reviewersemk, mystor
bugs1261841
milestone56.0a1
Bug 1261841 part 2 - Use encoding_rs instead of uconv. r=emk,mystor. MozReview-Commit-ID: 15Y5GTX98bv
browser/components/migration/360seProfileMigrator.js
browser/components/preferences/fonts.xul
docshell/base/nsDocShell.cpp
dom/base/BodyUtil.cpp
dom/base/EventSource.cpp
dom/base/EventSource.h
dom/base/FormData.cpp
dom/base/WebSocket.cpp
dom/base/nsContentUtils.cpp
dom/base/nsContentUtils.h
dom/base/nsDocumentEncoder.cpp
dom/base/nsIContentSerializer.h
dom/base/nsPlainTextSerializer.cpp
dom/base/nsPlainTextSerializer.h
dom/base/nsXHTMLContentSerializer.cpp
dom/base/nsXHTMLContentSerializer.h
dom/base/nsXMLContentSerializer.cpp
dom/base/nsXMLContentSerializer.h
dom/base/test/unit/test_xml_serializer.js
dom/encoding/EncodingUtils.cpp
dom/encoding/EncodingUtils.h
dom/encoding/TextDecoder.cpp
dom/encoding/TextDecoder.h
dom/encoding/TextEncoder.cpp
dom/encoding/TextEncoder.h
dom/encoding/domainsfallbacks.properties
dom/encoding/encodingsgroups.properties
dom/encoding/localesfallbacks.properties
dom/encoding/test/test_TLD.html
dom/encoding/test/unit/test_misc.js
dom/fetch/BodyExtractor.cpp
dom/fetch/Fetch.cpp
dom/fetch/FetchUtil.cpp
dom/html/HTMLFormSubmission.cpp
dom/html/HTMLFormSubmission.h
dom/html/nsHTMLDocument.cpp
dom/json/nsJSON.cpp
dom/json/nsJSON.h
dom/json/test/unit/test_encode.js
dom/plugins/base/nsPluginTags.cpp
dom/script/ScriptLoadHandler.cpp
dom/script/ScriptLoadHandler.h
dom/script/ScriptLoader.cpp
dom/script/ScriptLoader.h
dom/url/URLSearchParams.cpp
dom/url/URLSearchParams.h
dom/url/tests/test_urlSearchParams_utf8.html
dom/webidl/TextEncoder.webidl
dom/workers/ServiceWorkerEvents.cpp
dom/xhr/XMLHttpRequestMainThread.cpp
dom/xhr/XMLHttpRequestMainThread.h
extensions/spellcheck/hunspell/glue/mozHunspell.cpp
extensions/spellcheck/hunspell/glue/mozHunspell.h
extensions/spellcheck/hunspell/src/csutil.cxx
extensions/spellcheck/src/mozEnglishWordUtils.h
extensions/spellcheck/src/mozPersonalDictionary.cpp
extensions/spellcheck/src/mozPersonalDictionary.h
gfx/thebes/gfxFontUtils.cpp
intl/Encoding.h
intl/encoding_glue/Cargo.toml
intl/encoding_glue/src/lib.rs
intl/gtest/TestEncoding.cpp
intl/gtest/moz.build
intl/locale/mac/nsMacCharset.cpp
intl/locale/unix/nsUNIXCharset.cpp
intl/locale/unix/unixcharset.properties
intl/locale/windows/nsWinCharset.cpp
intl/moz.build
intl/uconv/moz.build
intl/uconv/nsConverterInputStream.cpp
intl/uconv/nsConverterInputStream.h
intl/uconv/nsConverterOutputStream.cpp
intl/uconv/nsConverterOutputStream.h
intl/uconv/nsIScriptableUConv.idl
intl/uconv/nsITextToSubURI.idl
intl/uconv/nsIUTF8ConverterService.idl
intl/uconv/nsScriptableUConv.cpp
intl/uconv/nsScriptableUConv.h
intl/uconv/nsTextToSubURI.cpp
intl/uconv/nsUConvModule.cpp
intl/uconv/nsUTF8ConverterService.cpp
intl/uconv/tests/moz.build
intl/uconv/tests/unit/hangulTestStrings.js
intl/uconv/tests/unit/test_bug1008832.js
intl/uconv/tests/unit/test_bug116882.js
intl/uconv/tests/unit/test_bug340714.js
intl/uconv/tests/unit/test_bug563283.js
intl/uconv/tests/unit/test_charset_conversion.js
intl/uconv/tests/unit/test_decode_EUCKR_Hangul.js
intl/uconv/tests/unit/test_decode_x_mac_arabic.js
intl/uconv/tests/unit/test_decode_x_mac_arabic_internal.js
intl/uconv/tests/unit/test_decode_x_mac_ce.js
intl/uconv/tests/unit/test_decode_x_mac_croatian.js
intl/uconv/tests/unit/test_decode_x_mac_devanagari.js
intl/uconv/tests/unit/test_decode_x_mac_farsi.js
intl/uconv/tests/unit/test_decode_x_mac_farsi_internal.js
intl/uconv/tests/unit/test_decode_x_mac_greek.js
intl/uconv/tests/unit/test_decode_x_mac_gujarati.js
intl/uconv/tests/unit/test_decode_x_mac_gurmukhi.js
intl/uconv/tests/unit/test_decode_x_mac_hebrew.js
intl/uconv/tests/unit/test_decode_x_mac_hebrew_internal.js
intl/uconv/tests/unit/test_decode_x_mac_icelandic.js
intl/uconv/tests/unit/test_decode_x_mac_romanian.js
intl/uconv/tests/unit/test_decode_x_mac_turkish.js
intl/uconv/tests/unit/test_encode_x_mac_arabic.js
intl/uconv/tests/unit/test_encode_x_mac_ce.js
intl/uconv/tests/unit/test_encode_x_mac_croatian.js
intl/uconv/tests/unit/test_encode_x_mac_devanagari.js
intl/uconv/tests/unit/test_encode_x_mac_farsi.js
intl/uconv/tests/unit/test_encode_x_mac_greek.js
intl/uconv/tests/unit/test_encode_x_mac_gujarati.js
intl/uconv/tests/unit/test_encode_x_mac_gurmukhi.js
intl/uconv/tests/unit/test_encode_x_mac_hebrew.js
intl/uconv/tests/unit/test_encode_x_mac_icelandic.js
intl/uconv/tests/unit/test_encode_x_mac_romanian.js
intl/uconv/tests/unit/test_encode_x_mac_turkish.js
intl/uconv/tests/unit/test_unmapped.js
intl/uconv/tests/unit/xpcshell.ini
intl/unicharutil/nsSaveAsCharset.cpp
intl/unicharutil/nsSaveAsCharset.h
js/xpconnect/src/xpc.msg
layout/reftests/bugs/116882-1-ref.html
layout/style/Loader.cpp
netwerk/base/nsStandardURL.cpp
netwerk/base/nsStandardURL.h
netwerk/base/nsUnicharStreamLoader.cpp
netwerk/base/nsUnicharStreamLoader.h
netwerk/mime/nsMIMEHeaderParamImpl.cpp
netwerk/protocol/wyciwyg/WyciwygChannelChild.cpp
netwerk/protocol/wyciwyg/nsWyciwygChannel.cpp
netwerk/streamconv/converters/nsDirIndexParser.cpp
netwerk/streamconv/converters/nsIndexedToHTML.cpp
parser/html/nsHtml5AttributeName.cpp
parser/html/nsHtml5AttributeName.h
parser/html/nsHtml5ElementName.cpp
parser/html/nsHtml5ElementName.h
parser/html/nsHtml5HtmlAttributes.cpp
parser/html/nsHtml5HtmlAttributes.h
parser/html/nsHtml5MetaScanner.cpp
parser/html/nsHtml5MetaScanner.h
parser/html/nsHtml5MetaScannerCppSupplement.h
parser/html/nsHtml5OwningUTF16Buffer.cpp
parser/html/nsHtml5OwningUTF16Buffer.h
parser/html/nsHtml5Parser.cpp
parser/html/nsHtml5Portability.h
parser/html/nsHtml5StackNode.cpp
parser/html/nsHtml5StackNode.h
parser/html/nsHtml5StateSnapshot.cpp
parser/html/nsHtml5StateSnapshot.h
parser/html/nsHtml5StreamParser.cpp
parser/html/nsHtml5StreamParser.h
parser/html/nsHtml5UTF16Buffer.cpp
parser/html/nsHtml5UTF16Buffer.h
parser/htmlparser/nsParser.cpp
parser/htmlparser/nsScanner.cpp
parser/htmlparser/nsScanner.h
testing/web-platform/meta/dom/nodes/Document-characterSet-normalization.html.ini
testing/web-platform/meta/encoding/iso-2022-jp-decoder.html.ini
testing/web-platform/meta/encoding/single-byte-decoder.html.ini
testing/web-platform/meta/encoding/textdecoder-labels.html.ini
testing/web-platform/meta/eventsource/format-bom-2.htm.ini
testing/web-platform/meta/url/urlencoded-parser.html.ini
testing/web-platform/tests/encoding/iso-2022-jp-decoder.html
testing/web-platform/tests/encoding/single-byte-decoder.html
toolkit/components/osfile/NativeOSFileInternals.cpp
toolkit/components/passwordmgr/OSCrypto_win.js
toolkit/library/gtest/rust/Cargo.lock
toolkit/library/gtest/rust/Cargo.toml
toolkit/library/rust/Cargo.lock
toolkit/library/rust/Cargo.toml
toolkit/library/rust/gkrust-features.mozbuild
toolkit/library/rust/shared/Cargo.toml
toolkit/library/rust/shared/lib.rs
toolkit/locales/en-US/chrome/global/charsetMenu.properties
toolkit/modules/CharsetMenu.jsm
widget/gtk/nsClipboard.cpp
xpcom/base/ErrorList.py
xpcom/io/nsIUnicharOutputStream.idl
--- a/browser/components/migration/360seProfileMigrator.js
+++ b/browser/components/migration/360seProfileMigrator.js
@@ -229,17 +229,17 @@ Object.defineProperty(Qihoo360seProfileM
       loginIni.append("login.ini");
       if (!loginIni.exists()) {
         throw new Error("360 Secure Browser's 'login.ini' does not exist.");
       }
       if (!loginIni.isReadable()) {
         throw new Error("360 Secure Browser's 'login.ini' file could not be read.");
       }
 
-      let loginIniInUtf8 = copyToTempUTF8File(loginIni, "gbk");
+      let loginIniInUtf8 = copyToTempUTF8File(loginIni, "GBK");
       let loginIniObj = parseINIStrings(loginIniInUtf8);
       try {
         loginIniInUtf8.remove(false);
       } catch (ex) {}
 
       let nowLoginEmail = loginIniObj.NowLogin && loginIniObj.NowLogin.email;
 
       /*
--- a/browser/components/preferences/fonts.xul
+++ b/browser/components/preferences/fonts.xul
@@ -20,25 +20,25 @@
             onbeforeaccept="return gFontsDialog.onBeforeAccept();"
             style="">
 
   <script type="application/javascript" src="chrome://browser/content/utilityOverlay.js"/>
 
   <prefpane id="FontsDialogPane"
             class="largeDialogContainer"
             helpTopic="prefs-fonts-and-colors">
-  
+
     <preferences id="fontPreferences">
       <preference id="font.language.group"  name="font.language.group"  type="wstring"/>
       <preference id="browser.display.use_document_fonts"
                   name="browser.display.use_document_fonts"
                   type="int"/>
       <preference id="intl.charset.fallback.override" name="intl.charset.fallback.override" type="string"/>
     </preferences>
-    
+
     <stringbundle id="bundlePreferences" src="chrome://browser/locale/preferences/preferences.properties"/>
     <script type="application/javascript" src="chrome://mozapps/content/preferences/fontbuilder.js"/>
     <script type="application/javascript" src="chrome://browser/content/preferences/fonts.js"/>
 
     <!-- Fonts for: [ Language ] -->
     <groupbox>
       <caption>
         <hbox align="center">
@@ -74,25 +74,25 @@
             <menuitem value="x-telu"          label="&font.langGroup.telugu;"/>
             <menuitem value="th"              label="&font.langGroup.thai;"/>
             <menuitem value="x-tibt"          label="&font.langGroup.tibetan;"/>
             <menuitem value="x-cans"          label="&font.langGroup.canadian;"/>
             <menuitem value="x-unicode"       label="&font.langGroup.other;"/>
           </menupopup>
         </menulist>
       </caption>
-      
+
       <grid>
         <columns>
           <column/>
           <column flex="1"/>
           <column/>
           <column/>
         </columns>
-        
+
         <rows>
           <row>
             <separator class="thin"/>
           </row>
 
           <row align="center">
             <hbox align="center" pack="end">
               <label accesskey="&proportional.accesskey;" control="defaultFontType">&proportional.label;</label>
@@ -102,17 +102,17 @@
                 <menuitem value="serif" label="&useDefaultFontSerif.label;"/>
                 <menuitem value="sans-serif" label="&useDefaultFontSansSerif.label;"/>
               </menupopup>
             </menulist>
             <hbox align="center" pack="end">
               <label value="&size.label;"
                      accesskey="&sizeProportional.accesskey;"
                      control="sizeVar"/>
-            </hbox>  
+            </hbox>
             <menulist id="sizeVar" delayprefsave="true">
               <menupopup>
                 <menuitem value="9" label="9"/>
                 <menuitem value="10" label="10"/>
                 <menuitem value="11" label="11"/>
                 <menuitem value="12" label="12"/>
                 <menuitem value="13" label="13"/>
                 <menuitem value="14" label="14"/>
@@ -159,17 +159,17 @@
               <label accesskey="&monospace.accesskey;" control="monospace">&monospace.label;</label>
             </hbox>
             <menulist id="monospace" flex="1" style="width: 0px;" crop="right" delayprefsave="true"
                       onsyncfrompreference="return FontBuilder.readFontSelection(this);"/>
             <hbox align="center" pack="end">
               <label value="&size.label;"
                      accesskey="&sizeMonospace.accesskey;"
                      control="sizeMono"/>
-            </hbox>  
+            </hbox>
             <menulist id="sizeMono" delayprefsave="true">
               <menupopup>
                 <menuitem value="9" label="9"/>
                 <menuitem value="10" label="10"/>
                 <menuitem value="11" label="11"/>
                 <menuitem value="12" label="12"/>
                 <menuitem value="13" label="13"/>
                 <menuitem value="14" label="14"/>
@@ -232,17 +232,17 @@
               <menuitem value="72" label="72"/>
             </menupopup>
           </menulist>
         </hbox>
       </hbox>
       <separator/>
       <separator class="groove"/>
       <hbox>
-        <checkbox id="useDocumentFonts" 
+        <checkbox id="useDocumentFonts"
                   label="&allowPagesToUseOwn.label;" accesskey="&allowPagesToUseOwn.accesskey;"
                   preference="browser.display.use_document_fonts"
                   onsyncfrompreference="return gFontsDialog.readUseDocumentFonts();"
                   onsynctopreference="return gFontsDialog.writeUseDocumentFonts();"/>
       </hbox>
     </groupbox>
 
     <!-- Text Encoding -->
@@ -255,16 +255,18 @@
                control="DefaultCharsetList"/>
         <menulist id="DefaultCharsetList" preference="intl.charset.fallback.override">
           <menupopup>
             <menuitem label="&languages.customize.Fallback.auto;"        value=""/>
             <menuitem label="&languages.customize.Fallback.arabic;"      value="windows-1256"/>
             <menuitem label="&languages.customize.Fallback.baltic;"      value="windows-1257"/>
             <menuitem label="&languages.customize.Fallback.ceiso;"       value="ISO-8859-2"/>
             <menuitem label="&languages.customize.Fallback.cewindows;"   value="windows-1250"/>
+            <!-- Using gbk instead of GBK for compat with previously-stored prefs.
+                 The value gets normalized in dom/encoding/FallbackEncoding.cpp. -->
             <menuitem label="&languages.customize.Fallback.simplified;"  value="gbk"/>
             <menuitem label="&languages.customize.Fallback.traditional;" value="Big5"/>
             <menuitem label="&languages.customize.Fallback.cyrillic;"    value="windows-1251"/>
             <menuitem label="&languages.customize.Fallback.greek;"       value="ISO-8859-7"/>
             <menuitem label="&languages.customize.Fallback.hebrew;"      value="windows-1255"/>
             <menuitem label="&languages.customize.Fallback.japanese;"    value="Shift_JIS"/>
             <menuitem label="&languages.customize.Fallback.korean;"      value="EUC-KR"/>
             <menuitem label="&languages.customize.Fallback.thai;"        value="windows-874"/>
--- a/docshell/base/nsDocShell.cpp
+++ b/docshell/base/nsDocShell.cpp
@@ -11578,28 +11578,26 @@ nsDocShell::ScrollToAnchor(bool aCurHasR
 
     // Above will fail if the anchor name is not UTF-8.  Need to
     // convert from document charset to unicode.
     if (NS_FAILED(rv)) {
       // Get a document charset
       NS_ENSURE_TRUE(mContentViewer, NS_ERROR_FAILURE);
       nsIDocument* doc = mContentViewer->GetDocument();
       NS_ENSURE_TRUE(doc, NS_ERROR_FAILURE);
-      const nsACString& aCharset = doc->GetDocumentCharacterSet();
+      const nsACString& charset = doc->GetDocumentCharacterSet();
 
       nsCOMPtr<nsITextToSubURI> textToSubURI =
         do_GetService(NS_ITEXTTOSUBURI_CONTRACTID, &rv);
       NS_ENSURE_SUCCESS(rv, rv);
 
       // Unescape and convert to unicode
-      nsXPIDLString uStr;
-
-      rv = textToSubURI->UnEscapeAndConvert(PromiseFlatCString(aCharset).get(),
-                                            PromiseFlatCString(aNewHash).get(),
-                                            getter_Copies(uStr));
+      nsAutoString uStr;
+
+      rv = textToSubURI->UnEscapeAndConvert(charset, aNewHash, uStr);
       NS_ENSURE_SUCCESS(rv, rv);
 
       // Ignore return value of GoToAnchor, since it will return an error
       // if there is no such anchor in the document, which is actually a
       // success condition for us (we want to update the session history
       // with the new URI no matter whether we actually scrolled
       // somewhere).
       //
--- a/dom/base/BodyUtil.cpp
+++ b/dom/base/BodyUtil.cpp
@@ -2,87 +2,39 @@
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 #include "BodyUtil.h"
 
 #include "nsError.h"
 #include "nsString.h"
 #include "nsIGlobalObject.h"
-#include "nsIUnicodeDecoder.h"
+#include "mozilla/Encoding.h"
 
 #include "nsCharSeparatedTokenizer.h"
 #include "nsDOMString.h"
 #include "nsNetUtil.h"
 #include "nsReadableUtils.h"
 #include "nsStreamUtils.h"
 #include "nsStringStream.h"
 
 #include "mozilla/ErrorResult.h"
-#include "mozilla/dom/EncodingUtils.h"
 #include "mozilla/dom/Exceptions.h"
 #include "mozilla/dom/FetchUtil.h"
 #include "mozilla/dom/File.h"
 #include "mozilla/dom/FormData.h"
 #include "mozilla/dom/Headers.h"
 #include "mozilla/dom/Promise.h"
 #include "mozilla/dom/URLSearchParams.h"
 
 namespace mozilla {
 namespace dom {
 
 namespace {
 
-class StreamDecoder final
-{
-  nsCOMPtr<nsIUnicodeDecoder> mDecoder;
-  nsString mDecoded;
-
-public:
-  StreamDecoder()
-    : mDecoder(EncodingUtils::DecoderForEncoding("UTF-8"))
-  {
-    MOZ_ASSERT(mDecoder);
-  }
-
-  nsresult
-  AppendText(const char* aSrcBuffer, uint32_t aSrcBufferLen)
-  {
-    int32_t destBufferLen;
-    nsresult rv =
-      mDecoder->GetMaxLength(aSrcBuffer, aSrcBufferLen, &destBufferLen);
-    if (NS_WARN_IF(NS_FAILED(rv))) {
-      return rv;
-    }
-
-    if (!mDecoded.SetCapacity(mDecoded.Length() + destBufferLen, fallible)) {
-      return NS_ERROR_OUT_OF_MEMORY;
-    }
-
-    char16_t* destBuffer = mDecoded.BeginWriting() + mDecoded.Length();
-    int32_t totalChars = mDecoded.Length();
-
-    int32_t srcLen = (int32_t) aSrcBufferLen;
-    int32_t outLen = destBufferLen;
-    rv = mDecoder->Convert(aSrcBuffer, &srcLen, destBuffer, &outLen);
-    MOZ_ASSERT(NS_SUCCEEDED(rv));
-
-    totalChars += outLen;
-    mDecoded.SetLength(totalChars);
-
-    return NS_OK;
-  }
-
-  nsString&
-  GetText()
-  {
-    return mDecoded;
-  }
-};
-
 // Reads over a CRLF and positions start after it.
 static bool
 PushOverLine(nsACString::const_iterator& aStart,
 	     const nsACString::const_iterator& aEnd)
 {
   if (*aStart == nsCRT::CR && (aEnd - aStart > 1) && *(++aStart) == nsCRT::LF) {
     ++aStart; // advance to after CRLF
     return true;
@@ -530,23 +482,21 @@ BodyUtil::ConsumeFormData(nsIGlobalObjec
   return nullptr;
 }
 
 // static
 nsresult
 BodyUtil::ConsumeText(uint32_t aInputLength, uint8_t* aInput,
                        nsString& aText)
 {
-  StreamDecoder decoder;
-  nsresult rv = decoder.AppendText(reinterpret_cast<char*>(aInput),
-                                   aInputLength);
-  if (NS_WARN_IF(NS_FAILED(rv))) {
+  nsresult rv =
+    UTF_8_ENCODING->DecodeWithBOMRemoval(MakeSpan(aInput, aInputLength), aText);
+  if (NS_FAILED(rv)) {
     return rv;
   }
-  aText = decoder.GetText();
   return NS_OK;
 }
 
 // static
 void
 BodyUtil::ConsumeJson(JSContext* aCx, JS::MutableHandle<JS::Value> aValue,
                        const nsString& aStr, ErrorResult& aRv)
 {
--- a/dom/base/EventSource.cpp
+++ b/dom/base/EventSource.cpp
@@ -32,32 +32,30 @@
 #include "nsIStringBundle.h"
 #include "nsIConsoleService.h"
 #include "nsIObserverService.h"
 #include "nsIScriptObjectPrincipal.h"
 #include "nsJSUtils.h"
 #include "nsIThreadRetargetableRequest.h"
 #include "nsIAsyncVerifyRedirectCallback.h"
 #include "nsIScriptError.h"
-#include "mozilla/dom/EncodingUtils.h"
 #include "nsIContentSecurityPolicy.h"
 #include "nsContentUtils.h"
 #include "mozilla/Preferences.h"
 #include "xpcpublic.h"
 #include "nsWrapperCacheInlines.h"
 #include "mozilla/Attributes.h"
 #include "nsError.h"
+#include "mozilla/Encoding.h"
 
 namespace mozilla {
 namespace dom {
 
 using namespace workers;
 
-#define REPLACEMENT_CHAR     (char16_t)0xFFFD
-#define BOM_CHAR             (char16_t)0xFEFF
 #define SPACE_CHAR           (char16_t)0x0020
 #define CR_CHAR              (char16_t)0x000D
 #define LF_CHAR              (char16_t)0x000A
 #define COLON_CHAR           (char16_t)0x003A
 
 // Reconnection time related values in milliseconds. The default one is equal
 // to the default value of the pref dom.server-events.default-reconnection-time
 #define MIN_RECONNECTION_TIME_VALUE       500
@@ -208,23 +206,17 @@ public:
 
   RefPtr<EventSource> mEventSource;
 
   /**
    * A simple state machine used to manage the event-source's line buffer
    *
    * PARSE_STATE_OFF              -> PARSE_STATE_BEGIN_OF_STREAM
    *
-   * PARSE_STATE_BEGIN_OF_STREAM  -> PARSE_STATE_BOM_WAS_READ |
-   *                                 PARSE_STATE_CR_CHAR |
-   *                                 PARSE_STATE_BEGIN_OF_LINE |
-   *                                 PARSE_STATE_COMMENT |
-   *                                 PARSE_STATE_FIELD_NAME
-   *
-   * PARSE_STATE_BOM_WAS_READ     -> PARSE_STATE_CR_CHAR |
+   * PARSE_STATE_BEGIN_OF_STREAM     -> PARSE_STATE_CR_CHAR |
    *                                 PARSE_STATE_BEGIN_OF_LINE |
    *                                 PARSE_STATE_COMMENT |
    *                                 PARSE_STATE_FIELD_NAME
    *
    * PARSE_STATE_CR_CHAR -> PARSE_STATE_CR_CHAR |
    *                        PARSE_STATE_COMMENT |
    *                        PARSE_STATE_FIELD_NAME |
    *                        PARSE_STATE_BEGIN_OF_LINE
@@ -250,17 +242,16 @@ public:
    *
    * Whenever the parser find an empty line or the end-of-file
    * it dispatches the stacked event.
    *
    */
   enum ParserStatus {
     PARSE_STATE_OFF = 0,
     PARSE_STATE_BEGIN_OF_STREAM,
-    PARSE_STATE_BOM_WAS_READ,
     PARSE_STATE_CR_CHAR,
     PARSE_STATE_COMMENT,
     PARSE_STATE_FIELD_NAME,
     PARSE_STATE_FIRST_CHAR_OF_FIELD_VALUE,
     PARSE_STATE_FIELD_VALUE,
     PARSE_STATE_BEGIN_OF_LINE
   };
 
@@ -280,18 +271,17 @@ public:
   };
 
   // Message related data members. May be set / initialized when initializing
   // EventSourceImpl on target thread but should only be used on target thread.
   nsString mLastEventID;
   UniquePtr<Message> mCurrentMessage;
   nsDeque mMessagesToDispatch;
   ParserStatus mStatus;
-  nsCOMPtr<nsIUnicodeDecoder> mUnicodeDecoder;
-  nsresult mLastConvertionResult;
+  mozilla::UniquePtr<mozilla::Decoder> mUnicodeDecoder;
   nsString mLastFieldName;
   nsString mLastFieldValue;
 
   // EventSourceImpl internal states.
   // The worker private where the EventSource is created. nullptr if created on
   // main thread. (accessed on worker thread only)
   WorkerPrivate* mWorkerPrivate;
   // Holder to worker to keep worker alive. (accessed on worker thread only)
@@ -346,17 +336,16 @@ NS_IMPL_ISUPPORTS(EventSourceImpl,
                   nsISupportsWeakReference,
                   nsIEventTarget,
                   nsIThreadRetargetableStreamListener)
 
 EventSourceImpl::EventSourceImpl(EventSource* aEventSource)
   : mEventSource(aEventSource)
   , mReconnectionTime(0)
   , mStatus(PARSE_STATE_OFF)
-  , mLastConvertionResult(NS_OK)
   , mMutex("EventSourceImpl::mMutex")
   , mFrozen(false)
   , mGoingToDispatchAllMessages(false)
   , mIsMainThread(NS_IsMainThread())
   , mIsShutDown(false)
   , mScriptLine(0)
   , mScriptColumn(0)
   , mInnerWindowID(0)
@@ -593,17 +582,17 @@ EventSourceImpl::Init(nsIPrincipal* aPri
       return;
     }
   }
 
   mReconnectionTime =
     Preferences::GetInt("dom.server-events.default-reconnection-time",
                         DEFAULT_RECONNECTION_TIME_VALUE);
 
-  mUnicodeDecoder = EncodingUtils::DecoderForEncoding("UTF-8");
+  mUnicodeDecoder = UTF_8_ENCODING->NewDecoderWithBOMRemoval();
 
   // the constructor should throw a SYNTAX_ERROR only if it fails resolving the
   // url parameter, so we don't care about the InitChannelAndRequestEventSource
   // result.
   InitChannelAndRequestEventSource();
 }
 
 //-----------------------------------------------------------------------------
@@ -725,37 +714,37 @@ EventSourceImpl::StreamReaderFunc(nsIInp
 
 void
 EventSourceImpl::ParseSegment(const char* aBuffer, uint32_t aLength)
 {
   AssertIsOnTargetThread();
   if (IsClosed()) {
     return;
   }
-  int32_t srcCount, outCount;
-  char16_t out[2];
-  const char* p = aBuffer;
-  const char* end = aBuffer + aLength;
-
-  do {
-    srcCount = aLength - (p - aBuffer);
-    outCount = 2;
-
-    mLastConvertionResult =
-      mUnicodeDecoder->Convert(p, &srcCount, out, &outCount);
-    MOZ_ASSERT(mLastConvertionResult != NS_ERROR_ILLEGAL_INPUT);
-
-    for (int32_t i = 0; i < outCount; ++i) {
-      nsresult rv = ParseCharacter(out[i]);
+  char16_t buffer[1024];
+  auto dst = MakeSpan(buffer);
+  auto src = AsBytes(MakeSpan(aBuffer, aLength));
+  // XXX EOF handling is https://bugzilla.mozilla.org/show_bug.cgi?id=1369018
+  for (;;) {
+    uint32_t result;
+    size_t read;
+    size_t written;
+    bool hadErrors;
+    Tie(result, read, written, hadErrors) =
+      mUnicodeDecoder->DecodeToUTF16(src, dst, false);
+    Unused << hadErrors;
+    for (auto c : dst.To(written)) {
+      nsresult rv = ParseCharacter(c);
       NS_ENSURE_SUCCESS_VOID(rv);
     }
-    p = p + srcCount;
-  } while (p < end &&
-           mLastConvertionResult != NS_PARTIAL_MORE_INPUT &&
-           mLastConvertionResult != NS_OK);
+    if (result == kInputEmpty) {
+      return;
+    }
+    src = src.From(read);
+  }
 }
 
 class DataAvailableRunnable final : public Runnable
 {
   private:
     RefPtr<EventSourceImpl> mEventSourceImpl;
     UniquePtr<char[]> mData;
     uint32_t mLength;
@@ -1158,20 +1147,19 @@ EventSourceImpl::ResetConnection()
   return NS_OK;
 }
 
 void
 EventSourceImpl::ResetDecoder()
 {
   AssertIsOnTargetThread();
   if (mUnicodeDecoder) {
-    mUnicodeDecoder->Reset();
+    UTF_8_ENCODING->NewDecoderWithBOMRemovalInto(*mUnicodeDecoder);
   }
   mStatus = PARSE_STATE_OFF;
-  mLastConvertionResult = NS_OK;
   ClearFields();
 }
 
 class CallRestartConnection final : public WorkerMainThreadRunnable
 {
 public:
   explicit CallRestartConnection(EventSourceImpl* aEventSourceImpl)
     : WorkerMainThreadRunnable(
@@ -1677,32 +1665,16 @@ EventSourceImpl::ParseCharacter(char16_t
 
   switch (mStatus) {
     case PARSE_STATE_OFF:
       NS_ERROR("Invalid state");
       return NS_ERROR_FAILURE;
       break;
 
     case PARSE_STATE_BEGIN_OF_STREAM:
-      if (aChr == BOM_CHAR) {
-        mStatus = PARSE_STATE_BOM_WAS_READ;  // ignore it
-      } else if (aChr == CR_CHAR) {
-        mStatus = PARSE_STATE_CR_CHAR;
-      } else if (aChr == LF_CHAR) {
-        mStatus = PARSE_STATE_BEGIN_OF_LINE;
-      } else if (aChr == COLON_CHAR) {
-        mStatus = PARSE_STATE_COMMENT;
-      } else {
-        mLastFieldName += aChr;
-        mStatus = PARSE_STATE_FIELD_NAME;
-      }
-
-      break;
-
-    case PARSE_STATE_BOM_WAS_READ:
       if (aChr == CR_CHAR) {
         mStatus = PARSE_STATE_CR_CHAR;
       } else if (aChr == LF_CHAR) {
         mStatus = PARSE_STATE_BEGIN_OF_LINE;
       } else if (aChr == COLON_CHAR) {
         mStatus = PARSE_STATE_COMMENT;
       } else {
         mLastFieldName += aChr;
--- a/dom/base/EventSource.h
+++ b/dom/base/EventSource.h
@@ -19,17 +19,16 @@
 #include "nsIObserver.h"
 #include "nsIStreamListener.h"
 #include "nsIChannelEventSink.h"
 #include "nsIInterfaceRequestor.h"
 #include "nsITimer.h"
 #include "nsIHttpChannel.h"
 #include "nsWeakReference.h"
 #include "nsDeque.h"
-#include "nsIUnicodeDecoder.h"
 
 class nsPIDOMWindowInner;
 
 namespace mozilla {
 
 class ErrorResult;
 
 namespace dom {
--- a/dom/base/FormData.cpp
+++ b/dom/base/FormData.cpp
@@ -5,24 +5,25 @@
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 #include "FormData.h"
 #include "nsIVariant.h"
 #include "nsIInputStream.h"
 #include "mozilla/dom/File.h"
 #include "mozilla/dom/Directory.h"
 #include "mozilla/dom/HTMLFormElement.h"
+#include "mozilla/Encoding.h"
 
 #include "MultipartBlobImpl.h"
 
 using namespace mozilla;
 using namespace mozilla::dom;
 
 FormData::FormData(nsISupports* aOwner)
-  : HTMLFormSubmission(NS_LITERAL_CSTRING("UTF-8"), nullptr)
+  : HTMLFormSubmission(WrapNotNull(UTF_8_ENCODING), nullptr)
   , mOwner(aOwner)
 {
 }
 
 namespace {
 
 already_AddRefed<File>
 GetOrCreateFileCalledBlob(Blob& aBlob, ErrorResult& aRv)
@@ -396,17 +397,17 @@ FormData::Constructor(const GlobalObject
 
 // -------------------------------------------------------------------------
 // nsIXHRSendable
 
 NS_IMETHODIMP
 FormData::GetSendInfo(nsIInputStream** aBody, uint64_t* aContentLength,
                       nsACString& aContentTypeWithCharset, nsACString& aCharset)
 {
-  FSMultipartFormData fs(NS_LITERAL_CSTRING("UTF-8"), nullptr);
+  FSMultipartFormData fs(WrapNotNull(UTF_8_ENCODING), nullptr);
 
   for (uint32_t i = 0; i < mFormData.Length(); ++i) {
     if (mFormData[i].wasNullBlob) {
       MOZ_ASSERT(mFormData[i].value.IsUSVString());
       fs.AddNameBlobOrNullPair(mFormData[i].name, nullptr);
     } else if (mFormData[i].value.IsUSVString()) {
       fs.AddNameValuePair(mFormData[i].name,
                           mFormData[i].value.GetAsUSVString());
--- a/dom/base/WebSocket.cpp
+++ b/dom/base/WebSocket.cpp
@@ -28,17 +28,16 @@
 #include "nsIDOMWindow.h"
 #include "nsIDocument.h"
 #include "nsXPCOM.h"
 #include "nsIXPConnect.h"
 #include "nsContentUtils.h"
 #include "nsError.h"
 #include "nsIScriptObjectPrincipal.h"
 #include "nsIURL.h"
-#include "nsIUnicodeEncoder.h"
 #include "nsThreadUtils.h"
 #include "nsIPromptFactory.h"
 #include "nsIWindowWatcher.h"
 #include "nsIPrompt.h"
 #include "nsIStringBundle.h"
 #include "nsIConsoleService.h"
 #include "mozilla/dom/CloseEvent.h"
 #include "mozilla/net/WebSocketEventService.h"
--- a/dom/base/nsContentUtils.cpp
+++ b/dom/base/nsContentUtils.cpp
@@ -49,17 +49,16 @@
 #include "mozilla/dom/HTMLMediaElement.h"
 #include "mozilla/dom/HTMLTemplateElement.h"
 #include "mozilla/dom/HTMLContentElement.h"
 #include "mozilla/dom/HTMLShadowElement.h"
 #include "mozilla/dom/IPCBlobUtils.h"
 #include "mozilla/dom/Promise.h"
 #include "mozilla/dom/ScriptSettings.h"
 #include "mozilla/dom/TabParent.h"
-#include "mozilla/dom/TextDecoder.h"
 #include "mozilla/dom/TouchEvent.h"
 #include "mozilla/dom/ShadowRoot.h"
 #include "mozilla/dom/XULCommandEvent.h"
 #include "mozilla/dom/WorkerPrivate.h"
 #include "mozilla/dom/workers/ServiceWorkerManager.h"
 #include "mozilla/EventDispatcher.h"
 #include "mozilla/EventListenerManager.h"
 #include "mozilla/EventStateManager.h"
@@ -217,16 +216,17 @@
 #include "mozilla/BloomFilter.h"
 #include "TabChild.h"
 #include "mozilla/dom/DocGroup.h"
 #include "mozilla/dom/TabGroup.h"
 #include "nsIWebNavigationInfo.h"
 #include "nsPluginHost.h"
 #include "mozilla/HangAnnotations.h"
 #include "mozilla/ServoRestyleManager.h"
+#include "mozilla/Encoding.h"
 
 #include "nsIBidiKeyboard.h"
 
 #if defined(XP_WIN)
 // Undefine LoadImage to prevent naming conflict with Windows.
 #undef LoadImage
 #endif
 
@@ -4492,62 +4492,45 @@ nsContentUtils::GetSubdocumentWithOuterW
 // Convert the string from the given encoding to Unicode.
 /* static */
 nsresult
 nsContentUtils::ConvertStringFromEncoding(const nsACString& aEncoding,
                                           const char* aInput,
                                           uint32_t aInputLen,
                                           nsAString& aOutput)
 {
-  CheckedInt32 len = aInputLen;
-  if (!len.isValid()) {
-    return NS_ERROR_OUT_OF_MEMORY;
-  }
-
-  nsAutoCString encoding;
+  const Encoding* encoding;
   if (aEncoding.IsEmpty()) {
-    encoding.AssignLiteral("UTF-8");
+    encoding = UTF_8_ENCODING;
   } else {
-    encoding.Assign(aEncoding);
-  }
-
-  ErrorResult rv;
-  nsAutoPtr<TextDecoder> decoder(new TextDecoder());
-  decoder->InitWithEncoding(encoding, false);
-
-  decoder->Decode(aInput, len.value(), false,
-                  aOutput, rv);
-  return rv.StealNSResult();
+    encoding = Encoding::ForName(aEncoding);
+  }
+  nsresult rv = encoding->DecodeWithBOMRemoval(MakeSpan(reinterpret_cast<const uint8_t*>(aInput), aInputLen), aOutput);
+  if (NS_FAILED(rv)) {
+    return rv;
+  }
+  return NS_OK;
 }
 
 /* static */
 bool
 nsContentUtils::CheckForBOM(const unsigned char* aBuffer, uint32_t aLength,
                             nsACString& aCharset)
 {
-  bool found = true;
-  aCharset.Truncate();
-  if (aLength >= 3 &&
-      aBuffer[0] == 0xEF &&
-      aBuffer[1] == 0xBB &&
-      aBuffer[2] == 0xBF) {
-    aCharset = "UTF-8";
-  }
-  else if (aLength >= 2 &&
-           aBuffer[0] == 0xFE && aBuffer[1] == 0xFF) {
-    aCharset = "UTF-16BE";
-  }
-  else if (aLength >= 2 &&
-           aBuffer[0] == 0xFF && aBuffer[1] == 0xFE) {
-    aCharset = "UTF-16LE";
-  } else {
-    found = false;
-  }
-
-  return found;
+  auto span = MakeSpan(reinterpret_cast<const uint8_t*>(aBuffer), aLength);
+  const Encoding* encoding;
+  size_t bomLength;
+  Tie(encoding, bomLength) = Encoding::ForBOM(span);
+  Unused << bomLength;
+  if (!encoding) {
+    aCharset.Truncate();
+    return false;
+  }
+  encoding->Name(aCharset);
+  return true;
 }
 
 /* static */
 void
 nsContentUtils::RegisterShutdownObserver(nsIObserver* aObserver)
 {
   nsCOMPtr<nsIObserverService> observerService =
     mozilla::services::GetObserverService();
--- a/dom/base/nsContentUtils.h
+++ b/dom/base/nsContentUtils.h
@@ -615,16 +615,19 @@ public:
   static nsresult NewURIWithDocumentCharset(nsIURI** aResult,
                                             const nsAString& aSpec,
                                             nsIDocument* aDocument,
                                             nsIURI* aBaseURI);
 
   /**
    * Convert aInput (in encoding aEncoding) to UTF16 in aOutput.
    *
+   * @deprecated Use mozilla::Encoding::DecodeWithBOMRemoval() in new code.
+   * https://bugzilla.mozilla.org/show_bug.cgi?id=1369020
+   *
    * @param aEncoding the Gecko-canonical name of the encoding or the empty
    *                  string (meaning UTF-8)
    */
   static nsresult ConvertStringFromEncoding(const nsACString& aEncoding,
                                             const char* aInput,
                                             uint32_t aInputLen,
                                             nsAString& aOutput);
 
@@ -634,16 +637,19 @@ public:
     return ConvertStringFromEncoding(
         aEncoding, aInput.BeginReading(), aInput.Length(), aOutput);
   }
 
   /**
    * Determine whether a buffer begins with a BOM for UTF-8, UTF-16LE,
    * UTF-16BE
    *
+   * @deprecated Use mozilla::Encoding::ForBOM() in new code.
+   * https://bugzilla.mozilla.org/show_bug.cgi?id=1369022
+   *
    * @param aBuffer the buffer to check
    * @param aLength the length of the buffer
    * @param aCharset empty if not found
    * @return boolean indicating whether a BOM was detected.
    */
   static bool CheckForBOM(const unsigned char* aBuffer, uint32_t aLength,
                           nsACString& aCharset);
 
--- a/dom/base/nsDocumentEncoder.cpp
+++ b/dom/base/nsDocumentEncoder.cpp
@@ -13,17 +13,17 @@
 
 #include "nscore.h"
 #include "nsIFactory.h"
 #include "nsISupports.h"
 #include "nsIDocument.h"
 #include "nsIHTMLDocument.h"
 #include "nsCOMPtr.h"
 #include "nsIContentSerializer.h"
-#include "nsIUnicodeEncoder.h"
+#include "mozilla/Encoding.h"
 #include "nsIOutputStream.h"
 #include "nsIDOMElement.h"
 #include "nsIDOMText.h"
 #include "nsIDOMCDATASection.h"
 #include "nsIDOMComment.h"
 #include "nsIDOMProcessingInstruction.h"
 #include "nsIDOMDocumentType.h"
 #include "nsIDOMNodeList.h"
@@ -164,22 +164,22 @@ protected:
   };
 
   nsCOMPtr<nsIDocument>          mDocument;
   nsCOMPtr<nsISelection>         mSelection;
   RefPtr<nsRange>              mRange;
   nsCOMPtr<nsINode>              mNode;
   nsCOMPtr<nsIOutputStream>      mStream;
   nsCOMPtr<nsIContentSerializer> mSerializer;
-  nsCOMPtr<nsIUnicodeEncoder>    mUnicodeEncoder;
+  UniquePtr<Encoder> mUnicodeEncoder;
   nsCOMPtr<nsINode>              mCommonParent;
   nsCOMPtr<nsIDocumentEncoderNodeFixup> mNodeFixup;
 
   nsString          mMimeType;
-  nsCString         mCharset;
+  const Encoding* mEncoding;
   uint32_t          mFlags;
   uint32_t          mWrapColumn;
   uint32_t          mStartDepth;
   uint32_t          mEndDepth;
   int32_t           mStartRootIndex;
   int32_t           mEndRootIndex;
   AutoTArray<nsINode*, 8>    mCommonAncestors;
   AutoTArray<nsIContent*, 8> mStartNodes;
@@ -191,32 +191,35 @@ protected:
   // argument of nsIContentSerializer::Init().
   bool              mNeedsPreformatScanning;
   bool              mHaltRangeHint;
   // Used when context has already been serialized for
   // table cell selections (where parent is <tr>)
   bool              mDisableContextSerialize;
   bool              mIsCopying;  // Set to true only while copying
   bool              mNodeIsContainer;
+  bool mIsPlainText;
   nsStringBuffer*   mCachedBuffer;
 };
 
 NS_IMPL_CYCLE_COLLECTING_ADDREF(nsDocumentEncoder)
 NS_IMPL_CYCLE_COLLECTING_RELEASE(nsDocumentEncoder)
 
 NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION(nsDocumentEncoder)
    NS_INTERFACE_MAP_ENTRY(nsIDocumentEncoder)
    NS_INTERFACE_MAP_ENTRY(nsISupports)
 NS_INTERFACE_MAP_END
 
 NS_IMPL_CYCLE_COLLECTION(nsDocumentEncoder,
                          mDocument, mSelection, mRange, mNode, mSerializer,
                          mCommonParent)
 
-nsDocumentEncoder::nsDocumentEncoder() : mCachedBuffer(nullptr)
+nsDocumentEncoder::nsDocumentEncoder()
+  : mEncoding(nullptr)
+  , mCachedBuffer(nullptr)
 {
   Initialize();
   mMimeType.AssignLiteral("text/plain");
 }
 
 void nsDocumentEncoder::Initialize(bool aClearCachedSerializer)
 {
   mFlags = 0;
@@ -224,16 +227,17 @@ void nsDocumentEncoder::Initialize(bool 
   mStartDepth = 0;
   mEndDepth = 0;
   mStartRootIndex = 0;
   mEndRootIndex = 0;
   mNeedsPreformatScanning = false;
   mHaltRangeHint = false;
   mDisableContextSerialize = false;
   mNodeIsContainer = false;
+  mIsPlainText = false;
   if (aClearCachedSerializer) {
     mSerializer = nullptr;
   }
 }
 
 nsDocumentEncoder::~nsDocumentEncoder()
 {
   if (mCachedBuffer) {
@@ -326,17 +330,21 @@ nsDocumentEncoder::SetNativeContainerNod
   mNodeIsContainer = true;
   mNode = aContainer;
   return NS_OK;
 }
 
 NS_IMETHODIMP
 nsDocumentEncoder::SetCharset(const nsACString& aCharset)
 {
-  mCharset = aCharset;
+  const Encoding* encoding = Encoding::ForLabel(aCharset);
+  if (!encoding) {
+    return NS_ERROR_UCONV_NOCONV;
+  }
+  mEncoding = encoding->OutputEncoding();
   return NS_OK;
 }
 
 NS_IMETHODIMP
 nsDocumentEncoder::GetMimeType(nsAString& aMimeType)
 {
   aMimeType = mMimeType;
   return NS_OK;
@@ -555,114 +563,77 @@ nsDocumentEncoder::SerializeToStringIter
   }
 
   return NS_OK;
 }
 
 static nsresult
 ConvertAndWrite(const nsAString& aString,
                 nsIOutputStream* aStream,
-                nsIUnicodeEncoder* aEncoder)
+                Encoder* aEncoder,
+                bool aIsPlainText)
 {
   NS_ENSURE_ARG_POINTER(aStream);
   NS_ENSURE_ARG_POINTER(aEncoder);
-  nsresult rv;
-  int32_t charLength, startCharLength;
-  const nsPromiseFlatString& flat = PromiseFlatString(aString);
-  const char16_t* unicodeBuf = flat.get();
-  int32_t unicodeLength = aString.Length();
-  int32_t startLength = unicodeLength;
 
-  rv = aEncoder->GetMaxLength(unicodeBuf, unicodeLength, &charLength);
-  startCharLength = charLength;
-  NS_ENSURE_SUCCESS(rv, rv);
-
-  if (!charLength) {
-    // Nothing to write.  Besides, a length 0 string has an immutable buffer, so
-    // attempts to null-terminate it will crash.
+  if (!aString.Length()) {
     return NS_OK;
   }
 
-  nsAutoCString charXferString;
-  if (!charXferString.SetLength(charLength, fallible))
-    return NS_ERROR_OUT_OF_MEMORY;
-
-  char* charXferBuf = charXferString.BeginWriting();
-  nsresult convert_rv = NS_OK;
-
-  do {
-    unicodeLength = startLength;
-    charLength = startCharLength;
-
-    convert_rv = aEncoder->Convert(unicodeBuf, &unicodeLength, charXferBuf, &charLength);
-    NS_ENSURE_SUCCESS(convert_rv, convert_rv);
-
-    // Make sure charXferBuf is null-terminated before we call
-    // Write().
-
-    charXferBuf[charLength] = '\0';
-
-    uint32_t written;
-    rv = aStream->Write(charXferBuf, charLength, &written);
-    NS_ENSURE_SUCCESS(rv, rv);
-
-    // If the converter couldn't convert a chraacer we replace the
-    // character with a characre entity.
-    if (convert_rv == NS_ERROR_UENC_NOMAPPING) {
-      // Finishes the conversion.
-      // The converter has the possibility to write some extra data and flush its final state.
-      char finish_buf[33];
-      charLength = sizeof(finish_buf) - 1;
-      rv = aEncoder->Finish(finish_buf, &charLength);
-      NS_ENSURE_SUCCESS(rv, rv);
-
-      // Make sure finish_buf is null-terminated before we call
-      // Write().
-
-      finish_buf[charLength] = '\0';
-
-      rv = aStream->Write(finish_buf, charLength, &written);
-      NS_ENSURE_SUCCESS(rv, rv);
-
-      nsAutoCString entString("&#");
-      if (NS_IS_HIGH_SURROGATE(unicodeBuf[unicodeLength - 1]) &&
-          unicodeLength < startLength && NS_IS_LOW_SURROGATE(unicodeBuf[unicodeLength]))  {
-        entString.AppendInt(SURROGATE_TO_UCS4(unicodeBuf[unicodeLength - 1],
-                                              unicodeBuf[unicodeLength]));
-        unicodeLength += 1;
+  uint8_t buffer[4096];
+  auto src = MakeSpan(aString);
+  auto bufferSpan = MakeSpan(buffer);
+  // Reserve space for terminator
+  auto dst = bufferSpan.To(bufferSpan.Length() - 1);
+  for (;;) {
+    uint32_t result;
+    size_t read;
+    size_t written;
+    bool hadErrors;
+    if (aIsPlainText) {
+      Tie(result, read, written) =
+        aEncoder->EncodeFromUTF16WithoutReplacement(src, dst, false);
+      if (result != kInputEmpty && result != kOutputFull) {
+        // There's always room for one byte in the case of
+        // an unmappable character, because otherwise
+        // we'd have gotten `kOutputFull`.
+        dst[written++] = '?';
       }
-      else
-        entString.AppendInt(unicodeBuf[unicodeLength - 1]);
-      entString.Append(';');
-
-      // Since entString is an nsAutoCString we know entString.get()
-      // returns a null-terminated string, so no need for extra
-      // null-termination before calling Write() here.
-
-      rv = aStream->Write(entString.get(), entString.Length(), &written);
-      NS_ENSURE_SUCCESS(rv, rv);
-
-      unicodeBuf += unicodeLength;
-      startLength -= unicodeLength;
+    } else {
+      Tie(result, read, written, hadErrors) =
+        aEncoder->EncodeFromUTF16(src, dst, false);
     }
-  } while (convert_rv == NS_ERROR_UENC_NOMAPPING);
-
-  return rv;
+    Unused << hadErrors;
+    src = src.From(read);
+    // Sadly, we still have test cases that implement nsIOutputStream in JS, so
+    // the buffer needs to be zero-terminated for XPConnect to do its thing.
+    // See bug 170416.
+    bufferSpan[written] = 0;
+    uint32_t streamWritten;
+    nsresult rv = aStream->Write(
+      reinterpret_cast<char*>(dst.Elements()), written, &streamWritten);
+    if (NS_FAILED(rv)) {
+      return rv;
+    }
+    if (result == kInputEmpty) {
+      return NS_OK;
+    }
+  }
 }
 
 nsresult
 nsDocumentEncoder::FlushText(nsAString& aString, bool aForce)
 {
   if (!mStream)
     return NS_OK;
 
   nsresult rv = NS_OK;
 
   if (aString.Length() > 1024 || aForce) {
-    rv = ConvertAndWrite(aString, mStream, mUnicodeEncoder);
+    rv = ConvertAndWrite(aString, mStream, mUnicodeEncoder.get(), mIsPlainText);
 
     aString.Truncate();
   }
 
   return rv;
 }
 
 #if 0 // This code is really fast at serializing a range, but unfortunately
@@ -1083,19 +1054,18 @@ nsDocumentEncoder::EncodeToStringWithMax
 
     mSerializer = do_CreateInstance(progId.get());
     NS_ENSURE_TRUE(mSerializer, NS_ERROR_NOT_IMPLEMENTED);
   }
 
   nsresult rv = NS_OK;
 
   bool rewriteEncodingDeclaration = !(mSelection || mRange || mNode) && !(mFlags & OutputDontRewriteEncodingDeclaration);
-  mSerializer->Init(mFlags, mWrapColumn, mCharset.get(),
-                    mIsCopying, rewriteEncodingDeclaration,
-                    &mNeedsPreformatScanning);
+  mSerializer->Init(
+    mFlags, mWrapColumn, mEncoding, mIsCopying, rewriteEncodingDeclaration, &mNeedsPreformatScanning);
 
   if (mSelection) {
     nsCOMPtr<nsIDOMRange> range;
     int32_t i, count = 0;
 
     rv = mSelection->GetRangeCount(&count);
     NS_ENSURE_SUCCESS(rv, rv);
 
@@ -1222,26 +1192,23 @@ nsDocumentEncoder::EncodeToStringWithMax
 NS_IMETHODIMP
 nsDocumentEncoder::EncodeToStream(nsIOutputStream* aStream)
 {
   nsresult rv = NS_OK;
 
   if (!mDocument)
     return NS_ERROR_NOT_INITIALIZED;
 
-  nsAutoCString encoding;
-  if (!EncodingUtils::FindEncodingForLabelNoReplacement(mCharset, encoding)) {
+  if (!mEncoding) {
     return NS_ERROR_UCONV_NOCONV;
   }
-  mUnicodeEncoder = EncodingUtils::EncoderForEncoding(encoding);
 
-  if (mMimeType.LowerCaseEqualsLiteral("text/plain")) {
-    rv = mUnicodeEncoder->SetOutputErrorBehavior(nsIUnicodeEncoder::kOnError_Replace, nullptr, '?');
-    NS_ENSURE_SUCCESS(rv, rv);
-  }
+  mUnicodeEncoder = mEncoding->NewEncoder();
+
+  mIsPlainText = (mMimeType.LowerCaseEqualsLiteral("text/plain"));
 
   mStream = aStream;
 
   nsAutoString buf;
 
   rv = EncodeToString(buf);
 
   // Force a flush of the last chunk of data.
--- a/dom/base/nsIContentSerializer.h
+++ b/dom/base/nsIContentSerializer.h
@@ -9,32 +9,35 @@
 
 #include "nsISupports.h"
 
 class nsIContent;
 class nsIDocument;
 class nsAString;
 
 namespace mozilla {
+class Encoding;
 namespace dom {
 class Element;
 } // namespace dom
 } // namespace mozilla
 
 #define NS_ICONTENTSERIALIZER_IID \
 { 0xb1ee32f2, 0xb8c4, 0x49b9, \
   { 0x93, 0xdf, 0xb6, 0xfa, 0xb5, 0xd5, 0x46, 0x88 } }
 
 class nsIContentSerializer : public nsISupports {
  public: 
 
   NS_DECLARE_STATIC_IID_ACCESSOR(NS_ICONTENTSERIALIZER_IID)
 
-  NS_IMETHOD Init(uint32_t flags, uint32_t aWrapColumn,
-                  const char* aCharSet, bool aIsCopying,
+  NS_IMETHOD Init(uint32_t flags,
+                  uint32_t aWrapColumn,
+                  const mozilla::Encoding* aEncoding,
+                  bool aIsCopying,
                   bool aIsWholeDocument,
                   bool* aNeedsPerformatScanning) = 0;
 
   NS_IMETHOD AppendText(nsIContent* aText, int32_t aStartOffset,
                         int32_t aEndOffset, nsAString& aStr) = 0;
 
   NS_IMETHOD AppendCDATASection(nsIContent* aCDATASection,
                                 int32_t aStartOffset, int32_t aEndOffset,
--- a/dom/base/nsPlainTextSerializer.cpp
+++ b/dom/base/nsPlainTextSerializer.cpp
@@ -20,16 +20,20 @@
 #include "nsReadableUtils.h"
 #include "nsUnicharUtils.h"
 #include "nsCRT.h"
 #include "mozilla/dom/Element.h"
 #include "mozilla/Preferences.h"
 #include "mozilla/BinarySearch.h"
 #include "nsComputedDOMStyle.h"
 
+namespace mozilla {
+class Encoding;
+}
+
 using namespace mozilla;
 using namespace mozilla::dom;
 
 #define PREF_STRUCTS "converter.html2txt.structs"
 #define PREF_HEADER_STRATEGY "converter.html2txt.header_strategy"
 #define PREF_ALWAYS_INCLUDE_RUBY "converter.html2txt.always_include_ruby"
 
 static const  int32_t kTabSize=4;
@@ -131,19 +135,21 @@ nsPlainTextSerializer::nsPlainTextSerial
 
 nsPlainTextSerializer::~nsPlainTextSerializer()
 {
   delete[] mTagStack;
   delete[] mOLStack;
   NS_WARNING_ASSERTION(mHeadLevel == 0, "Wrong head level!");
 }
 
-NS_IMETHODIMP 
-nsPlainTextSerializer::Init(uint32_t aFlags, uint32_t aWrapColumn,
-                            const char* aCharSet, bool aIsCopying,
+NS_IMETHODIMP
+nsPlainTextSerializer::Init(uint32_t aFlags,
+                            uint32_t aWrapColumn,
+                            const Encoding* aEncoding,
+                            bool aIsCopying,
                             bool aIsWholeDocument,
                             bool* aNeedsPreformatScanning)
 {
 #ifdef DEBUG
   // Check if the major control flags are set correctly.
   if (aFlags & nsIDocumentEncoder::OutputFormatFlowed) {
     NS_ASSERTION(aFlags & nsIDocumentEncoder::OutputFormatted,
                  "If you want format=flowed, you must combine it with "
--- a/dom/base/nsPlainTextSerializer.h
+++ b/dom/base/nsPlainTextSerializer.h
@@ -37,18 +37,20 @@ class nsPlainTextSerializer final : publ
 {
 public:
   nsPlainTextSerializer();
 
   NS_DECL_CYCLE_COLLECTING_ISUPPORTS
   NS_DECL_CYCLE_COLLECTION_CLASS(nsPlainTextSerializer)
 
   // nsIContentSerializer
-  NS_IMETHOD Init(uint32_t flags, uint32_t aWrapColumn,
-                  const char* aCharSet, bool aIsCopying,
+  NS_IMETHOD Init(uint32_t flags,
+                  uint32_t aWrapColumn,
+                  const mozilla::Encoding* aEncoding,
+                  bool aIsCopying,
                   bool aIsWholeDocument,
                   bool* aNeedsPreformatScanning) override;
 
   NS_IMETHOD AppendText(nsIContent* aText, int32_t aStartOffset,
                         int32_t aEndOffset, nsAString& aStr) override;
   NS_IMETHOD AppendCDATASection(nsIContent* aCDATASection,
                                 int32_t aStartOffset, int32_t aEndOffset,
                                 nsAString& aStr) override;
--- a/dom/base/nsXHTMLContentSerializer.cpp
+++ b/dom/base/nsXHTMLContentSerializer.cpp
@@ -53,33 +53,34 @@ nsXHTMLContentSerializer::nsXHTMLContent
 }
 
 nsXHTMLContentSerializer::~nsXHTMLContentSerializer()
 {
   NS_ASSERTION(mOLStateStack.IsEmpty(), "Expected OL State stack to be empty");
 }
 
 NS_IMETHODIMP
-nsXHTMLContentSerializer::Init(uint32_t aFlags, uint32_t aWrapColumn,
-                               const char* aCharSet, bool aIsCopying,
+nsXHTMLContentSerializer::Init(uint32_t aFlags,
+                               uint32_t aWrapColumn,
+                               const mozilla::Encoding* aEncoding,
+                               bool aIsCopying,
                                bool aRewriteEncodingDeclaration,
                                bool* aNeedsPreformatScanning)
 {
   // The previous version of the HTML serializer did implicit wrapping
   // when there is no flags, so we keep wrapping in order to keep
   // compatibility with the existing calling code
   // XXXLJ perhaps should we remove this default settings later ?
   if (aFlags & nsIDocumentEncoder::OutputFormatted ) {
       aFlags = aFlags | nsIDocumentEncoder::OutputWrap;
   }
 
   nsresult rv;
-  rv = nsXMLContentSerializer::Init(aFlags, aWrapColumn, aCharSet,
-                                    aIsCopying, aRewriteEncodingDeclaration,
-                                    aNeedsPreformatScanning);
+  rv = nsXMLContentSerializer::Init(
+    aFlags, aWrapColumn, aEncoding, aIsCopying, aRewriteEncodingDeclaration, aNeedsPreformatScanning);
   NS_ENSURE_SUCCESS(rv, rv);
 
   mRewriteEncodingDeclaration = aRewriteEncodingDeclaration;
   mIsCopying = aIsCopying;
   mIsFirstChildOfOL = false;
   mInBody = 0;
   mDisableEntityEncoding = 0;
   mBodyOnly = (mFlags & nsIDocumentEncoder::OutputBodyOnly) ? true
--- a/dom/base/nsXHTMLContentSerializer.h
+++ b/dom/base/nsXHTMLContentSerializer.h
@@ -17,23 +17,29 @@
 #include "nsXMLContentSerializer.h"
 #include "nsIEntityConverter.h"
 #include "nsString.h"
 #include "nsTArray.h"
 
 class nsIContent;
 class nsIAtom;
 
+namespace mozilla {
+class Encoding;
+}
+
 class nsXHTMLContentSerializer : public nsXMLContentSerializer {
  public:
   nsXHTMLContentSerializer();
   virtual ~nsXHTMLContentSerializer();
 
-  NS_IMETHOD Init(uint32_t flags, uint32_t aWrapColumn,
-                  const char* aCharSet, bool aIsCopying,
+  NS_IMETHOD Init(uint32_t flags,
+                  uint32_t aWrapColumn,
+                  const mozilla::Encoding* aEncoding,
+                  bool aIsCopying,
                   bool aRewriteEncodingDeclaration,
                   bool* aNeedsPreformatScanning) override;
 
   NS_IMETHOD AppendText(nsIContent* aText,
                         int32_t aStartOffset,
                         int32_t aEndOffset,
                         nsAString& aStr) override;
 
--- a/dom/base/nsXMLContentSerializer.cpp
+++ b/dom/base/nsXMLContentSerializer.cpp
@@ -26,17 +26,19 @@
 #include "mozilla/Sprintf.h"
 #include "nsUnicharUtils.h"
 #include "nsCRT.h"
 #include "nsContentUtils.h"
 #include "nsAttrName.h"
 #include "nsILineBreaker.h"
 #include "mozilla/dom/Element.h"
 #include "nsParserConstants.h"
+#include "mozilla/Encoding.h"
 
+using namespace mozilla;
 using namespace mozilla::dom;
 
 #define kXMLNS "xmlns"
 
 // to be readable, we assume that an indented line contains
 // at least this number of characters (arbitrary value here).
 // This is a limit for the indentation.
 #define MIN_INDENTED_LINE_LENGTH 15
@@ -69,34 +71,38 @@ nsXMLContentSerializer::nsXMLContentSeri
 
 nsXMLContentSerializer::~nsXMLContentSerializer()
 {
 }
 
 NS_IMPL_ISUPPORTS(nsXMLContentSerializer, nsIContentSerializer)
 
 NS_IMETHODIMP
-nsXMLContentSerializer::Init(uint32_t aFlags, uint32_t aWrapColumn,
-                             const char* aCharSet, bool aIsCopying,
+nsXMLContentSerializer::Init(uint32_t aFlags,
+                             uint32_t aWrapColumn,
+                             const Encoding* aEncoding,
+                             bool aIsCopying,
                              bool aRewriteEncodingDeclaration,
                              bool* aNeedsPreformatScanning)
 {
   *aNeedsPreformatScanning = false;
   mPrefixIndex = 0;
   mColPos = 0;
   mIndentOverflow = 0;
   mIsIndentationAddedOnCurrentLine = false;
   mInAttribute = false;
   mAddNewlineForRootNode = false;
   mAddSpace = false;
   mMayIgnoreLineBreakSequence = false;
   mBodyOnly = false;
   mInBody = 0;
 
-  mCharset = aCharSet;
+  if (aEncoding) {
+    aEncoding->Name(mCharset);
+  }
   mFlags = aFlags;
 
   // Set the line break character:
   if ((mFlags & nsIDocumentEncoder::OutputCRLineBreak)
       && (mFlags & nsIDocumentEncoder::OutputLFLineBreak)) { // Windows
     mLineBreak.AssignLiteral("\r\n");
   }
   else if (mFlags & nsIDocumentEncoder::OutputCRLineBreak) { // Mac
--- a/dom/base/nsXMLContentSerializer.h
+++ b/dom/base/nsXMLContentSerializer.h
@@ -21,24 +21,30 @@
 #include "nsString.h"
 
 #define kIndentStr NS_LITERAL_STRING("  ")
 #define kEndTag NS_LITERAL_STRING("</")
 
 class nsIAtom;
 class nsINode;
 
+namespace mozilla {
+class Encoding;
+}
+
 class nsXMLContentSerializer : public nsIContentSerializer {
  public:
   nsXMLContentSerializer();
 
   NS_DECL_ISUPPORTS
 
-  NS_IMETHOD Init(uint32_t flags, uint32_t aWrapColumn,
-                  const char* aCharSet, bool aIsCopying,
+  NS_IMETHOD Init(uint32_t flags,
+                  uint32_t aWrapColumn,
+                  const mozilla::Encoding* aEncoding,
+                  bool aIsCopying,
                   bool aRewriteEncodingDeclaration,
                   bool* aNeedsPreformatScanning) override;
 
   NS_IMETHOD AppendText(nsIContent* aText, int32_t aStartOffset,
                         int32_t aEndOffset, nsAString& aStr) override;
 
   NS_IMETHOD AppendCDATASection(nsIContent* aCDATASection,
                                 int32_t aStartOffset, int32_t aEndOffset,
--- a/dom/base/test/unit/test_xml_serializer.js
+++ b/dom/base/test/unit/test_xml_serializer.js
@@ -68,36 +68,36 @@ function test2() {
 function test3() {
   // Test basic appending of kids.  Again, we're making assumptions
   // about how our serializer will serialize simple DOMs.
   var doc = ParseXML('<root xmlns="ns1"/>');
   var root = doc.documentElement;
   var child = doc.createElementNS("ns2", "child");
   root.appendChild(child);
   do_check_serialize(doc);
-  do_check_eq(SerializeXML(doc), 
+  do_check_eq(SerializeXML(doc),
               '<root xmlns="ns1"><child xmlns="ns2"/></root>');
-  
+
   doc = ParseXML('<root xmlns="ns1"/>');
   root = doc.documentElement;
   child = doc.createElementNS("ns2", "prefix:child");
   root.appendChild(child);
   do_check_serialize(doc);
-  do_check_eq(SerializeXML(doc), 
+  do_check_eq(SerializeXML(doc),
               '<root xmlns="ns1"><prefix:child xmlns:prefix="ns2"/></root>');
-  
+
   doc = ParseXML('<prefix:root xmlns:prefix="ns1"/>');
   root = doc.documentElement;
   child = doc.createElementNS("ns2", "prefix:child");
   root.appendChild(child);
   do_check_serialize(doc);
-  do_check_eq(SerializeXML(doc), 
+  do_check_eq(SerializeXML(doc),
               '<prefix:root xmlns:prefix="ns1"><a0:child xmlns:a0="ns2"/>'+
               '</prefix:root>');
-  
+
 }
 
 function test4() {
   // setAttributeNS tests
 
   var doc = ParseXML('<root xmlns="ns1"/>');
   var root = doc.documentElement;
   root.setAttributeNS("ns1", "prefix:local", "val");
@@ -211,17 +211,17 @@ function test6() {
   root = doc.documentElement;
   child1 = root.firstChild;
   child2 = doc.createElementNS("ns1", "prefix:child2");
   child1.appendChild(child2);
   do_check_serialize(doc);
   do_check_eq(SerializeXML(doc),
               '<prefix:root xmlns:prefix="ns1"><prefix:child1 xmlns:prefix="ns2">'+
               '<a0:child2 xmlns:a0="ns1"/></prefix:child1></prefix:root>');
-  
+
 
   doc = ParseXML('<root xmlns="ns1"/>');
   root = doc.documentElement;
   child1 = doc.createElementNS("ns2", "child1");
   child2 = doc.createElementNS("ns1", "child2");
   child1.appendChild(child2);
   root.appendChild(child1);
   do_check_serialize(doc);
@@ -274,101 +274,102 @@ function test7() {
   do_check_serialize(doc);
   do_check_eq(SerializeXML(doc),
               '<root xmlns="http://www.w3.org/1999/xhtml"><child1 xmlns="">' +
               '<a0:child2 xmlns:a0="http://www.w3.org/1999/xhtml" xmlns=""></a0:child2></child1></root>');
 }
 
 function test8() {
   // Test behavior of serializing with a given charset.
-  var str1 = '<?xml version="1.0" encoding="ISO-8859-1"?>'+LB+'<root/>';
-  var str2 = '<?xml version="1.0" encoding="UTF8"?>'+LB+'<root/>';
+  var str1 = '<?xml version="1.0" encoding="windows-1252"?>'+LB+'<root/>';
+  var str2 = '<?xml version="1.0" encoding="UTF-8"?>'+LB+'<root/>';
   var doc1 = ParseXML(str1);
   var doc2 = ParseXML(str2);
 
   var p = Pipe();
-  DOMSerializer().serializeToStream(doc1, p.outputStream, "ISO-8859-1");
+  DOMSerializer().serializeToStream(doc1, p.outputStream, "windows-1252");
   p.outputStream.close();
   do_check_eq(ScriptableInput(p).read(-1), str1);
 
   p = Pipe();
-  DOMSerializer().serializeToStream(doc2, p.outputStream, "ISO-8859-1");
+  DOMSerializer().serializeToStream(doc2, p.outputStream, "windows-1252");
   p.outputStream.close();
   do_check_eq(ScriptableInput(p).read(-1), str1);
 
   p = Pipe();
-  DOMSerializer().serializeToStream(doc1, p.outputStream, "UTF8");
+  DOMSerializer().serializeToStream(doc1, p.outputStream, "UTF-8");
   p.outputStream.close();
   do_check_eq(ScriptableInput(p).read(-1), str2);
 
   p = Pipe();
-  DOMSerializer().serializeToStream(doc2, p.outputStream, "UTF8");
+  DOMSerializer().serializeToStream(doc2, p.outputStream, "UTF-8");
   p.outputStream.close();
   do_check_eq(ScriptableInput(p).read(-1), str2);
 }
 
 function test9() {
   // Test behavior of serializing between given charsets, using
-  // ISO-8859-1-representable text.
+  // windows-1252-representable text.
   var contents = '<root>' +
                    '\u00BD + \u00BE == \u00BD\u00B2 + \u00BC + \u00BE' +
                  '</root>';
-  var str1 = '<?xml version="1.0" encoding="ISO-8859-1"?>'+ LB + contents;
-  var str2 = '<?xml version="1.0" encoding="UTF8"?>'+ LB + contents;
+  var str1 = '<?xml version="1.0" encoding="windows-1252"?>'+ LB + contents;
+  var str2 = '<?xml version="1.0" encoding="UTF-8"?>'+ LB + contents;
   var str3 = '<?xml version="1.0" encoding="UTF-16"?>'+ LB + contents;
   var doc1 = ParseXML(str1);
   var doc2 = ParseXML(str2);
   var doc3 = ParseXML(str3);
 
-  checkSerialization(doc1, "ISO-8859-1", str1);
-  checkSerialization(doc2, "ISO-8859-1", str1);
-  checkSerialization(doc3, "ISO-8859-1", str1);
+  checkSerialization(doc1, "windows-1252", str1);
+  checkSerialization(doc2, "windows-1252", str1);
+  checkSerialization(doc3, "windows-1252", str1);
 
-  checkSerialization(doc1, "UTF8", str2);
-  checkSerialization(doc2, "UTF8", str2);
-  checkSerialization(doc3, "UTF8", str2);
+  checkSerialization(doc1, "UTF-8", str2);
+  checkSerialization(doc2, "UTF-8", str2);
+  checkSerialization(doc3, "UTF-8", str2);
 
-  checkSerialization(doc1, "UTF-16", str3);
-  checkSerialization(doc2, "UTF-16", str3);
-  checkSerialization(doc3, "UTF-16", str3);
+  checkSerialization(doc1, "UTF-16", str2);
+  checkSerialization(doc2, "UTF-16", str2);
+  checkSerialization(doc3, "UTF-16", str2);
 }
 
 function test10() {
   // Test behavior of serializing between given charsets, using
   // Unicode characters (XXX but only BMP ones because I don't know
   // how to create one with non-BMP characters, either with JS strings
   // or using DOM APIs).
   var contents = '<root>' +
                    'AZaz09 \u007F ' +               // U+000000 to U+00007F
                    '\u0080 \u0398 \u03BB \u0725 ' + // U+000080 to U+0007FF
                    '\u0964 \u0F5F \u20AC \uFFFB' +  // U+000800 to U+00FFFF
                  '</root>';
-  var str1 = '<?xml version="1.0" encoding="UTF8"?>'+ LB + contents;
+  var str1 = '<?xml version="1.0" encoding="UTF-8"?>'+ LB + contents;
   var str2 = '<?xml version="1.0" encoding="UTF-16"?>'+ LB + contents;
   var doc1 = ParseXML(str1);
   var doc2 = ParseXML(str2);
 
   checkSerialization(doc1, "UTF8", str1);
   checkSerialization(doc2, "UTF8", str1);
 
-  checkSerialization(doc1, "UTF-16", str2);
-  checkSerialization(doc2, "UTF-16", str2);
+  checkSerialization(doc1, "UTF-16", str1);
+  checkSerialization(doc2, "UTF-16", str1);
 }
 
 function checkSerialization(doc, toCharset, expectedString) {
   var p = Pipe();
   DOMSerializer().serializeToStream(doc, p.outputStream, toCharset);
   p.outputStream.close();
 
+  var inCharset = (toCharset == "UTF-16") ? "UTF-8" : toCharset;
   var cin = C["@mozilla.org/intl/converter-input-stream;1"]
              .createInstance(I.nsIConverterInputStream);
-  cin.init(p.inputStream, toCharset, 1024, 0x0);
+  cin.init(p.inputStream, inCharset, 1024, 0x0);
 
   // compare the first expectedString.length characters for equality
   var outString = {};
   var count = cin.readString(expectedString.length, outString);
-  do_check_true(count == expectedString.length);
-  do_check_true(outString.value == expectedString);
+  do_check_eq(count, expectedString.length);
+  do_check_eq(outString.value, expectedString);
 
   // if there's anything more in the stream, it's a bug
   do_check_eq(0, cin.readString(1, outString));
   do_check_eq(outString.value, "");
 }
--- a/dom/encoding/EncodingUtils.cpp
+++ b/dom/encoding/EncodingUtils.cpp
@@ -3,60 +3,51 @@
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 #include "mozilla/dom/EncodingUtils.h"
 
 #include "mozilla/ArrayUtils.h" // ArrayLength
 #include "nsUConvPropertySearch.h"
-#include "nsIUnicodeDecoder.h"
-#include "nsIUnicodeEncoder.h"
-#include "nsComponentManagerUtils.h"
 
 namespace mozilla {
 namespace dom {
 
 static constexpr nsUConvProp labelsEncodings[] = {
 #include "labelsencodings.properties.h"
 };
 
 static constexpr nsUConvProp encodingsGroups[] = {
 #include "encodingsgroups.properties.h"
 };
 
 bool
 EncodingUtils::FindEncodingForLabel(const nsACString& aLabel,
                                     nsACString& aOutEncoding)
 {
-  // Save aLabel first because it may refer the same string as aOutEncoding.
-  nsCString label(aLabel);
-
-  EncodingUtils::TrimSpaceCharacters(label);
-  if (label.IsEmpty()) {
+  auto encoding = Encoding::ForLabel(aLabel);
+  if (!encoding) {
     aOutEncoding.Truncate();
     return false;
   }
-
-  ToLowerCase(label);
-  return NS_SUCCEEDED(nsUConvPropertySearch::SearchPropertyValue(
-      labelsEncodings, ArrayLength(labelsEncodings), label, aOutEncoding));
+  encoding->Name(aOutEncoding);
+  return true;
 }
 
 bool
 EncodingUtils::FindEncodingForLabelNoReplacement(const nsACString& aLabel,
                                                  nsACString& aOutEncoding)
 {
-  if(!FindEncodingForLabel(aLabel, aOutEncoding)) {
-    return false;
-  }
-  if (aOutEncoding.EqualsLiteral("replacement")) {
+  auto encoding = Encoding::ForLabelNoReplacement(aLabel);
+  if (!encoding) {
     aOutEncoding.Truncate();
     return false;
   }
+  encoding->Name(aOutEncoding);
   return true;
 }
 
 bool
 EncodingUtils::IsAsciiCompatible(const nsACString& aPreferredName)
 {
   // HZ and UTF-7 are no longer in mozilla-central, but keeping them here
   // just in case for the benefit of comm-central.
@@ -64,36 +55,26 @@ EncodingUtils::IsAsciiCompatible(const n
            aPreferredName.LowerCaseEqualsLiteral("utf-16be") ||
            aPreferredName.LowerCaseEqualsLiteral("utf-16le") ||
            aPreferredName.LowerCaseEqualsLiteral("replacement") ||
            aPreferredName.LowerCaseEqualsLiteral("hz-gb-2312") ||
            aPreferredName.LowerCaseEqualsLiteral("utf-7") ||
            aPreferredName.LowerCaseEqualsLiteral("x-imap4-modified-utf7"));
 }
 
-already_AddRefed<nsIUnicodeDecoder>
+UniquePtr<Decoder>
 EncodingUtils::DecoderForEncoding(const nsACString& aEncoding)
 {
-  nsAutoCString contractId(NS_UNICODEDECODER_CONTRACTID_BASE);
-  contractId.Append(aEncoding);
-
-  nsCOMPtr<nsIUnicodeDecoder> decoder = do_CreateInstance(contractId.get());
-  MOZ_ASSERT(decoder, "Tried to create decoder for unknown encoding.");
-  return decoder.forget();
+  return Encoding::ForName(aEncoding)->NewDecoderWithBOMRemoval();
 }
 
-already_AddRefed<nsIUnicodeEncoder>
+UniquePtr<Encoder>
 EncodingUtils::EncoderForEncoding(const nsACString& aEncoding)
 {
-  nsAutoCString contractId(NS_UNICODEENCODER_CONTRACTID_BASE);
-  contractId.Append(aEncoding);
-
-  nsCOMPtr<nsIUnicodeEncoder> encoder = do_CreateInstance(contractId.get());
-  MOZ_ASSERT(encoder, "Tried to create encoder for unknown encoding.");
-  return encoder.forget();
+  return Encoding::ForName(aEncoding)->NewEncoder();
 }
 
 void
 EncodingUtils::LangGroupForEncoding(const nsACString& aEncoding,
                                     nsACString& aOutGroup)
 {
   if (NS_FAILED(nsUConvPropertySearch::SearchPropertyValue(
       encodingsGroups, ArrayLength(encodingsGroups), aEncoding, aOutGroup))) {
--- a/dom/encoding/EncodingUtils.h
+++ b/dom/encoding/EncodingUtils.h
@@ -4,35 +4,35 @@
  * License, v. 2.0. If a copy of the MPL was not distributed with this file,
  * You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 #ifndef mozilla_dom_encodingutils_h_
 #define mozilla_dom_encodingutils_h_
 
 #include "nsDataHashtable.h"
 #include "nsString.h"
-
-class nsIUnicodeDecoder;
-class nsIUnicodeEncoder;
+#include "mozilla/Encoding.h"
 
 namespace mozilla {
 namespace dom {
 
 class EncodingUtils
 {
 public:
-
   /**
    * Implements get an encoding algorithm from Encoding spec.
    * http://encoding.spec.whatwg.org/#concept-encoding-get
    * Given a label, this function returns the corresponding encoding or a
    * false.
    * The returned name may not be lowercased due to compatibility with
    * our internal implementations.
    *
+   * @deprecated Use mozilla::Encoding::ForLabel() in new code.
+   * https://bugzilla.mozilla.org/show_bug.cgi?id=1369025
+   *
    * @param      aLabel, incoming label describing charset to be decoded.
    * @param      aOutEncoding, returning corresponding encoding for label.
    * @return     false if no encoding was found for label.
    *             true if valid encoding found.
    */
   static bool FindEncodingForLabel(const nsACString& aLabel,
                                    nsACString& aOutEncoding);
 
@@ -41,16 +41,19 @@ public:
   {
     return FindEncodingForLabel(NS_ConvertUTF16toUTF8(aLabel), aOutEncoding);
   }
 
   /**
    * Like FindEncodingForLabel() except labels that map to "replacement"
    * are treated as unknown.
    *
+   * @deprecated Use mozilla::Encoding::ForLabelNoReplacement() in new code.
+   * https://bugzilla.mozilla.org/show_bug.cgi?id=1369025
+   *
    * @param      aLabel, incoming label describing charset to be decoded.
    * @param      aOutEncoding, returning corresponding encoding for label.
    * @return     false if no encoding was found for label.
    *             true if valid encoding found.
    */
   static bool FindEncodingForLabelNoReplacement(const nsACString& aLabel,
                                                 nsACString& aOutEncoding);
 
@@ -84,56 +87,70 @@ public:
    * @param aPreferredName a preferred encoding label
    * @return whether the encoding is ASCII-compatible
    */
   static bool IsAsciiCompatible(const nsACString& aPreferredName);
 
   /**
    * Instantiates a decoder for an encoding. The input must be a
    * Gecko-canonical encoding name.
+   *
+   * @deprecated Use mozilla::Encoding::NewDecoderWithBOMRemoval()
+   *             (or more appropriate variant) in new code.
+   * https://bugzilla.mozilla.org/show_bug.cgi?id=1369032
+   *
    * @param aEncoding a Gecko-canonical encoding name
    * @return a decoder
    */
-  static already_AddRefed<nsIUnicodeDecoder>
-  DecoderForEncoding(const char* aEncoding)
+  static UniquePtr<Decoder> DecoderForEncoding(const char* aEncoding)
   {
     nsDependentCString encoding(aEncoding);
     return DecoderForEncoding(encoding);
   }
 
   /**
    * Instantiates a decoder for an encoding. The input must be a
+   *
+   * @deprecated Use mozilla::Encoding::NewDecoderWithBOMRemoval()
+   *             (or more appropriate variant) in new code.
+   * https://bugzilla.mozilla.org/show_bug.cgi?id=1369032
+   *
    * Gecko-canonical encoding name
    * @param aEncoding a Gecko-canonical encoding name
    * @return a decoder
    */
-  static already_AddRefed<nsIUnicodeDecoder>
-  DecoderForEncoding(const nsACString& aEncoding);
+  static UniquePtr<Decoder> DecoderForEncoding(const nsACString& aEncoding);
 
   /**
    * Instantiates an encoder for an encoding. The input must be a
+   *
+   * @deprecated Use mozilla::Encoding::NewEncoder() in new code.
+   * https://bugzilla.mozilla.org/show_bug.cgi?id=1369032
+   *
    * Gecko-canonical encoding name.
    * @param aEncoding a Gecko-canonical encoding name
    * @return an encoder
    */
-  static already_AddRefed<nsIUnicodeEncoder>
-  EncoderForEncoding(const char* aEncoding)
+  static UniquePtr<Encoder> EncoderForEncoding(const char* aEncoding)
   {
     nsDependentCString encoding(aEncoding);
     return EncoderForEncoding(encoding);
   }
 
   /**
    * Instantiates an encoder for an encoding. The input must be a
    * Gecko-canonical encoding name.
+   *
+   * @deprecated Use mozilla::Encoding::NewEncoder() in new code.
+   * https://bugzilla.mozilla.org/show_bug.cgi?id=1369032
+   *
    * @param aEncoding a Gecko-canonical encoding name
    * @return an encoder
    */
-  static already_AddRefed<nsIUnicodeEncoder>
-  EncoderForEncoding(const nsACString& aEncoding);
+  static UniquePtr<Encoder> EncoderForEncoding(const nsACString& aEncoding);
 
   /**
    * Finds a Gecko language group string (e.g. x-western) for a Gecko-canonical
    * encoding name.
    *
    * @param      aEncoding, incoming label describing charset to be decoded.
    * @param      aOutGroup, returning corresponding language group.
    */
--- a/dom/encoding/TextDecoder.cpp
+++ b/dom/encoding/TextDecoder.cpp
@@ -39,106 +39,94 @@ TextDecoder::InitWithEncoding(const nsAC
   mEncoding = aEncoding;
   // If the constructor is called with an options argument,
   // and the fatal property of the dictionary is set,
   // set the internal fatal flag of the decoder object.
   mFatal = aFatal;
 
   // Create a decoder object for mEncoding.
   mDecoder = EncodingUtils::DecoderForEncoding(mEncoding);
-
-  if (mFatal) {
-    mDecoder->SetInputErrorBehavior(nsIUnicodeDecoder::kOnError_Signal);
-  }
 }
 
 void
-TextDecoder::Decode(const char* aInput, const int32_t aLength,
-                    const bool aStream, nsAString& aOutDecodedString,
+TextDecoder::Decode(Span<const uint8_t> aInput,
+                    const bool aStream,
+                    nsAString& aOutDecodedString,
                     ErrorResult& aRv)
 {
   aOutDecodedString.Truncate();
 
-  // Run or resume the decoder algorithm of the decoder object's encoder.
-  int32_t outLen;
-  nsresult rv = mDecoder->GetMaxLength(aInput, aLength, &outLen);
-  if (NS_FAILED(rv)) {
-    aRv.Throw(rv);
+  CheckedInt<size_t> needed = mDecoder->MaxUTF16BufferLength(aInput.Length());
+  if (!needed.isValid() ||
+      needed.value() > MaxValue<nsAString::size_type>::value) {
+    aRv.Throw(NS_ERROR_OUT_OF_MEMORY);
     return;
   }
-  // Need a fallible allocator because the caller may be a content
-  // and the content can specify the length of the string.
-  auto buf = MakeUniqueFallible<char16_t[]>(outLen + 1);
-  if (!buf) {
+
+  if (!aOutDecodedString.SetLength(needed.value(), fallible)) {
     aRv.Throw(NS_ERROR_OUT_OF_MEMORY);
     return;
   }
 
-  int32_t length = aLength;
-  rv = mDecoder->Convert(aInput, &length, buf.get(), &outLen);
-  MOZ_ASSERT(mFatal || rv != NS_ERROR_ILLEGAL_INPUT);
-  buf[outLen] = 0;
+  uint32_t result;
+  size_t read;
+  size_t written;
+  bool hadErrors;
+  if (mFatal) {
+    Tie(result, read, written) = mDecoder->DecodeToUTF16WithoutReplacement(
+      aInput, aOutDecodedString, !aStream);
+    if (result != kInputEmpty) {
+      aRv.ThrowTypeError<MSG_DOM_DECODING_FAILED>();
+      return;
+    }
+  } else {
+    Tie(result, read, written, hadErrors) =
+      mDecoder->DecodeToUTF16(aInput, aOutDecodedString, !aStream);
+  }
+  MOZ_ASSERT(result == kInputEmpty);
+  MOZ_ASSERT(read == aInput.Length());
+  MOZ_ASSERT(written <= aOutDecodedString.Length());
+  Unused << hadErrors;
 
-  if (!aOutDecodedString.Append(buf.get(), outLen, fallible)) {
+  if (!aOutDecodedString.SetLength(written, fallible)) {
     aRv.Throw(NS_ERROR_OUT_OF_MEMORY);
     return;
   }
 
   // If the internal streaming flag of the decoder object is not set,
   // then reset the encoding algorithm state to the default values
   if (!aStream) {
-    mDecoder->Reset();
-    if (rv == NS_OK_UDEC_MOREINPUT) {
-      if (mFatal) {
-        aRv.ThrowTypeError<MSG_DOM_DECODING_FAILED>();
-      } else {
-        // Need to emit a decode error manually
-        // to simulate the EOF handling of the Encoding spec.
-        aOutDecodedString.Append(kReplacementChar);
-      }
-    }
-  }
-
-  if (NS_FAILED(rv)) {
-    aRv.ThrowTypeError<MSG_DOM_DECODING_FAILED>();
+    mDecoder->Encoding()->NewDecoderWithBOMRemovalInto(*mDecoder);
   }
 }
 
 void
 TextDecoder::Decode(const Optional<ArrayBufferViewOrArrayBuffer>& aBuffer,
                     const TextDecodeOptions& aOptions,
                     nsAString& aOutDecodedString,
                     ErrorResult& aRv)
 {
   if (!aBuffer.WasPassed()) {
-    Decode(nullptr, 0, aOptions.mStream, aOutDecodedString, aRv);
+    Decode(nullptr, aOptions.mStream, aOutDecodedString, aRv);
     return;
   }
   const ArrayBufferViewOrArrayBuffer& buf = aBuffer.Value();
   uint8_t* data;
   uint32_t length;
   if (buf.IsArrayBufferView()) {
     buf.GetAsArrayBufferView().ComputeLengthAndData();
     data = buf.GetAsArrayBufferView().Data();
     length = buf.GetAsArrayBufferView().Length();
   } else {
     MOZ_ASSERT(buf.IsArrayBuffer());
     buf.GetAsArrayBuffer().ComputeLengthAndData();
     data = buf.GetAsArrayBuffer().Data();
     length = buf.GetAsArrayBuffer().Length();
   }
-  // The other Decode signature takes a signed int, because that's
-  // what nsIUnicodeDecoder::Convert takes as the length.  Throw if
-  // our length is too big.
-  if (length > INT32_MAX) {
-    aRv.Throw(NS_ERROR_OUT_OF_MEMORY);
-    return;
-  }
-  Decode(reinterpret_cast<char*>(data), length, aOptions.mStream,
-         aOutDecodedString, aRv);
+  Decode(MakeSpan(data, length), aOptions.mStream, aOutDecodedString, aRv);
 }
 
 void
 TextDecoder::GetEncoding(nsAString& aEncoding)
 {
   CopyASCIItoUTF16(mEncoding, aEncoding);
   nsContentUtils::ASCIIToLower(aEncoding);
 }
--- a/dom/encoding/TextDecoder.h
+++ b/dom/encoding/TextDecoder.h
@@ -6,17 +6,17 @@
 
 #ifndef mozilla_dom_textdecoder_h_
 #define mozilla_dom_textdecoder_h_
 
 #include "mozilla/dom/NonRefcountedDOMObject.h"
 #include "mozilla/dom/TextDecoderBinding.h"
 #include "mozilla/dom/TypedArray.h"
 #include "nsAutoPtr.h"
-#include "nsIUnicodeDecoder.h"
+#include "mozilla/Encoding.h"
 
 namespace mozilla {
 
 class ErrorResult;
 
 namespace dom {
 
 class ArrayBufferViewOrArrayBuffer;
@@ -94,31 +94,32 @@ public:
    * character(s) for unidentified character(s).
    *
    * @param      aView, incoming byte stream of characters to be decoded to
    *                    to UTF-16 code points.
    * @param      aOptions, indicates if streaming or not.
    * @param      aOutDecodedString, decoded string of UTF-16 code points.
    * @param      aRv, error result.
    */
-  void Decode(const char* aInput, const int32_t aLength,
-              const bool aStream, nsAString& aOutDecodedString,
+  void Decode(mozilla::Span<const uint8_t> aInput,
+              const bool aStream,
+              nsAString& aOutDecodedString,
               ErrorResult& aRv);
 
   void Decode(const Optional<ArrayBufferViewOrArrayBuffer>& aBuffer,
               const TextDecodeOptions& aOptions,
               nsAString& aOutDecodedString,
               ErrorResult& aRv);
 
   bool Fatal() const {
     return mFatal;
   }
 
 private:
   nsCString mEncoding;
-  nsCOMPtr<nsIUnicodeDecoder> mDecoder;
+  mozilla::UniquePtr<mozilla::Decoder> mDecoder;
   bool mFatal;
 };
 
 } // namespace dom
 } // namespace mozilla
 
 #endif // mozilla_dom_textdecoder_h_
--- a/dom/encoding/TextEncoder.cpp
+++ b/dom/encoding/TextEncoder.cpp
@@ -1,79 +1,49 @@
 /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
 /* vim: set ts=8 sts=2 et sw=2 tw=80: */
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 #include "mozilla/dom/TextEncoder.h"
-#include "mozilla/dom/EncodingUtils.h"
-#include "mozilla/UniquePtrExtensions.h"
-#include "nsContentUtils.h"
+#include "mozilla/Encoding.h"
 
 namespace mozilla {
 namespace dom {
 
 void
 TextEncoder::Init()
 {
-  // Create an encoder object for utf-8.
-  mEncoder = EncodingUtils::EncoderForEncoding(NS_LITERAL_CSTRING("UTF-8"));
 }
 
 void
 TextEncoder::Encode(JSContext* aCx,
                     JS::Handle<JSObject*> aObj,
                     const nsAString& aString,
                     JS::MutableHandle<JSObject*> aRetval,
                     ErrorResult& aRv)
 {
-  // Run the steps of the encoding algorithm.
-  int32_t srcLen = aString.Length();
-  int32_t maxLen;
-  const char16_t* data = aString.BeginReading();
-  nsresult rv = mEncoder->GetMaxLength(data, srcLen, &maxLen);
+  nsAutoCString utf8;
+  nsresult rv;
+  const Encoding* ignored;
+  Tie(rv, ignored) = UTF_8_ENCODING->Encode(aString, utf8);
   if (NS_FAILED(rv)) {
     aRv.Throw(rv);
     return;
   }
-  // Need a fallible allocator because the caller may be a content
-  // and the content can specify the length of the string.
-  auto buf = MakeUniqueFallible<char[]>(maxLen + 1);
-  if (!buf) {
+
+  JSAutoCompartment ac(aCx, aObj);
+  JSObject* outView = Uint8Array::Create(
+    aCx, utf8.Length(), reinterpret_cast<const uint8_t*>(utf8.BeginReading()));
+  if (!outView) {
     aRv.Throw(NS_ERROR_OUT_OF_MEMORY);
     return;
   }
 
-  int32_t dstLen = maxLen;
-  rv = mEncoder->Convert(data, &srcLen, buf.get(), &dstLen);
-
-  // Now reset the encoding algorithm state to the default values for encoding.
-  int32_t finishLen = maxLen - dstLen;
-  rv = mEncoder->Finish(&buf[dstLen], &finishLen);
-  if (NS_SUCCEEDED(rv)) {
-    dstLen += finishLen;
-  }
-
-  JSObject* outView = nullptr;
-  if (NS_SUCCEEDED(rv)) {
-    buf[dstLen] = '\0';
-    JSAutoCompartment ac(aCx, aObj);
-    outView = Uint8Array::Create(aCx, dstLen,
-                                 reinterpret_cast<uint8_t*>(buf.get()));
-    if (!outView) {
-      aRv.Throw(NS_ERROR_OUT_OF_MEMORY);
-      return;
-    }
-  }
-
-  if (NS_FAILED(rv)) {
-    aRv.Throw(rv);
-    return;
-  }
   aRetval.set(outView);
 }
 
 void
 TextEncoder::GetEncoding(nsAString& aEncoding)
 {
   aEncoding.AssignLiteral("utf-8");
 }
--- a/dom/encoding/TextEncoder.h
+++ b/dom/encoding/TextEncoder.h
@@ -5,17 +5,17 @@
  * You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 #ifndef mozilla_dom_textencoder_h_
 #define mozilla_dom_textencoder_h_
 
 #include "mozilla/dom/NonRefcountedDOMObject.h"
 #include "mozilla/dom/TextEncoderBinding.h"
 #include "mozilla/dom/TypedArray.h"
-#include "nsIUnicodeEncoder.h"
+#include "mozilla/Encoding.h"
 
 namespace mozilla {
 class ErrorResult;
 
 namespace dom {
 
 class TextEncoder final : public NonRefcountedDOMObject
 {
@@ -65,16 +65,14 @@ public:
    * @return JSObject* The Uint8Array wrapped in a JS object.  Returned via
    *                   the aRetval out param.
    */
   void Encode(JSContext* aCx,
               JS::Handle<JSObject*> aObj,
               const nsAString& aString,
               JS::MutableHandle<JSObject*> aRetval,
               ErrorResult& aRv);
-private:
-  nsCOMPtr<nsIUnicodeEncoder> mEncoder;
 };
 
 } // namespace dom
 } // namespace mozilla
 
 #endif // mozilla_dom_textencoder_h_
--- a/dom/encoding/domainsfallbacks.properties
+++ b/dom/encoding/domainsfallbacks.properties
@@ -3,20 +3,20 @@
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 # This file contains educated guesses about which top-level domains are
 # likely to host legacy content that assumes a non-windows-1252 encoding.
 # Punycode TLDs are included on the theory that legacy content might appear
 # behind those relatively new TLDs if DNS just points to a legacy server.
 #
 # Encodings for which a confident-enough educated guess is missing are
-# listed in nonparticipatingdomains.properties. Domains that are listed 
+# listed in nonparticipatingdomains.properties. Domains that are listed
 # neither there nor here get windows-1252 as the associated fallback.
 #
-# The list below includes Arabic-script TLDs not on IANA list but on the 
+# The list below includes Arabic-script TLDs not on IANA list but on the
 # ICANN list:
 # http://www.icann.org/en/resources/idn/fast-track/string-evaluation-completion
 # Otherwise, the list includes non-windows-1252-affilited country TLDs from
 # https://data.iana.org/TLD/tlds-alpha-by-domain.txt
 #
 # The guesses are assigned as follows:
 # * If the country has a dominant country-affiliated language and that language
 #   is part of the languages to fallbacks mapping, use the encoding for that
@@ -31,21 +31,21 @@ xn--mgbaam7a8h=windows-1256
 af=windows-1256
 
 bg=windows-1251
 
 bh=windows-1256
 
 by=windows-1251
 
-cn=gbk
-xn--fiqs8s=gbk
-# Assume that Traditional Chinese TLD is meant to work if URL input happens to 
+cn=GBK
+xn--fiqs8s=GBK
+# Assume that Traditional Chinese TLD is meant to work if URL input happens to
 # be in the traditional mode. Expect content to be simplified anyway.
-xn--fiqz9s=gbk
+xn--fiqz9s=GBK
 
 cz=windows-1250
 
 dz=windows-1256
 xn--lgbbat1ad8j=windows-1256
 
 ee=windows-1257
 
@@ -123,18 +123,18 @@ ru=windows-1251
 xn--p1ai=windows-1251
 
 sa=windows-1256
 xn--mgberp4a5d4ar=windows-1256
 
 sd=windows-1256
 xn--mgbpl2fh=windows-1256
 
-sg=gbk
-xn--yfro4i67o=gbk
+sg=GBK
+xn--yfro4i67o=GBK
 
 si=ISO-8859-2
 
 sk=windows-1250
 
 su=windows-1251
 
 sy=windows-1256
--- a/dom/encoding/encodingsgroups.properties
+++ b/dom/encoding/encodingsgroups.properties
@@ -3,17 +3,17 @@
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 # x-unicode is assumed for encodings not listed here
 
 Big5=zh-TW
 EUC-JP=ja
 EUC-KR=ko
 gb18030=zh-CN
-gbk=zh-CN
+GBK=zh-CN
 IBM866=x-cyrillic
 ISO-2022-JP=ja
 ISO-8859-3=x-western
 ISO-8859-4=x-western
 ISO-8859-5=x-cyrillic
 ISO-8859-6=ar
 ISO-8859-7=el
 ISO-8859-8=he
--- a/dom/encoding/localesfallbacks.properties
+++ b/dom/encoding/localesfallbacks.properties
@@ -12,19 +12,19 @@
 # Rules:
 #
 # * Avoid editing this file!
 #
 # * If you do edit this file, be sure to file a spec bug against WHATWG HTML
 #   to keep this file in sync with
 #   http://www.whatwg.org/specs/web-apps/current-work/multipage/parsing.html#determining-the-character-encoding
 #
-# * As an exception to the previous rule, gbk is used instead of GB18030 
+# * As an exception to the previous rule, GBK is used instead of GB18030
 #   until/unless work on http://encoding.spec.whatwg.org/ shows that the former
-#   can be treated as an alias of the latter and our decoder implementation 
+#   can be treated as an alias of the latter and our decoder implementation
 #   has been audited to match the spec.
 #
 # * Use only the language code without a hyphen or anything that would come
 #   after the hyphen.
 #
 # * Don't put windows-1252-affiliated languages here.
 #
 # * Don't put Traditional Chinese here.
@@ -64,9 +64,9 @@ sr=windows-1251
 # https://www.w3.org/Bugs/Public/show_bug.cgi?id=23089
 tg=windows-1251
 th=windows-874
 tr=windows-1254
 # https://www.w3.org/Bugs/Public/show_bug.cgi?id=23089
 tt=windows-1251
 uk=windows-1251
 vi=windows-1258
-zh=gbk
+zh=GBK
--- a/dom/encoding/test/test_TLD.html
+++ b/dom/encoding/test/test_TLD.html
@@ -11,17 +11,17 @@ https://bugzilla.mozilla.org/show_bug.cg
   <script type="application/javascript">
 
   /** Test for Bug 910211 **/
 
   SimpleTest.waitForExplicitFinish();
 
   var tlds = [
     {'tld': 'tw', 'encoding': 'Big5'},
-    {'tld': 'cn', 'encoding': 'gbk'},
+    {'tld': 'cn', 'encoding': 'GBK'},
     {'tld': 'co.jp', 'encoding': 'Shift_JIS'},
     {'tld': 'fi', 'encoding': 'windows-1252'},
   ];
 
   var iframe = null;
 
   var current = null;
 
--- a/dom/encoding/test/unit/test_misc.js
+++ b/dom/encoding/test/unit/test_misc.js
@@ -175,17 +175,17 @@ test(
   function () {
     var encodings = ["utf-8", "ibm866", "iso-8859-2", "iso-8859-3", "iso-8859-4", "iso-8859-5", "iso-8859-6", "iso-8859-7", "iso-8859-8", "iso-8859-8-i", "iso-8859-10", "iso-8859-13", "iso-8859-14", "iso-8859-15", "iso-8859-16", "koi8-r", "koi8-u", "macintosh", "windows-874", "windows-1250", "windows-1251", "windows-1252", "windows-1253", "windows-1254", "windows-1255", "windows-1256", "windows-1257", "windows-1258", "x-mac-cyrillic", "gbk", "gb18030", "big5", "euc-jp", "iso-2022-jp", "shift_jis", "euc-kr", "x-user-defined"];
 
     encodings.forEach(function (encoding) {
       var string = '', bytes = [];
       for (var i = 0; i < 128; ++i) {
 
         // Encodings that have escape codes in 0x00-0x7F
-        if (encoding === "iso-2022-jp" && i === 0x1B)
+        if (encoding === "iso-2022-jp" && (i === 0x1B || i === 0xE || i === 0xF))
           continue;
 
         string += String.fromCharCode(i);
         bytes.push(i);
       }
       var ascii_encoded = new TextEncoder('utf-8').encode(string);
       assert_equals(new TextDecoder(encoding).decode(ascii_encoded), string, encoding);
       //assert_array_equals(new TextEncoder(encoding).encode(string), bytes, encoding);
--- a/dom/fetch/BodyExtractor.cpp
+++ b/dom/fetch/BodyExtractor.cpp
@@ -13,17 +13,16 @@
 #include "mozilla/dom/XMLHttpRequest.h"
 #include "nsContentUtils.h"
 #include "nsIDOMDocument.h"
 #include "nsIDOMSerializer.h"
 #include "nsIInputStream.h"
 #include "nsIOutputStream.h"
 #include "nsIStorageStream.h"
 #include "nsStringStream.h"
-#include "nsIUnicodeEncoder.h"
 
 namespace mozilla {
 namespace dom {
 
 static nsresult
 GetBufferDataAsStream(const uint8_t* aData, uint32_t aDataLength,
                       nsIInputStream** aResult, uint64_t* aContentLength,
                       nsACString& aContentType, nsACString& aCharset)
@@ -130,51 +129,25 @@ BodyExtractor<nsIDocument>::GetAsStream(
 }
 
 template<> nsresult
 BodyExtractor<const nsAString>::GetAsStream(nsIInputStream** aResult,
                                             uint64_t* aContentLength,
                                             nsACString& aContentTypeWithCharset,
                                             nsACString& aCharset) const
 {
-  nsCOMPtr<nsIUnicodeEncoder> encoder =
-    EncodingUtils::EncoderForEncoding("UTF-8");
-  if (!encoder) {
-    return NS_ERROR_OUT_OF_MEMORY;
-  }
+  nsCString encoded;
+  CopyUTF16toUTF8(*mBody, encoded);
 
-  int32_t destBufferLen;
-  nsresult rv = encoder->GetMaxLength(mBody->BeginReading(), mBody->Length(),
-                                      &destBufferLen);
+  nsresult rv = NS_NewCStringInputStream(aResult, encoded);
   if (NS_WARN_IF(NS_FAILED(rv))) {
     return rv;
   }
 
-  nsCString encoded;
-  if (!encoded.SetCapacity(destBufferLen, fallible)) {
-    return NS_ERROR_OUT_OF_MEMORY;
-  }
-
-  char* destBuffer = encoded.BeginWriting();
-  int32_t srcLen = (int32_t) mBody->Length();
-  int32_t outLen = destBufferLen;
-  rv = encoder->Convert(mBody->BeginReading(), &srcLen, destBuffer, &outLen);
-  if (NS_WARN_IF(NS_FAILED(rv))) {
-    return rv;
-  }
-
-  MOZ_ASSERT(outLen <= destBufferLen);
-  encoded.SetLength(outLen);
-
-  rv = NS_NewCStringInputStream(aResult, encoded);
-  if (NS_WARN_IF(NS_FAILED(rv))) {
-    return rv;
-  }
-
-  *aContentLength = outLen;
+  *aContentLength = encoded.Length();
   aContentTypeWithCharset.AssignLiteral("text/plain;charset=UTF-8");
   aCharset.AssignLiteral("UTF-8");
   return NS_OK;
 }
 
 template<> nsresult
 BodyExtractor<nsIInputStream>::GetAsStream(nsIInputStream** aResult,
                                            uint64_t* aContentLength,
--- a/dom/fetch/Fetch.cpp
+++ b/dom/fetch/Fetch.cpp
@@ -5,17 +5,16 @@
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 #include "Fetch.h"
 
 #include "nsIDocument.h"
 #include "nsIGlobalObject.h"
 #include "nsIStreamLoader.h"
 #include "nsIThreadRetargetableRequest.h"
-#include "nsIUnicodeDecoder.h"
 
 #include "nsCharSeparatedTokenizer.h"
 #include "nsDOMString.h"
 #include "nsJSUtils.h"
 #include "nsNetUtil.h"
 #include "nsReadableUtils.h"
 #include "nsStreamUtils.h"
 #include "nsStringStream.h"
--- a/dom/fetch/FetchUtil.cpp
+++ b/dom/fetch/FetchUtil.cpp
@@ -1,16 +1,14 @@
 #include "FetchUtil.h"
 
 #include "nsError.h"
-#include "nsIUnicodeDecoder.h"
 #include "nsString.h"
 #include "nsIDocument.h"
 
-#include "mozilla/dom/EncodingUtils.h"
 #include "mozilla/dom/InternalRequest.h"
 
 namespace mozilla {
 namespace dom {
 
 // static
 nsresult
 FetchUtil::GetValidRequestMethod(const nsACString& aMethod, nsCString& outMethod)
--- a/dom/html/HTMLFormSubmission.cpp
+++ b/dom/html/HTMLFormSubmission.cpp
@@ -85,28 +85,28 @@ RetrieveDirectoryName(Directory* aDirect
 }
 
 // --------------------------------------------------------------------------
 
 class FSURLEncoded : public EncodingFormSubmission
 {
 public:
   /**
-   * @param aCharset the charset of the form as a string
+   * @param aEncoding the character encoding of the form
    * @param aMethod the method of the submit (either NS_FORM_METHOD_GET or
    *        NS_FORM_METHOD_POST).
    */
-  FSURLEncoded(const nsACString& aCharset,
+  FSURLEncoded(NotNull<const Encoding*> aEncoding,
                int32_t aMethod,
                nsIDocument* aDocument,
                nsIContent* aOriginatingElement)
-    : EncodingFormSubmission(aCharset, aOriginatingElement),
-      mMethod(aMethod),
-      mDocument(aDocument),
-      mWarnedFileControl(false)
+    : EncodingFormSubmission(aEncoding, aOriginatingElement)
+    , mMethod(aMethod)
+    , mDocument(aDocument)
+    , mWarnedFileControl(false)
   {
   }
 
   virtual nsresult
   AddNameValuePair(const nsAString& aName, const nsAString& aValue) override;
 
   virtual nsresult
   AddNameBlobOrNullPair(const nsAString& aName, Blob* aBlob) override;
@@ -331,26 +331,18 @@ FSURLEncoded::GetEncodedSubmission(nsIUR
       // that is passed to it.  Right now this operation does a copy.
       rv = NS_NewCStringInputStream(getter_AddRefs(dataStream), mQueryString);
       NS_ENSURE_SUCCESS(rv, rv);
 
       nsCOMPtr<nsIMIMEInputStream> mimeStream(
         do_CreateInstance("@mozilla.org/network/mime-input-stream;1", &rv));
       NS_ENSURE_SUCCESS(rv, rv);
 
-#ifdef SPECIFY_CHARSET_IN_CONTENT_TYPE
-      mimeStream->AddHeader("Content-Type",
-                            PromiseFlatString(
-                              "application/x-www-form-urlencoded; charset="
-                              + mCharset
-                            ).get());
-#else
       mimeStream->AddHeader("Content-Type",
                             "application/x-www-form-urlencoded");
-#endif
       mimeStream->SetAddContentLength(true);
       mimeStream->SetData(dataStream);
 
       *aPostDataStream = mimeStream;
       NS_ADDREF(*aPostDataStream);
     }
 
   } else {
@@ -423,19 +415,19 @@ FSURLEncoded::URLEncode(const nsAString&
 
   return NS_OK;
 }
 
 } // anonymous namespace
 
 // --------------------------------------------------------------------------
 
-FSMultipartFormData::FSMultipartFormData(const nsACString& aCharset,
+FSMultipartFormData::FSMultipartFormData(NotNull<const Encoding*> aEncoding,
                                          nsIContent* aOriginatingElement)
-    : EncodingFormSubmission(aCharset, aOriginatingElement)
+  : EncodingFormSubmission(aEncoding, aOriginatingElement)
 {
   mPostDataStream =
     do_CreateInstance("@mozilla.org/io/multiplex-input-stream;1");
   mTotalLength = 0;
 
   mBoundary.AssignLiteral("---------------------------");
   mBoundary.AppendInt(rand());
   mBoundary.AppendInt(rand());
@@ -690,18 +682,19 @@ FSMultipartFormData::AddPostDataStream()
 
 // --------------------------------------------------------------------------
 
 namespace {
 
 class FSTextPlain : public EncodingFormSubmission
 {
 public:
-  FSTextPlain(const nsACString& aCharset, nsIContent* aOriginatingElement)
-    : EncodingFormSubmission(aCharset, aOriginatingElement)
+  FSTextPlain(NotNull<const Encoding*> aEncoding,
+              nsIContent* aOriginatingElement)
+    : EncodingFormSubmission(aEncoding, aOriginatingElement)
   {
   }
 
   virtual nsresult
   AddNameValuePair(const nsAString& aName, const nsAString& aValue) override;
 
   virtual nsresult
   AddNameBlobOrNullPair(const nsAString& aName, Blob* aBlob) override;
@@ -808,43 +801,48 @@ FSTextPlain::GetEncodedSubmission(nsIURI
 
   return rv;
 }
 
 } // anonymous namespace
 
 // --------------------------------------------------------------------------
 
-EncodingFormSubmission::EncodingFormSubmission(const nsACString& aCharset,
-                                               nsIContent* aOriginatingElement)
-  : HTMLFormSubmission(aCharset, aOriginatingElement)
-  , mEncoder(aCharset)
+EncodingFormSubmission::EncodingFormSubmission(
+  NotNull<const Encoding*> aEncoding,
+  nsIContent* aOriginatingElement)
+  : HTMLFormSubmission(aEncoding, aOriginatingElement)
 {
-  if (!(aCharset.EqualsLiteral("UTF-8") || aCharset.EqualsLiteral("gb18030"))) {
-    NS_ConvertUTF8toUTF16 charsetUtf16(aCharset);
-    const char16_t* charsetPtr = charsetUtf16.get();
+  if (!aEncoding->CanEncodeEverything()) {
+    nsAutoCString name;
+    aEncoding->Name(name);
+    NS_ConvertUTF8toUTF16 nameUtf16(name);
+    const char16_t* namePtr = nameUtf16.get();
     SendJSWarning(aOriginatingElement ? aOriginatingElement->GetOwnerDocument()
                                       : nullptr,
                   "CannotEncodeAllUnicode",
-                  &charsetPtr,
+                  &namePtr,
                   1);
   }
 }
 
 EncodingFormSubmission::~EncodingFormSubmission()
 {
 }
 
 // i18n helper routines
 nsresult
 EncodingFormSubmission::EncodeVal(const nsAString& aStr, nsCString& aOut,
                                   bool aHeaderEncode)
 {
-  if (!mEncoder.Encode(aStr, aOut)) {
-    return NS_ERROR_OUT_OF_MEMORY;
+  nsresult rv;
+  const Encoding* ignored;
+  Tie(rv, ignored) = mEncoding->Encode(aStr, aOut);
+  if (NS_FAILED(rv)) {
+    return rv;
   }
 
   if (aHeaderEncode) {
     aOut.Adopt(nsLinebreakConverter::
                ConvertLineBreaks(aOut.get(),
                                  nsLinebreakConverter::eLinebreakAny,
                                  nsLinebreakConverter::eLinebreakSpace));
     aOut.ReplaceSubstring(NS_LITERAL_CSTRING("\""),
@@ -854,50 +852,50 @@ EncodingFormSubmission::EncodeVal(const 
 
   return NS_OK;
 }
 
 // --------------------------------------------------------------------------
 
 namespace {
 
-void
-GetSubmitCharset(nsGenericHTMLElement* aForm,
-                 nsACString& oCharset)
+NotNull<const Encoding*>
+GetSubmitEncoding(nsGenericHTMLElement* aForm)
 {
-  oCharset.AssignLiteral("UTF-8"); // default to utf-8
-
   nsAutoString acceptCharsetValue;
   aForm->GetAttr(kNameSpaceID_None, nsGkAtoms::acceptcharset,
                  acceptCharsetValue);
 
   int32_t charsetLen = acceptCharsetValue.Length();
   if (charsetLen > 0) {
     int32_t offset=0;
     int32_t spPos=0;
     // get charset from charsets one by one
     do {
       spPos = acceptCharsetValue.FindChar(char16_t(' '), offset);
       int32_t cnt = ((-1==spPos)?(charsetLen-offset):(spPos-offset));
       if (cnt > 0) {
         nsAutoString uCharset;
         acceptCharsetValue.Mid(uCharset, offset, cnt);
 
-        if (EncodingUtils::FindEncodingForLabelNoReplacement(uCharset, oCharset))
-          return;
+        auto encoding = Encoding::ForLabelNoReplacement(uCharset);
+        if (encoding) {
+          return WrapNotNull(encoding);
+        }
       }
       offset = spPos + 1;
     } while (spPos != -1);
   }
   // if there are no accept-charset or all the charset are not supported
   // Get the charset from document
   nsIDocument* doc = aForm->GetComposedDoc();
   if (doc) {
-    oCharset = doc->GetDocumentCharacterSet();
+    return Encoding::ForName(doc->GetDocumentCharacterSet());
   }
+  return WrapNotNull(UTF_8_ENCODING);
 }
 
 void
 GetEnumAttr(nsGenericHTMLElement* aContent,
             nsIAtom* atom, int32_t* aValue)
 {
   const nsAttrValue* value = aContent->GetParsedAttr(atom);
   if (value && value->Type() == nsAttrValue::eEnum) {
@@ -929,36 +927,26 @@ HTMLFormSubmission::GetFromForm(nsGeneri
   int32_t method = NS_FORM_METHOD_GET;
   if (aOriginatingElement &&
       aOriginatingElement->HasAttr(kNameSpaceID_None, nsGkAtoms::formmethod)) {
     GetEnumAttr(aOriginatingElement, nsGkAtoms::formmethod, &method);
   } else {
     GetEnumAttr(aForm, nsGkAtoms::method, &method);
   }
 
-  // Get charset
-  nsAutoCString charset;
-  GetSubmitCharset(aForm, charset);
-
-  // We now have a canonical charset name, so we only have to check it
-  // against canonical names.
-
-  // use UTF-8 for UTF-16* (per WHATWG and existing practice of
-  // MS IE/Opera).
-  if (StringBeginsWith(charset, NS_LITERAL_CSTRING("UTF-16"))) {
-    charset.AssignLiteral("UTF-8");
-  }
+  // Get encoding
+  auto encoding = GetSubmitEncoding(aForm)->OutputEncoding();
 
   // Choose encoder
   if (method == NS_FORM_METHOD_POST &&
       enctype == NS_FORM_ENCTYPE_MULTIPART) {
-    *aFormSubmission = new FSMultipartFormData(charset, aOriginatingElement);
+    *aFormSubmission = new FSMultipartFormData(encoding, aOriginatingElement);
   } else if (method == NS_FORM_METHOD_POST &&
              enctype == NS_FORM_ENCTYPE_TEXTPLAIN) {
-    *aFormSubmission = new FSTextPlain(charset, aOriginatingElement);
+    *aFormSubmission = new FSTextPlain(encoding, aOriginatingElement);
   } else {
     nsIDocument* doc = aForm->OwnerDoc();
     if (enctype == NS_FORM_ENCTYPE_MULTIPART ||
         enctype == NS_FORM_ENCTYPE_TEXTPLAIN) {
       nsAutoString enctypeStr;
       if (aOriginatingElement &&
           aOriginatingElement->HasAttr(kNameSpaceID_None,
                                        nsGkAtoms::formenctype)) {
@@ -966,17 +954,17 @@ HTMLFormSubmission::GetFromForm(nsGeneri
                                      enctypeStr);
       } else {
         aForm->GetAttr(kNameSpaceID_None, nsGkAtoms::enctype, enctypeStr);
       }
       const char16_t* enctypeStrPtr = enctypeStr.get();
       SendJSWarning(doc, "ForgotPostWarning",
                     &enctypeStrPtr, 1);
     }
-    *aFormSubmission = new FSURLEncoded(charset, method, doc,
-                                        aOriginatingElement);
+    *aFormSubmission =
+      new FSURLEncoded(encoding, method, doc, aOriginatingElement);
   }
 
   return NS_OK;
 }
 
 } // dom namespace
 } // mozilla namespace
--- a/dom/html/HTMLFormSubmission.h
+++ b/dom/html/HTMLFormSubmission.h
@@ -5,17 +5,17 @@
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 #ifndef mozilla_dom_HTMLFormSubmission_h
 #define mozilla_dom_HTMLFormSubmission_h
 
 #include "mozilla/Attributes.h"
 #include "nsCOMPtr.h"
 #include "nsIContent.h"
-#include "nsNCRFallbackEncoderWrapper.h"
+#include "mozilla/Encoding.h"
 #include "nsString.h"
 
 class nsIURI;
 class nsIInputStream;
 class nsGenericHTMLElement;
 class nsIMultiplexInputStream;
 
 namespace mozilla {
@@ -107,84 +107,77 @@ public:
    * @param aPostDataStream a data stream for POST data [OUT]
    */
   virtual nsresult
   GetEncodedSubmission(nsIURI* aURI, nsIInputStream** aPostDataStream) = 0;
 
   /**
    * Get the charset that will be used for submission.
    */
-  void GetCharset(nsACString& aCharset)
-  {
-    aCharset = mCharset;
-  }
+  void GetCharset(nsACString& aCharset) { mEncoding->Name(aCharset); }
 
   nsIContent* GetOriginatingElement() const
   {
     return mOriginatingElement.get();
   }
 
 protected:
   /**
    * Can only be constructed by subclasses.
    *
-   * @param aCharset the charset of the form as a string
+   * @param aEncoding the character encoding of the form
    * @param aOriginatingElement the originating element (can be null)
    */
-  HTMLFormSubmission(const nsACString& aCharset,
+  HTMLFormSubmission(mozilla::NotNull<const mozilla::Encoding*> aEncoding,
                      nsIContent* aOriginatingElement)
-    : mCharset(aCharset)
+    : mEncoding(aEncoding)
     , mOriginatingElement(aOriginatingElement)
   {
     MOZ_COUNT_CTOR(HTMLFormSubmission);
   }
 
-  // The name of the encoder charset
-  nsCString mCharset;
+  // The character encoding of this form submission
+  mozilla::NotNull<const mozilla::Encoding*> mEncoding;
 
   // Originating element.
   nsCOMPtr<nsIContent> mOriginatingElement;
 };
 
 class EncodingFormSubmission : public HTMLFormSubmission
 {
 public:
-  EncodingFormSubmission(const nsACString& aCharset,
+  EncodingFormSubmission(mozilla::NotNull<const mozilla::Encoding*> aEncoding,
                          nsIContent* aOriginatingElement);
 
   virtual ~EncodingFormSubmission();
 
   /**
    * Encode a Unicode string to bytes using the encoder (or just copy the input
    * if there is no encoder).
    * @param aStr the string to encode
    * @param aResult the encoded string [OUT]
    * @param aHeaderEncode If true, turns all linebreaks into spaces and escapes
    *                      all quotes
    * @throws an error if UnicodeToNewBytes fails
    */
   nsresult EncodeVal(const nsAString& aStr, nsCString& aResult,
                      bool aHeaderEncode);
-
-private:
-  // The encoder that will encode Unicode names and values
-  nsNCRFallbackEncoderWrapper mEncoder;
 };
 
 /**
  * Handle multipart/form-data encoding, which does files as well as normal
  * inputs.  This always does POST.
  */
 class FSMultipartFormData : public EncodingFormSubmission
 {
 public:
   /**
-   * @param aCharset the charset of the form as a string
+   * @param aEncoding the character encoding of the form
    */
-  FSMultipartFormData(const nsACString& aCharset,
+  FSMultipartFormData(mozilla::NotNull<const mozilla::Encoding*> aEncoding,
                       nsIContent* aOriginatingElement);
   ~FSMultipartFormData();
  
   virtual nsresult
   AddNameValuePair(const nsAString& aName, const nsAString& aValue) override;
 
   virtual nsresult
   AddNameBlobOrNullPair(const nsAString& aName, Blob* aBlob) override;
--- a/dom/html/nsHTMLDocument.cpp
+++ b/dom/html/nsHTMLDocument.cpp
@@ -713,17 +713,17 @@ nsHTMLDocument::StartDocumentLoad(const 
       TryCacheCharset(cachingChan, charsetSource, charset);
     }
 
     TryTLD(charsetSource, charset);
     TryFallback(charsetSource, charset);
 
     if (wyciwygChannel) {
       // We know for sure that the parser needs to be using UTF16.
-      parserCharset = "UTF-16";
+      parserCharset = "UTF-16LE";
       parserCharsetSource = charsetSource < kCharsetFromChannel ?
         kCharsetFromChannel : charsetSource;
 
       nsAutoCString cachedCharset;
       int32_t cachedSource;
       rv = wyciwygChannel->GetCharsetAndSource(&cachedSource, cachedCharset);
       if (NS_SUCCEEDED(rv)) {
         if (cachedSource > charsetSource) {
--- a/dom/json/nsJSON.cpp
+++ b/dom/json/nsJSON.cpp
@@ -7,31 +7,28 @@
 #include "jsapi.h"
 #include "js/CharacterEncoding.h"
 #include "nsJSON.h"
 #include "nsIXPConnect.h"
 #include "nsIXPCScriptable.h"
 #include "nsStreamUtils.h"
 #include "nsIInputStream.h"
 #include "nsStringStream.h"
-#include "mozilla/dom/EncodingUtils.h"
-#include "nsIUnicodeEncoder.h"
-#include "nsIUnicodeDecoder.h"
 #include "nsNetUtil.h"
 #include "nsIURI.h"
 #include "nsComponentManagerUtils.h"
 #include "nsContentUtils.h"
 #include "nsIScriptError.h"
 #include "nsCRTGlue.h"
 #include "nsIScriptSecurityManager.h"
 #include "NullPrincipal.h"
 #include "mozilla/Maybe.h"
 #include <algorithm>
 
-using mozilla::dom::EncodingUtils;
+using namespace mozilla;
 
 #define JSON_STREAM_BUFSIZE 4096
 
 NS_INTERFACE_MAP_BEGIN(nsJSON)
   NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(nsISupports, nsIJSON)
   NS_INTERFACE_MAP_ENTRY(nsIJSON)
 NS_INTERFACE_MAP_END
 
@@ -87,25 +84,21 @@ nsJSON::Encode(JS::Handle<JS::Value> aVa
       aJSON.Append(writer.mOutputString);
     }
   }
 
   return rv;
 }
 
 static const char UTF8BOM[] = "\xEF\xBB\xBF";
-static const char UTF16LEBOM[] = "\xFF\xFE";
-static const char UTF16BEBOM[] = "\xFE\xFF";
 
 static nsresult CheckCharset(const char* aCharset)
 {
   // Check that the charset is permissible
-  if (!(strcmp(aCharset, "UTF-8") == 0 ||
-        strcmp(aCharset, "UTF-16LE") == 0 ||
-        strcmp(aCharset, "UTF-16BE") == 0)) {
+  if (!(strcmp(aCharset, "UTF-8") == 0)) {
     return NS_ERROR_INVALID_ARG;
   }
 
   return NS_OK;
 }
 
 NS_IMETHODIMP
 nsJSON::EncodeToStream(nsIOutputStream *aStream,
@@ -130,28 +123,21 @@ nsJSON::EncodeToStream(nsIOutputStream *
     rv = NS_NewBufferedOutputStream(getter_AddRefs(bufferedStream),
                                     aStream, 4096);
     NS_ENSURE_SUCCESS(rv, rv);
   //  aStream = bufferedStream;
   //}
 
   uint32_t ignored;
   if (aWriteBOM) {
-    if (strcmp(aCharset, "UTF-8") == 0)
-      rv = aStream->Write(UTF8BOM, 3, &ignored);
-    else if (strcmp(aCharset, "UTF-16LE") == 0)
-      rv = aStream->Write(UTF16LEBOM, 2, &ignored);
-    else if (strcmp(aCharset, "UTF-16BE") == 0)
-      rv = aStream->Write(UTF16BEBOM, 2, &ignored);
+    rv = aStream->Write(UTF8BOM, 3, &ignored);
     NS_ENSURE_SUCCESS(rv, rv);
   }
 
   nsJSONWriter writer(bufferedStream);
-  rv = writer.SetCharset(aCharset);
-  NS_ENSURE_SUCCESS(rv, rv);
 
   if (aArgc == 0) {
     return NS_OK;
   }
 
   rv = EncodeInternal(cx, val, &writer);
   NS_ENSURE_SUCCESS(rv, rv);
 
@@ -253,48 +239,35 @@ nsJSON::EncodeInternal(JSContext* cx, co
 nsJSONWriter::nsJSONWriter() : mStream(nullptr),
                                mBuffer(nullptr),
                                mBufferCount(0),
                                mDidWrite(false),
                                mEncoder(nullptr)
 {
 }
 
-nsJSONWriter::nsJSONWriter(nsIOutputStream *aStream) : mStream(aStream),
-                                                       mBuffer(nullptr),
-                                                       mBufferCount(0),
-                                                       mDidWrite(false),
-                                                       mEncoder(nullptr)
+nsJSONWriter::nsJSONWriter(nsIOutputStream* aStream)
+  : mStream(aStream)
+  , mBuffer(nullptr)
+  , mBufferCount(0)
+  , mDidWrite(false)
+  , mEncoder(UTF_8_ENCODING->NewEncoder())
 {
 }
 
 nsJSONWriter::~nsJSONWriter()
 {
   delete [] mBuffer;
 }
 
 nsresult
-nsJSONWriter::SetCharset(const char* aCharset)
-{
-  nsresult rv = NS_OK;
-  if (mStream) {
-    mEncoder = EncodingUtils::EncoderForEncoding(aCharset);
-    rv = mEncoder->SetOutputErrorBehavior(nsIUnicodeEncoder::kOnError_Signal,
-                                          nullptr, '\0');
-    NS_ENSURE_SUCCESS(rv, rv);
-  }
-
-  return rv;
-}
-
-nsresult
 nsJSONWriter::Write(const char16_t *aBuffer, uint32_t aLength)
 {
   if (mStream) {
-    return WriteToStream(mStream, mEncoder, aBuffer, aLength);
+    return WriteToStream(mStream, mEncoder.get(), aBuffer, aLength);
   }
 
   if (!mDidWrite) {
     mBuffer = new char16_t[JSON_STREAM_BUFSIZE];
     mDidWrite = true;
   }
 
   if (JSON_STREAM_BUFSIZE <= aLength + mBufferCount) {
@@ -320,43 +293,45 @@ bool nsJSONWriter::DidWrite()
 
 void
 nsJSONWriter::FlushBuffer()
 {
   mOutputString.Append(mBuffer, mBufferCount);
 }
 
 nsresult
-nsJSONWriter::WriteToStream(nsIOutputStream *aStream,
-                            nsIUnicodeEncoder *encoder,
-                            const char16_t *aBuffer,
+nsJSONWriter::WriteToStream(nsIOutputStream* aStream,
+                            Encoder* encoder,
+                            const char16_t* aBuffer,
                             uint32_t aLength)
 {
-  nsresult rv;
-  int32_t srcLength = aLength;
-  uint32_t bytesWritten;
-
-  // The bytes written to the stream might differ from the char16_t size
-  int32_t aDestLength;
-  rv = encoder->GetMaxLength(aBuffer, srcLength, &aDestLength);
-  NS_ENSURE_SUCCESS(rv, rv);
+  uint8_t buffer[1024];
+  auto dst = MakeSpan(buffer);
+  auto src = MakeSpan(aBuffer, aLength);
 
-  // create the buffer we need
-  char* destBuf = (char *) moz_xmalloc(aDestLength);
-  if (!destBuf)
-    return NS_ERROR_OUT_OF_MEMORY;
-
-  rv = encoder->Convert(aBuffer, &srcLength, destBuf, &aDestLength);
-  if (NS_SUCCEEDED(rv))
-    rv = aStream->Write(destBuf, aDestLength, &bytesWritten);
-
-  free(destBuf);
-  mDidWrite = true;
-
-  return rv;
+  for (;;) {
+    uint32_t result;
+    size_t read;
+    size_t written;
+    bool hadErrors;
+    Tie(result, read, written, hadErrors) =
+      encoder->EncodeFromUTF16(src, dst, false);
+    Unused << hadErrors;
+    src = src.From(read);
+    uint32_t ignored;
+    nsresult rv =
+      aStream->Write(reinterpret_cast<const char*>(buffer), written, &ignored);
+    if (NS_FAILED(rv)) {
+      return rv;
+    }
+    if (result == kInputEmpty) {
+      mDidWrite = true;
+      return NS_OK;
+    }
+  }
 }
 
 NS_IMETHODIMP
 nsJSON::Decode(const nsAString& json, JSContext* cx,
                JS::MutableHandle<JS::Value> aRetval)
 {
   nsresult rv = WarnDeprecatedMethod(DecodeWarning);
   if (NS_FAILED(rv))
@@ -502,35 +477,25 @@ NS_INTERFACE_MAP_BEGIN(nsJSONListener)
 NS_INTERFACE_MAP_END
 
 NS_IMPL_ADDREF(nsJSONListener)
 NS_IMPL_RELEASE(nsJSONListener)
 
 NS_IMETHODIMP
 nsJSONListener::OnStartRequest(nsIRequest *aRequest, nsISupports *aContext)
 {
-  mSniffBuffer.Truncate();
   mDecoder = nullptr;
 
   return NS_OK;
 }
 
 NS_IMETHODIMP
 nsJSONListener::OnStopRequest(nsIRequest *aRequest, nsISupports *aContext,
                               nsresult aStatusCode)
 {
-  nsresult rv;
-
-  // This can happen with short UTF-8 messages (<4 bytes)
-  if (!mSniffBuffer.IsEmpty()) {
-    // Just consume mSniffBuffer
-    rv = ProcessBytes(nullptr, 0);
-    NS_ENSURE_SUCCESS(rv, rv);
-  }
-
   JS::Rooted<JS::Value> reviver(mCx, JS::NullValue()), value(mCx);
 
   JS::ConstTwoByteChars chars(reinterpret_cast<const char16_t*>(mBufferedChars.Elements()),
                               mBufferedChars.Length());
   bool ok = JS_ParseJSONWithReviver(mCx, chars.begin().get(),
                                       uint32_t(mBufferedChars.Length()),
                                       reviver, &value);
 
@@ -541,27 +506,18 @@ nsJSONListener::OnStopRequest(nsIRequest
 
 NS_IMETHODIMP
 nsJSONListener::OnDataAvailable(nsIRequest *aRequest, nsISupports *aContext,
                                 nsIInputStream *aStream,
                                 uint64_t aOffset, uint32_t aLength)
 {
   nsresult rv = NS_OK;
 
-  if (mNeedsConverter && mSniffBuffer.Length() < 4) {
-    uint32_t readCount = (aLength < 4) ? aLength : 4;
-    rv = NS_ConsumeStream(aStream, readCount, mSniffBuffer);
-    NS_ENSURE_SUCCESS(rv, rv);
-
-    if (mSniffBuffer.Length() < 4)
-      return NS_OK;
-  }
-
   char buffer[JSON_STREAM_BUFSIZE];
-  unsigned long bytesRemaining = aLength - mSniffBuffer.Length();
+  unsigned long bytesRemaining = aLength;
   while (bytesRemaining) {
     unsigned int bytesRead;
     rv = aStream->Read(buffer,
                        std::min((unsigned long)sizeof(buffer), bytesRemaining),
                        &bytesRead);
     NS_ENSURE_SUCCESS(rv, rv);
     rv = ProcessBytes(buffer, bytesRead);
     NS_ENSURE_SUCCESS(rv, rv);
@@ -569,84 +525,68 @@ nsJSONListener::OnDataAvailable(nsIReque
   }
 
   return rv;
 }
 
 nsresult
 nsJSONListener::ProcessBytes(const char* aBuffer, uint32_t aByteLength)
 {
-  nsresult rv;
-  // Check for BOM, or sniff charset
-  nsAutoCString charset;
   if (mNeedsConverter && !mDecoder) {
-    if (!nsContentUtils::CheckForBOM((const unsigned char*) mSniffBuffer.get(),
-                                      mSniffBuffer.Length(), charset)) {
-      // OK, found no BOM, sniff the first character to see what this is
-      // See section 3 of RFC4627 for details on why this works.
-      const char *buffer = mSniffBuffer.get();
-      if (mSniffBuffer.Length() >= 4) {
-        if (buffer[0] == 0x00 && buffer[1] != 0x00 &&
-            buffer[2] == 0x00 && buffer[3] != 0x00) {
-          charset = "UTF-16BE";
-        } else if (buffer[0] != 0x00 && buffer[1] == 0x00 &&
-                   buffer[2] != 0x00 && buffer[3] == 0x00) {
-          charset = "UTF-16LE";
-        } else if (buffer[0] != 0x00 && buffer[1] != 0x00 &&
-                   buffer[2] != 0x00 && buffer[3] != 0x00) {
-          charset = "UTF-8";
-        }
-      } else {
-        // Not enough bytes to sniff, assume UTF-8
-        charset = "UTF-8";
-      }
-    }
-
-    // We should have a unicode charset by now
-    rv = CheckCharset(charset.get());
-    NS_ENSURE_SUCCESS(rv, rv);
-    mDecoder = EncodingUtils::DecoderForEncoding(charset);
-
-    // consume the sniffed bytes
-    rv = ConsumeConverted(mSniffBuffer.get(), mSniffBuffer.Length());
-    NS_ENSURE_SUCCESS(rv, rv);
-    mSniffBuffer.Truncate();
+    // BOM sniffing is built into the decoder.
+    mDecoder = UTF_8_ENCODING->NewDecoder();
   }
 
   if (!aBuffer)
     return NS_OK;
 
+  nsresult rv;
   if (mNeedsConverter) {
     rv = ConsumeConverted(aBuffer, aByteLength);
   } else {
     uint32_t unichars = aByteLength / sizeof(char16_t);
     rv = Consume((char16_t *) aBuffer, unichars);
   }
 
   return rv;
 }
 
 nsresult
 nsJSONListener::ConsumeConverted(const char* aBuffer, uint32_t aByteLength)
 {
-  nsresult rv;
-  int32_t unicharLength = 0;
-  int32_t srcLen = aByteLength;
+  CheckedInt<size_t> needed = mDecoder->MaxUTF16BufferLength(aByteLength);
+  if (!needed.isValid()) {
+    return NS_ERROR_OUT_OF_MEMORY;
+  }
 
-  rv = mDecoder->GetMaxLength(aBuffer, srcLen, &unicharLength);
-  NS_ENSURE_SUCCESS(rv, rv);
+  CheckedInt<size_t> total(needed);
+  total += mBufferedChars.Length();
+  if (!total.isValid()) {
+    return NS_ERROR_OUT_OF_MEMORY;
+  }
 
-  char16_t* endelems = mBufferedChars.AppendElements(unicharLength);
-  int32_t preLength = unicharLength;
-  rv = mDecoder->Convert(aBuffer, &srcLen, endelems, &unicharLength);
-  if (NS_FAILED(rv))
-    return rv;
-  MOZ_ASSERT(preLength >= unicharLength, "GetMaxLength lied");
-  if (preLength > unicharLength)
-    mBufferedChars.TruncateLength(mBufferedChars.Length() - (preLength - unicharLength));
+  char16_t* endelems = mBufferedChars.AppendElements(needed.value(), fallible);
+  if (!endelems) {
+    return NS_ERROR_OUT_OF_MEMORY;
+  }
+
+  auto src = AsBytes(MakeSpan(aBuffer, aByteLength));
+  auto dst = MakeSpan(endelems, needed.value());
+  uint32_t result;
+  size_t read;
+  size_t written;
+  bool hadErrors;
+  // Ignoring EOF like the old code
+  Tie(result, read, written, hadErrors) =
+    mDecoder->DecodeToUTF16(src, dst, false);
+  MOZ_ASSERT(result == kInputEmpty);
+  MOZ_ASSERT(read == src.Length());
+  MOZ_ASSERT(written <= needed.value());
+  Unused << hadErrors;
+  mBufferedChars.TruncateLength(total.value() - (needed.value() - written));
   return NS_OK;
 }
 
 nsresult
 nsJSONListener::Consume(const char16_t* aBuffer, uint32_t aByteLength)
 {
   if (!mBufferedChars.AppendElements(aBuffer, aByteLength))
     return NS_ERROR_FAILURE;
--- a/dom/json/nsJSON.h
+++ b/dom/json/nsJSON.h
@@ -6,45 +6,45 @@
 
 #ifndef nsJSON_h__
 #define nsJSON_h__
 
 #include "nsIJSON.h"
 #include "nsString.h"
 #include "nsCOMPtr.h"
 #include "nsIOutputStream.h"
-#include "nsIUnicodeEncoder.h"
-#include "nsIUnicodeDecoder.h"
+#include "mozilla/Encoding.h"
 #include "nsIRequestObserver.h"
 #include "nsIStreamListener.h"
 #include "nsTArray.h"
 
 class nsIURI;
 
 class MOZ_STACK_CLASS nsJSONWriter
 {
 public:
   nsJSONWriter();
   explicit nsJSONWriter(nsIOutputStream* aStream);
   virtual ~nsJSONWriter();
-  nsresult SetCharset(const char *aCharset);
   nsCOMPtr<nsIOutputStream> mStream;
   nsresult Write(const char16_t *aBuffer, uint32_t aLength);
   nsString mOutputString;
   bool DidWrite();
   void FlushBuffer();
 
 protected:
   char16_t *mBuffer;
   uint32_t mBufferCount;
   bool mDidWrite;
-  nsresult WriteToStream(nsIOutputStream *aStream, nsIUnicodeEncoder *encoder,
-                         const char16_t *aBuffer, uint32_t aLength);
+  nsresult WriteToStream(nsIOutputStream* aStream,
+                         mozilla::Encoder* encoder,
+                         const char16_t* aBuffer,
+                         uint32_t aLength);
 
-  nsCOMPtr<nsIUnicodeEncoder> mEncoder;
+  mozilla::UniquePtr<mozilla::Encoder> mEncoder;
 };
 
 class nsJSON : public nsIJSON
 {
 public:
   nsJSON();
 
   NS_DECL_ISUPPORTS
@@ -78,17 +78,16 @@ public:
   NS_DECL_NSISTREAMLISTENER
 
 protected:
   virtual ~nsJSONListener();
 
   bool mNeedsConverter;
   JSContext *mCx;
   JS::Value *mRootVal;
-  nsCOMPtr<nsIUnicodeDecoder> mDecoder;
-  nsCString mSniffBuffer;
+  mozilla::UniquePtr<mozilla::Decoder> mDecoder;
   nsTArray<char16_t> mBufferedChars;
   nsresult ProcessBytes(const char* aBuffer, uint32_t aByteLength);
   nsresult ConsumeConverted(const char* aBuffer, uint32_t aByteLength);
   nsresult Consume(const char16_t *data, uint32_t len);
 };
 
 #endif
--- a/dom/json/test/unit/test_encode.js
+++ b/dom/json/test/unit/test_encode.js
@@ -38,17 +38,17 @@ function testStringEncode()
   // the otherwise-exactly-identical JSON.stringify.
 }
 
 function testToJSON() {
   var obj1 = {a:1};
   var obj2 = {foo:"bar"};
   do_check_eq(nativeJSON.encode({toJSON: () => obj1}), '{"a":1}');
   do_check_eq(nativeJSON.encode({toJSON: () => obj2}), '{"foo":"bar"}');
-  
+
   do_check_eq(nativeJSON.encode({toJSON: () => null}), null);
   do_check_eq(nativeJSON.encode({toJSON: () => ""}), null);
   do_check_eq(nativeJSON.encode({toJSON: () => undefined }), null);
   do_check_eq(nativeJSON.encode({toJSON: () => 5}), null);
   do_check_eq(nativeJSON.encode({toJSON: () => function(){}}), null);
   do_check_eq(nativeJSON.encode({toJSON: () => dump}), null);
 }
 
@@ -106,38 +106,31 @@ function testOutputStreams() {
     ['[1,2,3]', [1,2,3]],
     ['[1,null,3]',[1,,3]],
   ];
   for (var i = 0; i < pairs.length; i++)
   {
     var pair = pairs[i];
     if (pair[1] && (typeof pair[1] == "object")) {
       var utf8File = writeToFile(pair[1], "UTF-8", false);
-      var utf16LEFile = writeToFile(pair[1], "UTF-16LE", false);
-      var utf16BEFile = writeToFile(pair[1], "UTF-16BE", false);
 
       // all ascii with no BOMs, so this will work
-      do_check_eq(utf16LEFile.fileSize / 2, utf8File.fileSize);
-      do_check_eq(utf16LEFile.fileSize, utf16BEFile.fileSize);
+      do_check_eq(utf8File.fileSize, pair[0].length);
     }
   }
 
   // check BOMs
   // the clone() calls are there to work around -- bug 410005
   var f = writeToFile({},"UTF-8", true).clone();
   do_check_eq(f.fileSize, 5);
-  var f = writeToFile({},"UTF-16LE", true).clone();
-  do_check_eq(f.fileSize, 6);
-  var f = writeToFile({},"UTF-16BE", true).clone();
-  do_check_eq(f.fileSize, 6);
-  
+
   outputDir.remove(true);
 }
 
 function run_test()
 {
   testStringEncode();
   testToJSON();
   testThrowingToJSON();
-  
+
   testOutputStreams();
-  
+
 }
--- a/dom/plugins/base/nsPluginTags.cpp
+++ b/dom/plugins/base/nsPluginTags.cpp
@@ -6,30 +6,28 @@
 #include "nsPluginTags.h"
 
 #include "prlink.h"
 #include "plstr.h"
 #include "nsIPluginInstanceOwner.h"
 #include "nsPluginsDir.h"
 #include "nsPluginHost.h"
 #include "nsIBlocklistService.h"
-#include "nsIUnicodeDecoder.h"
 #include "nsIPlatformCharset.h"
 #include "nsPluginLogging.h"
 #include "nsNPAPIPlugin.h"
 #include "nsCharSeparatedTokenizer.h"
 #include "mozilla/Preferences.h"
 #include "mozilla/Unused.h"
 #include "nsNetUtil.h"
 #include <cctype>
-#include "mozilla/dom/EncodingUtils.h"
+#include "mozilla/Encoding.h"
 #include "mozilla/dom/ContentChild.h"
 #include "mozilla/dom/FakePluginTagInitBinding.h"
 
-using mozilla::dom::EncodingUtils;
 using mozilla::dom::FakePluginTagInit;
 using namespace mozilla;
 
 // These legacy flags are used in the plugin registry. The states are now
 // stored in prefs, but we still need to be able to import them.
 #define NS_PLUGIN_FLAG_ENABLED      0x0001    // is this plugin enabled?
 // no longer used                   0x0002    // reuse only if regenerating pluginreg.dat
 #define NS_PLUGIN_FLAG_FROMCACHE    0x0004    // this plugintag info was loaded from cache
@@ -440,70 +438,34 @@ nsPluginTag::InitSandboxLevel()
   if (mIsFlashPlugin && mSandboxLevel < 2) {
     mSandboxLevel = 2;
   }
 #endif
 #endif
 }
 
 #if !defined(XP_WIN) && !defined(XP_MACOSX)
-static nsresult ConvertToUTF8(nsIUnicodeDecoder *aUnicodeDecoder,
-                              nsAFlatCString& aString)
+static void
+ConvertToUTF8(nsAFlatCString& aString)
 {
-  int32_t numberOfBytes = aString.Length();
-  int32_t outUnicodeLen;
-  nsAutoString buffer;
-  nsresult rv = aUnicodeDecoder->GetMaxLength(aString.get(), numberOfBytes,
-                                              &outUnicodeLen);
-  NS_ENSURE_SUCCESS(rv, rv);
-  if (!buffer.SetLength(outUnicodeLen, fallible))
-    return NS_ERROR_OUT_OF_MEMORY;
-  rv = aUnicodeDecoder->Convert(aString.get(), &numberOfBytes,
-                                buffer.BeginWriting(), &outUnicodeLen);
-  NS_ENSURE_SUCCESS(rv, rv);
-  buffer.SetLength(outUnicodeLen);
-  CopyUTF16toUTF8(buffer, aString);
-
-  return NS_OK;
+  Unused << UTF_8_ENCODING->DecodeWithoutBOMHandling(aString, aString);
 }
 #endif
 
 nsresult nsPluginTag::EnsureMembersAreUTF8()
 {
 #if defined(XP_WIN) || defined(XP_MACOSX)
   return NS_OK;
 #else
-  nsresult rv;
-
-  nsCOMPtr<nsIPlatformCharset> pcs =
-  do_GetService(NS_PLATFORMCHARSET_CONTRACTID, &rv);
-  NS_ENSURE_SUCCESS(rv, rv);
-  nsCOMPtr<nsIUnicodeDecoder> decoder;
-
-  nsAutoCString charset;
-  rv = pcs->GetCharset(kPlatformCharsetSel_FileName, charset);
-  NS_ENSURE_SUCCESS(rv, rv);
-  if (!charset.LowerCaseEqualsLiteral("utf-8")) {
-    decoder = EncodingUtils::DecoderForEncoding(charset);
-    ConvertToUTF8(decoder, mFileName);
-    ConvertToUTF8(decoder, mFullPath);
-  }
-
-  // The description of the plug-in and the various MIME type descriptions
-  // should be encoded in the standard plain text file encoding for this system.
-  // XXX should we add kPlatformCharsetSel_PluginResource?
-  rv = pcs->GetCharset(kPlatformCharsetSel_PlainTextInFile, charset);
-  NS_ENSURE_SUCCESS(rv, rv);
-  if (!charset.LowerCaseEqualsLiteral("utf-8")) {
-    decoder = EncodingUtils::DecoderForEncoding(charset);
-    ConvertToUTF8(decoder, mName);
-    ConvertToUTF8(decoder, mDescription);
-    for (uint32_t i = 0; i < mMimeDescriptions.Length(); ++i) {
-      ConvertToUTF8(decoder, mMimeDescriptions[i]);
-    }
+  ConvertToUTF8(mFileName);
+  ConvertToUTF8(mFullPath);
+  ConvertToUTF8(mName);
+  ConvertToUTF8(mDescription);
+  for (uint32_t i = 0; i < mMimeDescriptions.Length(); ++i) {
+    ConvertToUTF8(mMimeDescriptions[i]);
   }
   return NS_OK;
 #endif
 }
 
 void nsPluginTag::FixupVersion()
 {
 #if defined(XP_LINUX)
--- a/dom/script/ScriptLoadHandler.cpp
+++ b/dom/script/ScriptLoadHandler.cpp
@@ -5,17 +5,16 @@
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 #include "ScriptLoadHandler.h"
 #include "ScriptLoader.h"
 #include "ScriptTrace.h"
 
 #include "nsContentUtils.h"
 
-#include "mozilla/dom/EncodingUtils.h"
 #include "mozilla/Telemetry.h"
 
 namespace mozilla {
 namespace dom {
 
 #undef LOG
 #define LOG(args) \
   MOZ_LOG(ScriptLoader::gScriptLoaderLog, mozilla::LogLevel::Debug, args)
@@ -95,41 +94,44 @@ ScriptLoadHandler::OnIncrementalData(nsI
   return rv;
 }
 
 nsresult
 ScriptLoadHandler::DecodeRawData(const uint8_t* aData,
                                  uint32_t aDataLength,
                                  bool aEndOfStream)
 {
-  int32_t srcLen = aDataLength;
-  const char* src = reinterpret_cast<const char*>(aData);
-  int32_t dstLen;
-  nsresult rv =
-    mDecoder->GetMaxLength(src, srcLen, &dstLen);
-
-  NS_ENSURE_SUCCESS(rv, rv);
+  CheckedInt<size_t> needed = mDecoder->MaxUTF16BufferLength(aDataLength);
+  if (!needed.isValid()) {
+    return NS_ERROR_OUT_OF_MEMORY;
+  }
 
   uint32_t haveRead = mRequest->mScriptText.length();
 
   CheckedInt<uint32_t> capacity = haveRead;
-  capacity += dstLen;
+  capacity += needed.value();
 
   if (!capacity.isValid() || !mRequest->mScriptText.reserve(capacity.value())) {
     return NS_ERROR_OUT_OF_MEMORY;
   }
 
-  rv = mDecoder->Convert(src,
-                         &srcLen,
-                         mRequest->mScriptText.begin() + haveRead,
-                         &dstLen);
+  uint32_t result;
+  size_t read;
+  size_t written;
+  bool hadErrors;
+  Tie(result, read, written, hadErrors) = mDecoder->DecodeToUTF16(
+    MakeSpan(aData, aDataLength),
+    MakeSpan(mRequest->mScriptText.begin() + haveRead, needed.value()),
+    aEndOfStream);
+  MOZ_ASSERT(result == kInputEmpty);
+  MOZ_ASSERT(read == aDataLength);
+  MOZ_ASSERT(written <= needed.value());
+  Unused << hadErrors;
 
-  NS_ENSURE_SUCCESS(rv, rv);
-
-  haveRead += dstLen;
+  haveRead += written;
   MOZ_ASSERT(haveRead <= capacity.value(), "mDecoder produced more data than expected");
   MOZ_ALWAYS_TRUE(mRequest->mScriptText.resizeUninitialized(haveRead));
 
   return NS_OK;
 }
 
 bool
 ScriptLoadHandler::EnsureDecoder(nsIIncrementalStreamLoader* aLoader,
@@ -159,46 +161,53 @@ ScriptLoadHandler::EnsureDecoder(nsIIncr
                                  const uint8_t* aData,
                                  uint32_t aDataLength,
                                  bool aEndOfStream,
                                  nsCString& oCharset)
 {
   // JavaScript modules are always UTF-8.
   if (mRequest->IsModuleRequest()) {
     oCharset = "UTF-8";
-    mDecoder = EncodingUtils::DecoderForEncoding(oCharset);
+    mDecoder = UTF_8_ENCODING->NewDecoderWithBOMRemoval();
     return true;
   }
 
   // Determine if BOM check should be done.  This occurs either
   // if end-of-stream has been reached, or at least 3 bytes have
   // been read from input.
   if (!aEndOfStream && (aDataLength < 3)) {
     return false;
   }
 
   // Do BOM detection.
-  if (nsContentUtils::CheckForBOM(aData, aDataLength, oCharset)) {
-    mDecoder = EncodingUtils::DecoderForEncoding(oCharset);
+  const Encoding* encoding;
+  size_t bomLength;
+  Tie(encoding, bomLength) = Encoding::ForBOM(MakeSpan(aData, aDataLength));
+  if (encoding) {
+    mDecoder = encoding->NewDecoderWithBOMRemoval();
+    encoding->Name(oCharset);
     return true;
   }
 
   // BOM detection failed, check content stream for charset.
   nsCOMPtr<nsIRequest> req;
   nsresult rv = aLoader->GetRequest(getter_AddRefs(req));
   NS_ASSERTION(req, "StreamLoader's request went away prematurely");
   NS_ENSURE_SUCCESS(rv, false);
 
   nsCOMPtr<nsIChannel> channel = do_QueryInterface(req);
 
-  if (channel &&
-      NS_SUCCEEDED(channel->GetContentCharset(oCharset)) &&
-      EncodingUtils::FindEncodingForLabel(oCharset, oCharset)) {
-    mDecoder = EncodingUtils::DecoderForEncoding(oCharset);
-    return true;
+  if (channel) {
+    nsAutoCString label;
+    if (NS_SUCCEEDED(channel->GetContentCharset(label)) &&
+        (encoding = Encoding::ForLabel(label))) {
+      mDecoder = encoding->NewDecoderWithoutBOMHandling();
+      encoding->Name(oCharset);
+      return true;
+    }
   }
 
   // Check the hint charset from the script element or preload
   // request.
   nsAutoString hintCharset;
   if (!mRequest->IsPreload()) {
     mRequest->mElement->GetScriptCharset(hintCharset);
   } else {
@@ -206,35 +215,36 @@ ScriptLoadHandler::EnsureDecoder(nsIIncr
       mScriptLoader->mPreloads.IndexOf(mRequest, 0,
             ScriptLoader::PreloadRequestComparator());
 
     NS_ASSERTION(i != mScriptLoader->mPreloads.NoIndex,
                  "Incorrect preload bookkeeping");
     hintCharset = mScriptLoader->mPreloads[i].mCharset;
   }
 
-  if (EncodingUtils::FindEncodingForLabel(hintCharset, oCharset)) {
-    mDecoder = EncodingUtils::DecoderForEncoding(oCharset);
+  if ((encoding = Encoding::ForLabel(hintCharset))) {
+    mDecoder = encoding->NewDecoderWithoutBOMHandling();
+    encoding->Name(oCharset);
     return true;
   }
 
   // Get the charset from the charset of the document.
   if (mScriptLoader->mDocument) {
-    oCharset = mScriptLoader->mDocument->GetDocumentCharacterSet();
-    mDecoder = EncodingUtils::DecoderForEncoding(oCharset);
+    encoding =
+      Encoding::ForName(mScriptLoader->mDocument->GetDocumentCharacterSet());
+    mDecoder = encoding->NewDecoderWithoutBOMHandling();
+    encoding->Name(oCharset);
     return true;
   }
 
   // Curiously, there are various callers that don't pass aDocument. The
   // fallback in the old code was ISO-8859-1, which behaved like
-  // windows-1252. Saying windows-1252 for clarity and for compliance
-  // with the Encoding Standard.
+  // windows-1252.
   oCharset = "windows-1252";
-  mDecoder = EncodingUtils::DecoderForEncoding(oCharset);
-
+  mDecoder = WINDOWS_1252_ENCODING->NewDecoderWithoutBOMHandling();
   return true;
 }
 
 nsresult
 ScriptLoadHandler::MaybeDecodeSRI()
 {
   if (!mSRIDataVerifier || mSRIDataVerifier->IsComplete() || NS_FAILED(mSRIStatus)) {
     return NS_OK;
--- a/dom/script/ScriptLoadHandler.h
+++ b/dom/script/ScriptLoadHandler.h
@@ -69,15 +69,15 @@ private:
 
   // SRI data verifier.
   nsAutoPtr<SRICheckDataVerifier> mSRIDataVerifier;
 
   // Status of SRI data operations.
   nsresult mSRIStatus;
 
   // Unicode decoder for charset.
-  nsCOMPtr<nsIUnicodeDecoder> mDecoder;
+  mozilla::UniquePtr<mozilla::Decoder> mDecoder;
 };
 
 } // namespace dom
 } // namespace mozilla
 
 #endif // mozilla_dom_ScriptLoadHandler_h
--- a/dom/script/ScriptLoader.cpp
+++ b/dom/script/ScriptLoader.cpp
@@ -2437,88 +2437,87 @@ ScriptLoader::ConvertToUTF16(nsIChannel*
                              char16_t*& aBufOut, size_t& aLengthOut)
 {
   if (!aLength) {
     aBufOut = nullptr;
     aLengthOut = 0;
     return NS_OK;
   }
 
+  auto data = MakeSpan(aData, aLength);
+
   // The encoding info precedence is as follows from high to low:
   // The BOM
   // HTTP Content-Type (if name recognized)
   // charset attribute (if name recognized)
   // The encoding of the document
 
-  nsAutoCString charset;
-
-  nsCOMPtr<nsIUnicodeDecoder> unicodeDecoder;
-
-  if (nsContentUtils::CheckForBOM(aData, aLength, charset)) {
-    // charset is now one of "UTF-16BE", "UTF-16BE" or "UTF-8".  Those decoder
-    // will take care of swallowing the BOM.
-    unicodeDecoder = EncodingUtils::DecoderForEncoding(charset);
+  UniquePtr<Decoder> unicodeDecoder;
+
+  const Encoding* encoding;
+  size_t bomLength;
+  Tie(encoding, bomLength) = Encoding::ForBOM(data);
+  if (encoding) {
+    unicodeDecoder = encoding->NewDecoderWithBOMRemoval();
   }
 
-  if (!unicodeDecoder &&
-      aChannel &&
-      NS_SUCCEEDED(aChannel->GetContentCharset(charset)) &&
-      EncodingUtils::FindEncodingForLabel(charset, charset)) {
-    unicodeDecoder = EncodingUtils::DecoderForEncoding(charset);
+  if (!unicodeDecoder && aChannel) {
+    nsAutoCString label;
+    if (NS_SUCCEEDED(aChannel->GetContentCharset(label)) &&
+        (encoding = Encoding::ForLabel(label))) {
+      unicodeDecoder = encoding->NewDecoderWithoutBOMHandling();
+    }
   }
 
-  if (!unicodeDecoder &&
-      EncodingUtils::FindEncodingForLabel(aHintCharset, charset)) {
-    unicodeDecoder = EncodingUtils::DecoderForEncoding(charset);
+  if (!unicodeDecoder && (encoding = Encoding::ForLabel(aHintCharset))) {
+    unicodeDecoder = encoding->NewDecoderWithoutBOMHandling();
   }
 
   if (!unicodeDecoder && aDocument) {
-    charset = aDocument->GetDocumentCharacterSet();
-    unicodeDecoder = EncodingUtils::DecoderForEncoding(charset);
+    unicodeDecoder = Encoding::ForName(aDocument->GetDocumentCharacterSet())
+                       ->NewDecoderWithoutBOMHandling();
   }
 
   if (!unicodeDecoder) {
     // Curiously, there are various callers that don't pass aDocument. The
     // fallback in the old code was ISO-8859-1, which behaved like
-    // windows-1252. Saying windows-1252 for clarity and for compliance
-    // with the Encoding Standard.
-    charset = "windows-1252";
-    unicodeDecoder = EncodingUtils::DecoderForEncoding(charset);
+    // windows-1252.
+    unicodeDecoder = WINDOWS_1252_ENCODING->NewDecoderWithoutBOMHandling();
   }
 
-  int32_t unicodeLength = 0;
-
-  nsresult rv =
-    unicodeDecoder->GetMaxLength(reinterpret_cast<const char*>(aData),
-                                 aLength, &unicodeLength);
-  NS_ENSURE_SUCCESS(rv, rv);
-
-  aBufOut = static_cast<char16_t*>(js_malloc(unicodeLength * sizeof(char16_t)));
+  CheckedInt<size_t> unicodeLength =
+    unicodeDecoder->MaxUTF16BufferLength(aLength);
+  if (!unicodeLength.isValid()) {
+    return NS_ERROR_OUT_OF_MEMORY;
+  }
+
+  aBufOut =
+    static_cast<char16_t*>(js_malloc(unicodeLength.value() * sizeof(char16_t)));
   if (!aBufOut) {
     aLengthOut = 0;
     return NS_ERROR_OUT_OF_MEMORY;
   }
-  aLengthOut = unicodeLength;
-
-  rv = unicodeDecoder->Convert(reinterpret_cast<const char*>(aData),
-                               (int32_t *) &aLength, aBufOut,
-                               &unicodeLength);
-  MOZ_ASSERT(NS_SUCCEEDED(rv));
-  aLengthOut = unicodeLength;
-  if (NS_FAILED(rv)) {
-    js_free(aBufOut);
-    aBufOut = nullptr;
-    aLengthOut = 0;
-  }
-  if (charset.Length() == 0) {
-    charset = "?";
-  }
+
+  uint32_t result;
+  size_t read;
+  size_t written;
+  bool hadErrors;
+  Tie(result, read, written, hadErrors) = unicodeDecoder->DecodeToUTF16(
+    data, MakeSpan(aBufOut, unicodeLength.value()), true);
+  MOZ_ASSERT(result == kInputEmpty);
+  MOZ_ASSERT(read == aLength);
+  MOZ_ASSERT(written <= unicodeLength.value());
+  Unused << hadErrors;
+  aLengthOut = written;
+
+  nsAutoCString charset;
+  unicodeDecoder->Encoding()->Name(charset);
   mozilla::Telemetry::Accumulate(mozilla::Telemetry::DOM_SCRIPT_SRC_ENCODING,
     charset);
-  return rv;
+  return NS_OK;
 }
 
 nsresult
 ScriptLoader::OnStreamComplete(nsIIncrementalStreamLoader* aLoader,
                                ScriptLoadRequest* aRequest,
                                nsresult aChannelStatus,
                                nsresult aSRIStatus,
                                mozilla::dom::SRICheckDataVerifier* aSRIDataVerifier)
--- a/dom/script/ScriptLoader.h
+++ b/dom/script/ScriptLoader.h
@@ -4,17 +4,17 @@
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 #ifndef mozilla_dom_ScriptLoader_h
 #define mozilla_dom_ScriptLoader_h
 
 #include "nsCOMPtr.h"
 #include "nsRefPtrHashtable.h"
-#include "nsIUnicodeDecoder.h"
+#include "mozilla/Encoding.h"
 #include "nsIScriptElement.h"
 #include "nsCOMArray.h"
 #include "nsCycleCollectionParticipant.h"
 #include "nsTArray.h"
 #include "nsAutoPtr.h"
 #include "nsICacheInfoChannel.h"
 #include "nsIDocument.h"
 #include "nsIIncrementalStreamLoader.h"
--- a/dom/url/URLSearchParams.cpp
+++ b/dom/url/URLSearchParams.cpp
@@ -1,17 +1,17 @@
 /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
 /* vim: set ts=8 sts=2 et sw=2 tw=80: */
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 #include "URLSearchParams.h"
 #include "mozilla/dom/URLSearchParamsBinding.h"
-#include "mozilla/dom/EncodingUtils.h"
+#include "mozilla/Encoding.h"
 #include "nsDOMString.h"
 #include "nsIInputStream.h"
 #include "nsStringStream.h"
 
 namespace mozilla {
 namespace dom {
 
 bool
@@ -100,48 +100,18 @@ URLParams::Delete(const nsAString& aName
   }
 
   return found;
 }
 
 void
 URLParams::ConvertString(const nsACString& aInput, nsAString& aOutput)
 {
-  aOutput.Truncate();
-
-  if (!mDecoder) {
-    mDecoder = EncodingUtils::DecoderForEncoding("UTF-8");
-    if (!mDecoder) {
-      MOZ_ASSERT(mDecoder, "Failed to create a decoder.");
-      return;
-    }
-  }
-
-  int32_t inputLength = aInput.Length();
-  int32_t outputLength = 0;
-
-  nsresult rv = mDecoder->GetMaxLength(aInput.BeginReading(), inputLength,
-                                       &outputLength);
-  if (NS_WARN_IF(NS_FAILED(rv))) {
-    return;
-  }
-
-  if (!aOutput.SetLength(outputLength, fallible)) {
-    return;
-  }
-
-  int32_t newOutputLength = outputLength;
-  rv = mDecoder->Convert(aInput.BeginReading(), &inputLength,
-                         aOutput.BeginWriting(), &newOutputLength);
-  if (NS_FAILED(rv)) {
-    aOutput.Truncate();
-    return;
-  }
-  if (newOutputLength < outputLength) {
-    aOutput.Truncate(newOutputLength);
+  if (NS_FAILED(UTF_8_ENCODING->DecodeWithoutBOMHandling(aInput, aOutput))) {
+    MOZ_CRASH("Out of memory when converting URL params.");
   }
 }
 
 void
 URLParams::DecodeString(const nsACString& aInput, nsAString& aOutput)
 {
   nsACString::const_iterator start, end;
   aInput.BeginReading(start);
--- a/dom/url/URLSearchParams.h
+++ b/dom/url/URLSearchParams.h
@@ -8,17 +8,16 @@
 #define mozilla_dom_URLSearchParams_h
 
 #include "js/StructuredClone.h"
 #include "mozilla/dom/BindingDeclarations.h"
 #include "mozilla/ErrorResult.h"
 #include "nsCycleCollectionParticipant.h"
 #include "nsWrapperCache.h"
 #include "nsISupports.h"
-#include "nsIUnicodeDecoder.h"
 #include "nsIXMLHttpRequest.h"
 
 namespace mozilla {
 namespace dom {
 
 class URLSearchParams;
 class USVStringSequenceSequenceOrUSVStringUSVStringRecordOrUSVString;
 
@@ -117,17 +116,16 @@ private:
 
   struct Param
   {
     nsString mKey;
     nsString mValue;
   };
 
   nsTArray<Param> mParams;
-  nsCOMPtr<nsIUnicodeDecoder> mDecoder;
 };
 
 class URLSearchParams final : public nsIXHRSendable,
                               public nsWrapperCache
 {
   ~URLSearchParams();
 
 public:
--- a/dom/url/tests/test_urlSearchParams_utf8.html
+++ b/dom/url/tests/test_urlSearchParams_utf8.html
@@ -21,20 +21,19 @@ https://bugzilla.mozilla.org/show_bug.cg
 </pre>
 <a href="http://www.example.net?a=b&c=d" id="anchor">foobar</a>
 <area href="http://www.example.net?a=b&c=d" id="area">foobar</area>
 <script type="application/javascript">
 
   /** Test for Bug 1032511 **/
   var a = new URLSearchParams("%e2");
   ok(a, "a exists");
-  is(a.toString(), '=', "The value should be here.");
+  is(a.toString(), '%EF%BF%BD=', "The value should be here.");
 
   a = new URLSearchParams("a%e2");
-  // This is a known decoder bug that fails to emit a REPLACEMENT CHARACTER.
-  is(a.toString(), 'a=', "The value should be here.");
+  is(a.toString(), 'a%EF%BF%BD=', "The value should be here.");
 
   a = new URLSearchParams("a%e2b");
   is(a.toString(), 'a%EF%BF%BDb=', "The value should be here.");
 
 </script>
 </body>
 </html>
--- a/dom/webidl/TextEncoder.webidl
+++ b/dom/webidl/TextEncoder.webidl
@@ -10,11 +10,19 @@
  * http://creativecommons.org/publicdomain/zero/1.0/
  */
 
 [Constructor,
  Exposed=(Window,Worker,System)]
 interface TextEncoder {
   [Constant]
   readonly attribute DOMString encoding;
+  /*
+   * This is spec-wise USVString but marking it as
+   * DOMString to avoid duplicate work. Since the
+   * UTF-16 to UTF-8 converter performs processing
+   * that's equivalent to first converting a
+   * DOMString to a USVString, let's avoid having
+   * the binding code doing it, too.
+   */
   [NewObject]
-  Uint8Array encode(optional USVString input = "");
+  Uint8Array encode(optional DOMString input = "");
 };
--- a/dom/workers/ServiceWorkerEvents.cpp
+++ b/dom/workers/ServiceWorkerEvents.cpp
@@ -8,18 +8,17 @@
 
 #include "nsAutoPtr.h"
 #include "nsIConsoleReportCollector.h"
 #include "nsIHttpChannelInternal.h"
 #include "nsINetworkInterceptController.h"
 #include "nsIOutputStream.h"
 #include "nsIScriptError.h"
 #include "nsITimedChannel.h"
-#include "nsIUnicodeDecoder.h"
-#include "nsIUnicodeEncoder.h"
+#include "mozilla/Encoding.h"
 #include "nsContentPolicyUtils.h"
 #include "nsContentUtils.h"
 #include "nsComponentManagerUtils.h"
 #include "nsServiceManagerUtils.h"
 #include "nsStreamUtils.h"
 #include "nsNetCID.h"
 #include "nsNetUtil.h"
 #include "nsSerializationHelper.h"
@@ -975,42 +974,31 @@ NS_IMPL_RELEASE_INHERITED(ExtendableEven
 NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION_INHERITED(ExtendableEvent)
 NS_INTERFACE_MAP_END_INHERITING(Event)
 
 namespace {
 nsresult
 ExtractBytesFromUSVString(const nsAString& aStr, nsTArray<uint8_t>& aBytes)
 {
   MOZ_ASSERT(aBytes.IsEmpty());
-  nsCOMPtr<nsIUnicodeEncoder> encoder = EncodingUtils::EncoderForEncoding("UTF-8");
-  if (NS_WARN_IF(!encoder)) {
+  auto encoder = UTF_8_ENCODING->NewEncoder();
+  CheckedInt<size_t> needed =
+    encoder->MaxBufferLengthFromUTF16WithoutReplacement(aStr.Length());
+  if (NS_WARN_IF(!needed.isValid() ||
+                 !aBytes.SetLength(needed.value(), fallible))) {
     return NS_ERROR_OUT_OF_MEMORY;
   }
-
-  int32_t srcLen = aStr.Length();
-  int32_t destBufferLen;
-  nsresult rv = encoder->GetMaxLength(aStr.BeginReading(), srcLen, &destBufferLen);
-  if (NS_WARN_IF(NS_FAILED(rv))) {
-    return rv;
-  }
-
-  if (NS_WARN_IF(!aBytes.SetLength(destBufferLen, fallible))) {
-    return NS_ERROR_OUT_OF_MEMORY;
-  }
-
-  char* destBuffer = reinterpret_cast<char*>(aBytes.Elements());
-  int32_t outLen = destBufferLen;
-  rv = encoder->Convert(aStr.BeginReading(), &srcLen, destBuffer, &outLen);
-  if (NS_WARN_IF(NS_FAILED(rv))) {
-    aBytes.Clear();
-    return rv;
-  }
-
-  aBytes.TruncateLength(outLen);
-
+  uint32_t result;
+  size_t read;
+  size_t written;
+  Tie(result, read, written) =
+    encoder->EncodeFromUTF16WithoutReplacement(aStr, aBytes, true);
+  MOZ_ASSERT(result == kInputEmpty);
+  MOZ_ASSERT(read == aStr.Length());
+  aBytes.TruncateLength(written);
   return NS_OK;
 }
 
 nsresult
 ExtractBytesFromData(const OwningArrayBufferViewOrArrayBufferOrUSVString& aDataInit, nsTArray<uint8_t>& aBytes)
 {
   if (aDataInit.IsArrayBufferView()) {
     const ArrayBufferView& view = aDataInit.GetAsArrayBufferView();
--- a/dom/xhr/XMLHttpRequestMainThread.cpp
+++ b/dom/xhr/XMLHttpRequestMainThread.cpp
@@ -72,17 +72,16 @@
 #include "nsIContentSecurityPolicy.h"
 #include "nsAsyncRedirectVerifyHelper.h"
 #include "nsStringBuffer.h"
 #include "nsIFileChannel.h"
 #include "mozilla/Telemetry.h"
 #include "jsfriendapi.h"
 #include "GeckoProfiler.h"
 #include "mozilla/dom/EncodingUtils.h"
-#include "nsIUnicodeDecoder.h"
 #include "mozilla/dom/XMLHttpRequestBinding.h"
 #include "mozilla/Attributes.h"
 #include "MultipartBlobImpl.h"
 #include "nsIPermissionManager.h"
 #include "nsMimeTypes.h"
 #include "nsIHttpChannelInternal.h"
 #include "nsIClassOfService.h"
 #include "nsCharSeparatedTokenizer.h"
@@ -524,45 +523,48 @@ XMLHttpRequestMainThread::DetectCharset(
 }
 
 nsresult
 XMLHttpRequestMainThread::AppendToResponseText(const char * aSrcBuffer,
                                                uint32_t aSrcBufferLen)
 {
   NS_ENSURE_STATE(mDecoder);
 
-  int32_t destBufferLen;
-  nsresult rv = mDecoder->GetMaxLength(aSrcBuffer, aSrcBufferLen,
-                                       &destBufferLen);
-  NS_ENSURE_SUCCESS(rv, rv);
+  CheckedInt<size_t> destBufferLen =
+    mDecoder->MaxUTF16BufferLength(aSrcBufferLen);
+  if (!destBufferLen.isValid()) {
+    return NS_ERROR_OUT_OF_MEMORY;
+  }
 
   CheckedInt32 size = mResponseText.Length();
-  size += destBufferLen;
+  size += destBufferLen.value();
   if (!size.isValid()) {
     return NS_ERROR_OUT_OF_MEMORY;
   }
 
   XMLHttpRequestStringWriterHelper helper(mResponseText);
 
-  if (!helper.AddCapacity(destBufferLen)) {
+  if (!helper.AddCapacity(destBufferLen.value())) {
     return NS_ERROR_OUT_OF_MEMORY;
   }
 
-  // This code here is basically a copy of a similar thing in
-  // nsScanner::Append(const char* aBuffer, uint32_t aLen).
-  int32_t srclen = (int32_t)aSrcBufferLen;
-  int32_t destlen = (int32_t)destBufferLen;
-  rv = mDecoder->Convert(aSrcBuffer,
-                         &srclen,
-                         helper.EndOfExistingData(),
-                         &destlen);
-  MOZ_ASSERT(NS_SUCCEEDED(rv));
-  MOZ_ASSERT(destlen <= destBufferLen);
-
-  helper.AddLength(destlen);
+  // XXX there's no handling for incomplete byte sequences on EOF!
+  uint32_t result;
+  size_t read;
+  size_t written;
+  bool hadErrors;
+  Tie(result, read, written, hadErrors) = mDecoder->DecodeToUTF16(
+    AsBytes(MakeSpan(aSrcBuffer, aSrcBufferLen)),
+    MakeSpan(helper.EndOfExistingData(), destBufferLen.value()),
+    false);
+  MOZ_ASSERT(result == kInputEmpty);
+  MOZ_ASSERT(read == aSrcBufferLen);
+  MOZ_ASSERT(written <= destBufferLen.value());
+  Unused << hadErrors;
+  helper.AddLength(written);
   return NS_OK;
 }
 
 NS_IMETHODIMP
 XMLHttpRequestMainThread::GetResponseText(nsAString& aResponseText)
 {
   ErrorResult rv;
   DOMString str;
--- a/dom/xhr/XMLHttpRequestMainThread.h
+++ b/dom/xhr/XMLHttpRequestMainThread.h
@@ -39,26 +39,26 @@
 #include "mozilla/dom/TypedArray.h"
 #include "mozilla/dom/File.h"
 #include "mozilla/dom/FormData.h"
 #include "mozilla/dom/URLSearchParams.h"
 #include "mozilla/dom/XMLHttpRequest.h"
 #include "mozilla/dom/XMLHttpRequestBinding.h"
 #include "mozilla/dom/XMLHttpRequestEventTarget.h"
 #include "mozilla/dom/XMLHttpRequestString.h"
+#include "mozilla/Encoding.h"
 
 #ifdef Status
 /* Xlib headers insist on this for some reason... Nuke it because
    it'll override our member name */
 #undef Status
 #endif
 
 class nsIJARChannel;
 class nsILoadGroup;
-class nsIUnicodeDecoder;
 class nsIJSID;
 
 namespace mozilla {
 namespace dom {
 
 class BlobSet;
 class DOMString;
 class XMLHttpRequestUpload;
@@ -687,17 +687,17 @@ protected:
   uint32_t mResponseBodyDecodedPos;
 
   // Decoder used for decoding into mResponseText
   // Only used for DEFAULT, TEXT and JSON responseTypes.
   // In cases where we've only received half a surrogate, the decoder itself
   // carries the state to remember this. Next time we receive more data we
   // simply feed the new data into the decoder which will handle the second
   // part of the surrogate.
-  nsCOMPtr<nsIUnicodeDecoder> mDecoder;
+  mozilla::UniquePtr<mozilla::Decoder> mDecoder;
 
   nsCString mResponseCharset;
 
   void MatchCharsetAndDecoderToResponseDocument();
 
   XMLHttpRequestResponseType mResponseType;
 
   // It is either a cached blob-response from the last call to GetResponse,
--- a/extensions/spellcheck/hunspell/glue/mozHunspell.cpp
+++ b/extensions/spellcheck/hunspell/glue/mozHunspell.cpp
@@ -69,38 +69,34 @@
 #include "mozISpellI18NManager.h"
 #include "nsUnicharUtils.h"
 #include "nsCRT.h"
 #include "mozInlineSpellChecker.h"
 #include "mozilla/Services.h"
 #include <stdlib.h>
 #include "nsIPrefService.h"
 #include "nsIPrefBranch.h"
-#include "mozilla/dom/EncodingUtils.h"
 #include "mozilla/dom/ContentParent.h"
 
 using mozilla::dom::ContentParent;
-using mozilla::dom::EncodingUtils;
+using namespace mozilla;
 
 NS_IMPL_CYCLE_COLLECTING_ADDREF(mozHunspell)
 NS_IMPL_CYCLE_COLLECTING_RELEASE(mozHunspell)
 
 NS_INTERFACE_MAP_BEGIN(mozHunspell)
   NS_INTERFACE_MAP_ENTRY(mozISpellCheckingEngine)
   NS_INTERFACE_MAP_ENTRY(nsIObserver)
   NS_INTERFACE_MAP_ENTRY(nsISupportsWeakReference)
   NS_INTERFACE_MAP_ENTRY(nsIMemoryReporter)
   NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(nsISupports, mozISpellCheckingEngine)
   NS_INTERFACE_MAP_ENTRIES_CYCLE_COLLECTION(mozHunspell)
 NS_INTERFACE_MAP_END
 
-NS_IMPL_CYCLE_COLLECTION(mozHunspell,
-                         mPersonalDictionary,
-                         mEncoder,
-                         mDecoder)
+NS_IMPL_CYCLE_COLLECTION(mozHunspell, mPersonalDictionary)
 
 template<> mozilla::Atomic<size_t> mozilla::CountingAllocatorBase<HunspellAllocator>::sAmount(0);
 
 mozHunspell::mozHunspell()
   : mHunspell(nullptr)
 {
 #ifdef DEBUG
   // There must be only one instance of this class: it reports memory based on
@@ -194,26 +190,23 @@ NS_IMETHODIMP mozHunspell::SetDictionary
   mDictionary = aDictionary;
   mAffixFileName = affFileName;
 
   mHunspell = new Hunspell(affFileName.get(),
                          dictFileName.get());
   if (!mHunspell)
     return NS_ERROR_OUT_OF_MEMORY;
 
-  nsAutoCString label(mHunspell->get_dict_encoding().c_str());
-  nsAutoCString encoding;
-  if (!EncodingUtils::FindEncodingForLabelNoReplacement(label, encoding)) {
+  auto encoding =
+    Encoding::ForLabelNoReplacement(mHunspell->get_dict_encoding());
+  if (!encoding) {
     return NS_ERROR_UCONV_NOCONV;
   }
-  mEncoder = EncodingUtils::EncoderForEncoding(encoding);
-  mDecoder = EncodingUtils::DecoderForEncoding(encoding);
-
-  if (mEncoder)
-    mEncoder->SetOutputErrorBehavior(mEncoder->kOnError_Signal, nullptr, '?');
+  mEncoder = encoding->NewEncoder();
+  mDecoder = encoding->NewDecoderWithoutBOMHandling();
 
   int32_t pos = mDictionary.FindChar('-');
   if (pos == -1)
     pos = mDictionary.FindChar('_');
 
   if (pos == -1)
     mLanguage.Assign(mDictionary);
   else
@@ -480,30 +473,41 @@ mozHunspell::LoadDictionariesFromDir(nsI
 }
 
 nsresult
 mozHunspell::ConvertCharset(const char16_t* aStr, std::string* aDst)
 {
   NS_ENSURE_ARG_POINTER(aDst);
   NS_ENSURE_TRUE(mEncoder, NS_ERROR_NULL_POINTER);
 
-  int32_t outLength;
-  int32_t inLength = NS_strlen(aStr);
-  nsresult rv = mEncoder->GetMaxLength(aStr, inLength, &outLength);
-  NS_ENSURE_SUCCESS(rv, rv);
-
-  aDst->resize(outLength);
-
-  char* dst = &aDst->operator[](0);
-  rv = mEncoder->Convert(aStr, &inLength, dst, &outLength);
-  if (NS_SUCCEEDED(rv)) {
-    aDst->resize(outLength);
+  auto src = MakeStringSpan(aStr);
+  CheckedInt<size_t> needed =
+    mEncoder->MaxBufferLengthFromUTF16WithoutReplacement(src.Length());
+  if (!needed.isValid()) {
+    return NS_ERROR_OUT_OF_MEMORY;
   }
 
-  return rv;
+  aDst->resize(needed.value());
+
+  char* dstPtr = &aDst->operator[](0);
+  auto dst = MakeSpan(reinterpret_cast<uint8_t*>(dstPtr), needed.value());
+
+  uint32_t result;
+  size_t read;
+  size_t written;
+  Tie(result, read, written) =
+    mEncoder->EncodeFromUTF16WithoutReplacement(src, dst, true);
+  Unused << read;
+  MOZ_ASSERT(result != kOutputFull);
+  if (result != kInputEmpty) {
+    return NS_ERROR_UENC_NOMAPPING;
+  }
+  aDst->resize(written);
+  mEncoder->Encoding()->NewEncoderInto(*mEncoder);
+  return NS_OK;
 }
 
 NS_IMETHODIMP
 mozHunspell::CollectReports(nsIHandleReportCallback* aHandleReport,
                             nsISupports* aData, bool aAnonymize)
 {
   MOZ_COLLECT_REPORT(
     "explicit/spell-check", KIND_HEAP, UNITS_BYTES,
@@ -547,32 +551,52 @@ NS_IMETHODIMP mozHunspell::Suggest(const
   std::vector<std::string> suggestions = mHunspell->suggest(charsetWord);
   *aSuggestionCount = static_cast<uint32_t>(suggestions.size());
 
   if (*aSuggestionCount) {
     *aSuggestions  = (char16_t **)moz_xmalloc(*aSuggestionCount * sizeof(char16_t *));
     if (*aSuggestions) {
       uint32_t index = 0;
       for (index = 0; index < *aSuggestionCount && NS_SUCCEEDED(rv); ++index) {
+        // If the IDL used an array of AString, we could use
+        // Encoding::DecodeWithoutBOMHandling() here.
         // Convert the suggestion to utf16
-        int32_t inLength = suggestions[index].size();
-        int32_t outLength;
-        rv = mDecoder->GetMaxLength(suggestions[index].c_str(), inLength, &outLength);
-        if (NS_SUCCEEDED(rv))
-        {
-          (*aSuggestions)[index] = (char16_t *) moz_xmalloc(sizeof(char16_t) * (outLength+1));
-          if ((*aSuggestions)[index])
-          {
-            rv = mDecoder->Convert(suggestions[index].c_str(), &inLength, (*aSuggestions)[index], &outLength);
-            if (NS_SUCCEEDED(rv))
-              (*aSuggestions)[index][outLength] = 0;
-          }
-          else
-            rv = NS_ERROR_OUT_OF_MEMORY;
+        Span<const char> charSrc(suggestions[index]);
+        auto src = AsBytes(charSrc);
+        CheckedInt<size_t> needed =
+          mDecoder->MaxUTF16BufferLength(src.Length());
+        if (!needed.isValid()) {
+          rv = NS_ERROR_OUT_OF_MEMORY;
+          break;
+        }
+        size_t dstLen = needed.value();
+        needed += 1;
+        needed *= sizeof(char16_t);
+        if (!needed.isValid()) {
+          rv = NS_ERROR_OUT_OF_MEMORY;
+          break;
         }
+        (*aSuggestions)[index] = (char16_t*)moz_xmalloc(needed.value());
+        if (!((*aSuggestions)[index])) {
+          rv = NS_ERROR_OUT_OF_MEMORY;
+          break;
+        }
+        auto dst = MakeSpan((*aSuggestions)[index], dstLen);
+        uint32_t result;
+        size_t read;
+        size_t written;
+        bool hadErrors;
+        Tie(result, read, written, hadErrors) =
+          mDecoder->DecodeToUTF16(src, dst, true);
+        MOZ_ASSERT(result == kInputEmpty);
+        MOZ_ASSERT(read == src.Length());
+        MOZ_ASSERT(written <= dstLen);
+        Unused << hadErrors;
+        (*aSuggestions)[index][written] = 0;
+        mDecoder->Encoding()->NewDecoderWithoutBOMHandlingInto(*mDecoder);
       }
 
       if (NS_FAILED(rv))
         NS_FREE_XPCOM_ALLOCATED_POINTER_ARRAY(index, *aSuggestions); // free the char16_t strings up to the point at which the error occurred
     }
     else // if (*aSuggestions)
       rv = NS_ERROR_OUT_OF_MEMORY;
   }
--- a/extensions/spellcheck/hunspell/glue/mozHunspell.h
+++ b/extensions/spellcheck/hunspell/glue/mozHunspell.h
@@ -63,18 +63,17 @@
 #include <hunspell.hxx>
 #include "mozISpellCheckingEngine.h"
 #include "mozIPersonalDictionary.h"
 #include "nsString.h"
 #include "nsCOMPtr.h"
 #include "nsCOMArray.h"
 #include "nsIMemoryReporter.h"
 #include "nsIObserver.h"
-#include "nsIUnicodeEncoder.h"
-#include "nsIUnicodeDecoder.h"
+#include "mozilla/Encoding.h"
 #include "nsInterfaceHashtable.h"
 #include "nsWeakReference.h"
 #include "nsCycleCollectionParticipant.h"
 #include "mozHunspellAllocator.h"
 
 #define MOZ_HUNSPELL_CONTRACTID "@mozilla.org/spellchecker/engine;1"
 #define MOZ_HUNSPELL_CID         \
 /* 56c778e4-1bee-45f3-a689-886692a97fe7 */   \
@@ -102,18 +101,18 @@ public:
   nsresult ConvertCharset(const char16_t* aStr, std::string* aDst);
 
   NS_DECL_NSIMEMORYREPORTER
 
 protected:
   virtual ~mozHunspell();
 
   nsCOMPtr<mozIPersonalDictionary> mPersonalDictionary;
-  nsCOMPtr<nsIUnicodeEncoder>      mEncoder;
-  nsCOMPtr<nsIUnicodeDecoder>      mDecoder;
+  mozilla::UniquePtr<mozilla::Encoder> mEncoder;
+  mozilla::UniquePtr<mozilla::Decoder> mDecoder;
 
   // Hashtable matches dictionary name to .aff file
   nsInterfaceHashtable<nsStringHashKey, nsIFile> mDictionaries;
   nsString  mDictionary;
   nsString  mLanguage;
   nsCString mAffixFileName;
 
   // dynamic dirs used to search for dictionaries
--- a/extensions/spellcheck/hunspell/src/csutil.cxx
+++ b/extensions/spellcheck/hunspell/src/csutil.cxx
@@ -97,22 +97,20 @@ struct unicode_info {
 #ifndef MOZILLA_CLIENT
 #include "utf_info.cxx"
 #define UTF_LST_LEN (sizeof(utf_lst) / (sizeof(unicode_info)))
 #endif
 #endif
 
 #ifdef MOZILLA_CLIENT
 #include "nsCOMPtr.h"
-#include "nsIUnicodeEncoder.h"
-#include "nsIUnicodeDecoder.h"
 #include "nsUnicharUtils.h"
-#include "mozilla/dom/EncodingUtils.h"
+#include "mozilla/Encoding.h"
 
-using mozilla::dom::EncodingUtils;
+using namespace mozilla;
 #endif
 
 struct unicode_info2 {
   char cletter;
   unsigned short cupper;
   unsigned short clower;
 };
 
@@ -2301,67 +2299,73 @@ struct cs_info* get_current_cs(const std
   // Initialze the array with dummy data so that we wouldn't need
   // to return null in case of failures.
   for (int i = 0; i <= 0xff; ++i) {
     ccs[i].ccase = false;
     ccs[i].clower = i;
     ccs[i].cupper = i;
   }
 
-  nsCOMPtr<nsIUnicodeEncoder> encoder;
-  nsCOMPtr<nsIUnicodeDecoder> decoder;
-
-  nsresult rv;
-
-  nsAutoCString label(es.c_str());
-  nsAutoCString encoding;
-  if (!EncodingUtils::FindEncodingForLabelNoReplacement(label, encoding)) {
+  auto encoding = Encoding::ForLabelNoReplacement(es);
+  if (!encoding) {
     return ccs;
   }
-  encoder = EncodingUtils::EncoderForEncoding(encoding);
-  decoder = EncodingUtils::DecoderForEncoding(encoding);
-  encoder->SetOutputErrorBehavior(encoder->kOnError_Signal, nullptr, '?');
-  decoder->SetInputErrorBehavior(decoder->kOnError_Signal);
+  auto encoder = encoding->NewEncoder();
+  auto decoder = encoding->NewDecoderWithoutBOMHandling();
 
   for (unsigned int i = 0; i <= 0xff; ++i) {
     bool success = false;
     // We want to find the upper/lowercase equivalents of each byte
     // in this 1-byte character encoding.  Call our encoding/decoding
     // APIs separately for each byte since they may reject some of the
     // bytes, and we want to handle errors separately for each byte.
-    char lower, upper;
+    uint8_t lower, upper;
     do {
       if (i == 0)
         break;
-      const char source = char(i);
-      char16_t uni, uniCased;
-      int32_t charLength = 1, uniLength = 1;
+      uint8_t source = uint8_t(i);
+      char16_t uni[2];
+      char16_t uniCased;
+      uint8_t destination[4];
+      auto src1 = MakeSpan(&source, 1);
+      auto dst1 = MakeSpan(uni);
+      auto src2 = MakeSpan(&uniCased, 1);
+      auto dst2 = MakeSpan(destination);
 
-      rv = decoder->Convert(&source, &charLength, &uni, &uniLength);
-      // Explicitly check NS_OK because we don't want to allow
-      // NS_OK_UDEC_MOREOUTPUT or NS_OK_UDEC_MOREINPUT.
-      if (rv != NS_OK || charLength != 1 || uniLength != 1)
+      uint32_t result;
+      size_t read;
+      size_t written;
+      Tie(result, read, written) =
+        decoder->DecodeToUTF16WithoutReplacement(src1, dst1, true);
+      if (result != kInputEmpty || read != 1 || written != 1) {
         break;
-      uniCased = ToLowerCase(uni);
-      rv = encoder->Convert(&uniCased, &uniLength, &lower, &charLength);
-      // Explicitly check NS_OK because we don't want to allow
-      // NS_OK_UDEC_MOREOUTPUT or NS_OK_UDEC_MOREINPUT.
-      if (rv != NS_OK || charLength != 1 || uniLength != 1)
-        break;
+      }
 
-      uniCased = ToUpperCase(uni);
-      rv = encoder->Convert(&uniCased, &uniLength, &upper, &charLength);
-      // Explicitly check NS_OK because we don't want to allow
-      // NS_OK_UDEC_MOREOUTPUT or NS_OK_UDEC_MOREINPUT.
-      if (rv != NS_OK || charLength != 1 || uniLength != 1)
+      uniCased = ToLowerCase(uni[0]);
+      Tie(result, read, written) =
+        encoder->EncodeFromUTF16WithoutReplacement(src2, dst2, true);
+      if (result != kInputEmpty || read != 1 || written != 1) {
         break;
+      }
+      lower = destination[0];
+
+      uniCased = ToUpperCase(uni[0]);
+      Tie(result, read, written) =
+        encoder->EncodeFromUTF16WithoutReplacement(src2, dst2, true);
+      if (result != kInputEmpty || read != 1 || written != 1) {
+        break;
+      }
+      upper = destination[0];
 
       success = true;
     } while (0);
 
+    encoding->NewEncoderInto(*encoder);
+    encoding->NewDecoderWithoutBOMHandlingInto(*decoder);
+
     if (success) {
       ccs[i].cupper = upper;
       ccs[i].clower = lower;
     } else {
       ccs[i].cupper = i;
       ccs[i].clower = i;
     }
 
--- a/extensions/spellcheck/src/mozEnglishWordUtils.h
+++ b/extensions/spellcheck/src/mozEnglishWordUtils.h
@@ -3,35 +3,37 @@
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 #ifndef mozEnglishWordUtils_h__
 #define mozEnglishWordUtils_h__
 
 #include "nsCOMPtr.h"
 #include "mozISpellI18NUtil.h"
-#include "nsIUnicodeEncoder.h"
-#include "nsIUnicodeDecoder.h"
 #include "nsString.h"
 
-#include "mozITXTToHTMLConv.h" 
+#include "mozITXTToHTMLConv.h"
 #include "nsCycleCollectionParticipant.h"
 
 class mozEnglishWordUtils : public mozISpellI18NUtil
 {
 public:
   NS_DECL_CYCLE_COLLECTING_ISUPPORTS
   NS_DECL_MOZISPELLI18NUTIL
   NS_DECL_CYCLE_COLLECTION_CLASS(mozEnglishWordUtils)
 
   mozEnglishWordUtils();
   /* additional members */
-  enum myspCapitalization{
-    NoCap,InitCap,AllCap,HuhCap
-  };  
+  enum myspCapitalization
+  {
+    NoCap,
+    InitCap,
+    AllCap,
+    HuhCap
+  };
 
 protected:
   virtual ~mozEnglishWordUtils();
 
   mozEnglishWordUtils::myspCapitalization captype(const nsString &word);
   bool ucIsAlpha(char16_t aChar);
 
   nsString mLanguage;
--- a/extensions/spellcheck/src/mozPersonalDictionary.cpp
+++ b/extensions/spellcheck/src/mozPersonalDictionary.cpp
@@ -35,42 +35,39 @@
  *  and probably should, but I don't see much need for more in terms of interface.
  *
  * Allowing personal words to be associated with only certain dictionaries maybe.
  *
  * TODO:
  * Implement the suggestion record.
  */
 
-NS_IMPL_CYCLE_COLLECTING_ADDREF(mozPersonalDictionary)
-NS_IMPL_CYCLE_COLLECTING_RELEASE(mozPersonalDictionary)
+NS_IMPL_ADDREF(mozPersonalDictionary)
+NS_IMPL_RELEASE(mozPersonalDictionary)
 
 NS_INTERFACE_MAP_BEGIN(mozPersonalDictionary)
   NS_INTERFACE_MAP_ENTRY(mozIPersonalDictionary)
   NS_INTERFACE_MAP_ENTRY(nsIObserver)
   NS_INTERFACE_MAP_ENTRY(nsISupportsWeakReference)
   NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(nsISupports, mozIPersonalDictionary)
-  NS_INTERFACE_MAP_ENTRIES_CYCLE_COLLECTION(mozPersonalDictionary)
 NS_INTERFACE_MAP_END
 
-NS_IMPL_CYCLE_COLLECTION(mozPersonalDictionary, mEncoder)
-
 class mozPersonalDictionaryLoader final : public mozilla::Runnable
 {
 public:
   explicit mozPersonalDictionaryLoader(mozPersonalDictionary *dict) : mDict(dict)
   {
   }
 
   NS_IMETHOD Run() override
   {
     mDict->SyncLoad();
 
     // Release the dictionary on the main thread
-    NS_ReleaseOnMainThread(mDict.forget());
+    NS_ReleaseOnMainThread(mDict.forget().downcast<mozIPersonalDictionary>());
 
     return NS_OK;
   }
 
 private:
   RefPtr<mozPersonalDictionary> mDict;
 };
 
@@ -131,17 +128,17 @@ public:
       mDict->mSavePending = false;
       mon.Notify();
 
       // Leaving the block where 'mon' was declared will call the destructor
       // and unlock.
     }
 
     // Release the dictionary on the main thread.
-    NS_ReleaseOnMainThread(mDict.forget());
+    NS_ReleaseOnMainThread(mDict.forget().downcast<mozIPersonalDictionary>());
 
     return NS_OK;
   }
 
 private:
   nsTArray<nsString> mDictWords;
   nsCOMPtr<nsIFile> mFile;
   RefPtr<mozPersonalDictionary> mDict;
--- a/extensions/spellcheck/src/mozPersonalDictionary.h
+++ b/extensions/spellcheck/src/mozPersonalDictionary.h
@@ -4,17 +4,16 @@
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 #ifndef mozPersonalDictionary_h__
 #define mozPersonalDictionary_h__
 
 #include "nsCOMPtr.h"
 #include "nsString.h"
 #include "mozIPersonalDictionary.h"
-#include "nsIUnicodeEncoder.h"
 #include "nsIObserver.h"
 #include "nsWeakReference.h"
 #include "nsTHashtable.h"
 #include "nsCRT.h"
 #include "nsCycleCollectionParticipant.h"
 #include "nsHashKeys.h"
 #include <mozilla/Monitor.h>
 
@@ -27,20 +26,19 @@ 0X7EF52EAF, 0XB7E1, 0X462B, \
 class mozPersonalDictionaryLoader;
 class mozPersonalDictionarySave;
 
 class mozPersonalDictionary final : public mozIPersonalDictionary,
                                     public nsIObserver,
                                     public nsSupportsWeakReference
 {
 public:
-  NS_DECL_CYCLE_COLLECTING_ISUPPORTS
+  NS_DECL_ISUPPORTS
   NS_DECL_MOZIPERSONALDICTIONARY
   NS_DECL_NSIOBSERVER
-  NS_DECL_CYCLE_COLLECTION_CLASS_AMBIGUOUS(mozPersonalDictionary, mozIPersonalDictionary)
 
   mozPersonalDictionary();
 
   nsresult Init();
 
 protected:
   virtual ~mozPersonalDictionary();
 
@@ -51,19 +49,16 @@ protected:
   bool mSavePending;
 
   nsCOMPtr<nsIFile> mFile;
   mozilla::Monitor mMonitor;
   mozilla::Monitor mMonitorSave;
   nsTHashtable<nsUnicharPtrHashKey> mDictionaryTable;
   nsTHashtable<nsUnicharPtrHashKey> mIgnoreTable;
 
-  /*Encoder to use to compare with spellchecker word */
-  nsCOMPtr<nsIUnicodeEncoder>  mEncoder;
-
 private:
   /* wait for the asynchronous load of the dictionary to be completed */
   void WaitForLoad();
 
   /* enter the monitor before starting a synchronous load off the main-thread */
   void SyncLoad();
 
   /* launch an asynchrounous load of the dictionary from the main-thread
--- a/gfx/thebes/gfxFontUtils.cpp
+++ b/gfx/thebes/gfxFontUtils.cpp
@@ -13,17 +13,17 @@
 #include "mozilla/dom/EncodingUtils.h"
 #include "mozilla/Preferences.h"
 #include "mozilla/Services.h"
 #include "mozilla/BinarySearch.h"
 #include "mozilla/Sprintf.h"
 
 #include "nsCOMPtr.h"
 #include "nsIUUIDGenerator.h"
-#include "nsIUnicodeDecoder.h"
+#include "mozilla/Encoding.h"
 
 #include "harfbuzz/hb.h"
 
 #include "plbase64.h"
 #include "mozilla/Logging.h"
 
 #ifdef XP_MACOSX
 #include <CoreFoundation/CoreFoundation.h>
@@ -1433,16 +1433,26 @@ gfxFontUtils::GetCharsetForFontName(uint
             return gMSFontNameCharsets[aScript];
         }
         break;
     }
 
     return nullptr;
 }
 
+template<int N>
+static bool
+StartsWith(const nsACString& string, const char (&prefix)[N])
+{
+  if (N - 1 > string.Length()) {
+    return false;
+  }
+  return memcmp(string.Data(), prefix, N - 1) == 0;
+}
+
 // convert a raw name from the name table to an nsString, if possible;
 // return value indicates whether conversion succeeded
 bool
 gfxFontUtils::DecodeFontName(const char *aNameData, int32_t aByteLen, 
                              uint32_t aPlatformCode, uint32_t aScriptCode,
                              uint32_t aLangCode, nsAString& aName)
 {
     if (aByteLen <= 0) {
@@ -1474,22 +1484,22 @@ gfxFontUtils::DecodeFontName(const char 
         CopySwapUTF16(aNameData, reinterpret_cast<char*>(aName.BeginWriting()),
                       strLen);
 #else
         memcpy(aName.BeginWriting(), aNameData, strLen * 2);
 #endif
         return true;
     }
 
-    nsCOMPtr<nsIUnicodeDecoder> decoder =
-        mozilla::dom::EncodingUtils::DecoderForEncoding(csName);
-    if (!decoder) {
+    nsDependentCString encodingName(csName);
+    if (StartsWith(encodingName, "x-mac-") &&
+        !encodingName.EqualsLiteral("x-mac-cyrillic")) {
 #ifdef XP_MACOSX
         // Special case for macOS only: support legacy Mac encodings
-        // that DecoderForEncoding didn't handle.
+        // that aren't part of the Encoding Standard.
         if (aPlatformCode == PLATFORM_ID_MAC) {
             CFStringRef str =
                 CFStringCreateWithBytes(kCFAllocatorDefault,
                                         (const UInt8*)aNameData, aByteLen,
                                         aScriptCode, false);
             if (str) {
                 CFIndex length = CFStringGetLength(str);
                 aName.SetLength(length);
@@ -1499,34 +1509,20 @@ gfxFontUtils::DecodeFontName(const char 
                 return true;
             }
         }
 #endif
         NS_WARNING("failed to get the decoder for a font name string");
         return false;
     }
 
-    int32_t destLength;
-    nsresult rv = decoder->GetMaxLength(aNameData, aByteLen, &destLength);
-    if (NS_FAILED(rv)) {
-        NS_WARNING("decoder->GetMaxLength failed, invalid font name?");
-        return false;
-    }
-
-    // make space for the converted string
-    aName.SetLength(destLength);
-    rv = decoder->Convert(aNameData, &aByteLen,
-                          aName.BeginWriting(), &destLength);
-    if (NS_FAILED(rv)) {
-        NS_WARNING("decoder->Convert failed, invalid font name?");
-        return false;
-    }
-    aName.Truncate(destLength); // set the actual length
-
-    return true;
+    auto encoding = Encoding::ForName(encodingName);
+    auto rv = encoding->DecodeWithoutBOMHandling(
+      AsBytes(MakeSpan(aNameData, aByteLen)), aName);
+    return NS_SUCCEEDED(rv);
 }
 
 nsresult
 gfxFontUtils::ReadNames(const char *aNameData, uint32_t aDataLen,
                         uint32_t aNameID,
                         int32_t aLangID, int32_t aPlatformID,
                         nsTArray<nsString>& aNames)
 {
new file mode 100644
--- /dev/null
+++ b/intl/Encoding.h
@@ -0,0 +1,1390 @@
+// Copyright 2015-2016 Mozilla Foundation. See the COPYRIGHT
+// file at the top-level directory of this distribution.
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// https://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or https://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+// Adapted from third_party/rust/encoding_c/include/encoding_rs_cpp.h, so the
+// "top-level directory" in the above notice refers to
+// third_party/rust/encoding_c/.
+
+#ifndef mozilla_Encoding_h
+#define mozilla_Encoding_h
+
+#include "mozilla/CheckedInt.h"
+#include "mozilla/NotNull.h"
+#include "mozilla/Span.h"
+#include "mozilla/Tuple.h"
+#include "nsString.h"
+
+namespace mozilla {
+class Encoding;
+class Decoder;
+class Encoder;
+}; // namespace mozilla
+
+#define ENCODING_RS_ENCODING mozilla::Encoding
+#define ENCODING_RS_ENCODER mozilla::Encoder
+#define ENCODING_RS_DECODER mozilla::Decoder
+
+#include "encoding_rs.h"
+
+extern "C" {
+
+nsresult
+mozilla_encoding_decode_to_nsstring(mozilla::Encoding const** encoding,
+                                    uint8_t const* src,
+                                    size_t src_len,
+                                    nsAString* dst);
+
+nsresult
+mozilla_encoding_decode_to_nsstring_with_bom_removal(
+  mozilla::Encoding const* encoding,
+  uint8_t const* src,
+  size_t src_len,
+  nsAString* dst);
+
+nsresult
+mozilla_encoding_decode_to_nsstring_without_bom_handling(
+  mozilla::Encoding const* encoding,
+  uint8_t const* src,
+  size_t src_len,
+  nsAString* dst);
+
+nsresult
+mozilla_encoding_decode_to_nsstring_without_bom_handling_and_without_replacement(
+  mozilla::Encoding const* encoding,
+  uint8_t const* src,
+  size_t src_len,
+  nsAString* dst);
+
+nsresult
+mozilla_encoding_encode_from_utf16(mozilla::Encoding const** encoding,
+                                   char16_t const* src,
+                                   size_t src_len,
+                                   nsACString* dst);
+
+nsresult
+mozilla_encoding_decode_to_nscstring(mozilla::Encoding const** encoding,
+                                     nsACString const* src,
+                                     nsACString* dst);
+
+nsresult
+mozilla_encoding_decode_to_nscstring_with_bom_removal(
+  mozilla::Encoding const* encoding,
+  nsACString const* src,
+  nsACString* dst);
+
+nsresult
+mozilla_encoding_decode_to_nscstring_without_bom_handling(
+  mozilla::Encoding const* encoding,
+  nsACString const* src,
+  nsACString* dst);
+
+nsresult
+mozilla_encoding_decode_to_nscstring_without_bom_handling_and_without_replacement(
+  mozilla::Encoding const* encoding,
+  nsACString const* src,
+  nsACString* dst);
+
+nsresult
+mozilla_encoding_encode_from_nscstring(mozilla::Encoding const** encoding,
+                                       nsACString const* src,
+                                       nsACString* dst);
+
+} // extern "C"
+
+namespace mozilla {
+
+/**
+ * Return value from `Decoder`/`Encoder` to indicate that input
+ * was exhausted.
+ */
+const uint32_t kInputEmpty = INPUT_EMPTY;
+
+/**
+ * Return value from `Decoder`/`Encoder` to indicate that output
+ * space was insufficient.
+ */
+const uint32_t kOutputFull = OUTPUT_FULL;
+
+/**
+ * An encoding as defined in the Encoding Standard
+ * (https://encoding.spec.whatwg.org/).
+ *
+ * See https://docs.rs/encoding_rs/ for the Rust API docs.
+ *
+ * An _encoding_ defines a mapping from a byte sequence to a Unicode code point
+ * sequence and, in most cases, vice versa. Each encoding has a name, an output
+ * encoding, and one or more labels.
+ *
+ * _Labels_ are ASCII-case-insensitive strings that are used to identify an
+ * encoding in formats and protocols. The _name_ of the encoding is the
+ * preferred label in the case appropriate for returning from the
+ * `characterSet` property of the `Document` DOM interface, except for
+ * the replacement encoding whose name is not one of its labels.
+ *
+ * The _output encoding_ is the encoding used for form submission and URL
+ * parsing on Web pages in the encoding. This is UTF-8 for the replacement,
+ * UTF-16LE and UTF-16BE encodings and the encoding itself for other
+ * encodings.
+ *
+ * # Streaming vs. Non-Streaming
+ *
+ * When you have the entire input in a single buffer, you can use the
+ * methods `Decode()`, `DecodeWithBOMRemoval()`,
+ * `DecodeWithoutBOMHandling()`,
+ * `DecodeWithoutBOMHandlingAndWithoutReplacement()` and
+ * `Encode()`. Unlike the rest of the API (apart from the `NewDecoder()` and
+ * NewEncoder()` methods), these methods perform heap allocations. You should
+ * the `Decoder` and `Encoder` objects when your input is split into multiple
+ * buffers or when you want to control the allocation of the output buffers.
+ *
+ * # Instances
+ *
+ * All instances of `Encoding` are statically allocated and have the process's
+ * lifetime. There is precisely one unique `Encoding` instance for each
+ * encoding defined in the Encoding Standard.
+ *
+ * To obtain a reference to a particular encoding whose identity you know at
+ * compile time, use a `static` that refers to encoding. There is a `static`
+ * for each encoding. The `static`s are named in all caps with hyphens
+ * replaced with underscores and with `_ENCODING` appended to the
+ * name. For example, if you know at compile time that you will want to
+ * decode using the UTF-8 encoding, use the `UTF_8_ENCODING` `static`.
+ *
+ * If you don't know what encoding you need at compile time and need to
+ * dynamically get an encoding by label, use `Encoding::for_label()`.
+ *
+ * Pointers to `Encoding` can be compared with `==` to check for the sameness
+ * of two encodings.
+ *
+ * A pointer to a `mozilla::Encoding` in C++ is the same thing as a pointer
+ * to an `encoding_rs::Encoding` in Rust. When writing FFI code, use
+ * `const mozilla::Encoding*` in the C signature and
+ * `*const encoding_rs::Encoding` is the corresponding Rust signature.
+ */
+class Encoding final
+{
+public:
+  /**
+   * Implements the _get an encoding_ algorithm
+   * (https://encoding.spec.whatwg.org/#concept-encoding-get).
+   *
+   * If, after ASCII-lowercasing and removing leading and trailing
+   * whitespace, the argument matches a label defined in the Encoding
+   * Standard, `const Encoding*` representing the corresponding
+   * encoding is returned. If there is no match, `nullptr` is returned.
+   *
+   * This is the right method to use if the action upon the method returning
+   * `nullptr` is to use a fallback encoding (e.g. `WINDOWS_1252_ENCODING`)
+   * instead. When the action upon the method returning `nullptr` is not to
+   * proceed with a fallback but to refuse processing,
+   * `ForLabelNoReplacement()` is more appropriate.
+  */
+  static inline const Encoding* ForLabel(Span<const char> aLabel)
+  {
+    return encoding_for_label(
+      reinterpret_cast<const uint8_t*>(aLabel.Elements()), aLabel.Length());
+  }
+
+  /**
+   * `nsAString` argument version. See above for docs.
+   */
+  static inline const Encoding* ForLabel(const nsAString& aLabel)
+  {
+    return Encoding::ForLabel(NS_ConvertUTF16toUTF8(aLabel));
+  }
+
+  /**
+   * This method behaves the same as `ForLabel()`, except when `ForLabel()`
+   * would return `REPLACEMENT_ENCODING`, this method returns `nullptr` instead.
+   *
+   * This method is useful in scenarios where a fatal error is required
+   * upon invalid label, because in those cases the caller typically wishes
+   * to treat the labels that map to the replacement encoding as fatal
+   * errors, too.
+   *
+   * It is not OK to use this method when the action upon the method returning
+   * `nullptr` is to use a fallback encoding (e.g. `WINDOWS_1252_ENCODING`). In
+   * such a case, the `ForLabel()` method should be used instead in order to avoid
+   * unsafe fallback for labels that `ForLabel()` maps to `REPLACEMENT_ENCODING`.
+   */
+  static inline const Encoding* ForLabelNoReplacement(Span<const char> aLabel)
+  {
+    return encoding_for_label_no_replacement(
+      reinterpret_cast<const uint8_t*>(aLabel.Elements()), aLabel.Length());
+  }
+
+  /**
+   * `nsAString` argument version. See above for docs.
+   */
+  static inline const Encoding* ForLabelNoReplacement(const nsAString& aLabel)
+  {
+    return Encoding::ForLabelNoReplacement(NS_ConvertUTF16toUTF8(aLabel));
+  }
+
+  /**
+   * Performs non-incremental BOM sniffing.
+   *
+   * The argument must either be a buffer representing the entire input
+   * stream (non-streaming case) or a buffer representing at least the first
+   * three bytes of the input stream (streaming case).
+   *
+   * Returns `MakeTuple(UTF_8_ENCODING, 3)`, `MakeTuple(UTF_16LE_ENCODING, 2)`
+   * or `MakeTuple(UTF_16BE_ENCODING, 3)` if the argument starts with the
+   * UTF-8, UTF-16LE or UTF-16BE BOM or `MakeTuple(nullptr, 0)` otherwise.
+   */
+  static inline Tuple<const Encoding*, size_t> ForBOM(
+    Span<const uint8_t> aBuffer)
+  {
+    size_t len = aBuffer.Length();
+    const Encoding* encoding = encoding_for_bom(aBuffer.Elements(), &len);
+    return MakeTuple(encoding, len);
+  }
+
+  /**
+   * If the argument matches exactly (case-sensitively; no whitespace
+   * removal performed) the name of an encoding, returns
+   * `const Encoding*` representing that encoding. Otherwise `MOZ_CRASH`es.
+   *
+   * The motivating use case for this method is interoperability with
+   * legacy Gecko code that represents encodings as name string instead of
+   * type-safe `Encoding` objects. Using this method for other purposes is
+   * most likely the wrong thing to do.
+   */
+  static inline NotNull<const mozilla::Encoding*> ForName(
+    Span<const char> aName)
+  {
+    return WrapNotNull(encoding_for_name(
+      reinterpret_cast<const uint8_t*>(aName.Elements()), aName.Length()));
+  }
+
+  /**
+   * Writes the name of this encoding into `aName`.
+   *
+   * This name is appropriate to return as-is from the DOM
+   * `document.characterSet` property.
+   */
+  inline void Name(nsACString& aName) const
+  {
+    aName.SetLength(ENCODING_NAME_MAX_LENGTH);
+    size_t length =
+      encoding_name(this, reinterpret_cast<uint8_t*>(aName.BeginWriting()));
+    aName.SetLength(length); // truncation is the 64-bit case is OK
+  }
+
+  /**
+   * Checks whether the _output encoding_ of this encoding can encode every
+   * Unicode code point. (Only true if the output encoding is UTF-8.)
+   */
+  inline bool CanEncodeEverything() const
+  {
+    return encoding_can_encode_everything(this);
+  }
+
+  /**
+   * Checks whether the bytes 0x00...0x7F map exclusively to the characters
+   * U+0000...U+007F and vice versa.
+   */
+  inline bool IsAsciiCompatible() const
+  {
+    return encoding_is_ascii_compatible(this);
+  }
+
+  /**
+   * Returns the _output encoding_ of this encoding. This is UTF-8 for
+   * UTF-16BE, UTF-16LE and replacement and the encoding itself otherwise.
+   */
+  inline NotNull<const mozilla::Encoding*> OutputEncoding() const
+  {
+    return WrapNotNull(encoding_output_encoding(this));
+  }
+
+  /**
+   * Decode complete input to `nsACString` _with BOM sniffing_ and with
+   * malformed sequences replaced with the REPLACEMENT CHARACTER when the
+   * entire input is available as a single buffer (i.e. the end of the
+   * buffer marks the end of the stream).
+   *
+   * This method implements the (non-streaming version of) the
+   * _decode_ (https://encoding.spec.whatwg.org/#decode) spec concept.
+   *
+   * The second item in the returned tuple is the encoding that was actually
+   * used (which may differ from this encoding thanks to BOM sniffing).
+   *
+   * Returns `NS_ERROR_OUT_OF_MEMORY` upon OOM, `NS_OK_HAD_REPLACEMENTS`
+   * if there were malformed sequences (that were replaced with the
+   * REPLACEMENT CHARACTER) and `NS_OK` otherwise as the first item of the
+   * tuple.
+   *
+   * The backing buffer of the string isn't copied if the input buffer
+   * is heap-allocated and decoding from UTF-8 and the input is valid
+   * BOMless UTF-8, decoding from an ASCII-compatible encoding and
+   * the input is valid ASCII or decoding from ISO-2022-JP and the
+   * input stays in the ASCII state of ISO-2022-JP. It is OK to pass
+   * the same string as both arguments.
+   *
+   * _Note:_ It is wrong to use this when the input buffer represents only
+   * a segment of the input instead of the whole input. Use `NewDecoder()`
+   * when decoding segmented input.
+   */
+  inline Tuple<nsresult, NotNull<const mozilla::Encoding*>> Decode(
+    const nsACString& aBytes,
+    nsACString& aOut) const
+  {
+    const Encoding* encoding = this;
+    const nsACString* bytes = &aBytes;
+    nsACString* out = &aOut;
+    nsresult rv;
+    if (bytes == out) {
+      nsAutoCString temp(aBytes);
+      rv = mozilla_encoding_decode_to_nscstring(&encoding, &temp, out);
+    } else {
+      rv = mozilla_encoding_decode_to_nscstring(&encoding, bytes, out);
+    }
+    return MakeTuple(rv, WrapNotNull(encoding));
+  }
+
+  /**
+   * Decode complete input to `nsAString` _with BOM sniffing_ and with
+   * malformed sequences replaced with the REPLACEMENT CHARACTER when the
+   * entire input is available as a single buffer (i.e. the end of the
+   * buffer marks the end of the stream).
+   *
+   * This method implements the (non-streaming version of) the
+   * _decode_ (https://encoding.spec.whatwg.org/#decode) spec concept.
+   *
+   * The second item in the returned tuple is the encoding that was actually
+   * used (which may differ from this encoding thanks to BOM sniffing).
+   *
+   * Returns `NS_ERROR_OUT_OF_MEMORY` upon OOM, `NS_OK_HAD_REPLACEMENTS`
+   * if there were malformed sequences (that were replaced with the
+   * REPLACEMENT CHARACTER) and `NS_OK` otherwise as the first item of the
+   * tuple.
+   *
+   * _Note:_ It is wrong to use this when the input buffer represents only
+   * a segment of the input instead of the whole input. Use `NewDecoder()`
+   * when decoding segmented input.
+   */
+  inline Tuple<nsresult, NotNull<const mozilla::Encoding*>> Decode(
+    Span<const uint8_t> aBytes,
+    nsAString& aOut) const
+  {
+    const Encoding* encoding = this;
+    nsresult rv = mozilla_encoding_decode_to_nsstring(
+      &encoding, aBytes.Elements(), aBytes.Length(), &aOut);
+    return MakeTuple(rv, WrapNotNull(encoding));
+  }
+
+  /**
+   * Decode complete input to `nsACString` _with BOM removal_ and with
+   * malformed sequences replaced with the REPLACEMENT CHARACTER when the
+   * entire input is available as a single buffer (i.e. the end of the
+   * buffer marks the end of the stream).
+   *
+   * When invoked on `UTF_8`, this method implements the (non-streaming
+   * version of) the _UTF-8 decode_
+   * (https://encoding.spec.whatwg.org/#utf-8-decode) spec concept.
+   *
+   * Returns `NS_ERROR_OUT_OF_MEMORY` upon OOM, `NS_OK_HAD_REPLACEMENTS`
+   * if there were malformed sequences (that were replaced with the
+   * REPLACEMENT CHARACTER) and `NS_OK` otherwise.
+   *
+   * The backing buffer of the string isn't copied if the input buffer
+   * is heap-allocated and decoding from UTF-8 and the input is valid
+   * BOMless UTF-8, decoding from an ASCII-compatible encoding and
+   * the input is valid ASCII or decoding from ISO-2022-JP and the
+   * input stays in the ASCII state of ISO-2022-JP. It is OK to pass
+   * the same string as both arguments.
+   *
+   * _Note:_ It is wrong to use this when the input buffer represents only
+   * a segment of the input instead of the whole input. Use
+   * `NewDecoderWithBOMRemoval()` when decoding segmented input.
+   */
+  inline nsresult DecodeWithBOMRemoval(const nsACString& aBytes,
+                                       nsACString& aOut) const
+  {
+    const nsACString* bytes = &aBytes;
+    nsACString* out = &aOut;
+    if (bytes == out) {
+      nsAutoCString temp(aBytes);
+      return mozilla_encoding_decode_to_nscstring_with_bom_removal(
+        this, &temp, out);
+    }
+    return mozilla_encoding_decode_to_nscstring_with_bom_removal(
+      this, bytes, out);
+  }
+
+  /**
+   * Decode complete input to `nsAString` _with BOM removal_ and with
+   * malformed sequences replaced with the REPLACEMENT CHARACTER when the
+   * entire input is available as a single buffer (i.e. the end of the
+   * buffer marks the end of the stream).
+   *
+   * When invoked on `UTF_8`, this method implements the (non-streaming
+   * version of) the _UTF-8 decode_
+   * (https://encoding.spec.whatwg.org/#utf-8-decode) spec concept.
+   *
+   * Returns `NS_ERROR_OUT_OF_MEMORY` upon OOM, `NS_OK_HAD_REPLACEMENTS`
+   * if there were malformed sequences (that were replaced with the
+   * REPLACEMENT CHARACTER) and `NS_OK` otherwise.
+   *
+   * _Note:_ It is wrong to use this when the input buffer represents only
+   * a segment of the input instead of the whole input. Use
+   * `NewDecoderWithBOMRemoval()` when decoding segmented input.
+   */
+  inline nsresult DecodeWithBOMRemoval(Span<const uint8_t> aBytes,
+                                       nsAString& aOut) const
+  {
+    return mozilla_encoding_decode_to_nsstring_with_bom_removal(
+      this, aBytes.Elements(), aBytes.Length(), &aOut);
+  }
+
+  /**
+   * Decode complete input to `nsACString` _without BOM handling_ and
+   * with malformed sequences replaced with the REPLACEMENT CHARACTER when
+   * the entire input is available as a single buffer (i.e. the end of the
+   * buffer marks the end of the stream).
+   *
+   * When invoked on `UTF_8`, this method implements the (non-streaming
+   * version of) the _UTF-8 decode without BOM_
+   * (https://encoding.spec.whatwg.org/#utf-8-decode-without-bom) spec concept.
+   *
+   * Returns `NS_ERROR_OUT_OF_MEMORY` upon OOM, `NS_OK_HAD_REPLACEMENTS`
+   * if there were malformed sequences (that were replaced with the
+   * REPLACEMENT CHARACTER) and `NS_OK` otherwise.
+   *
+   * The backing buffer of the string isn't copied if the input buffer
+   * is heap-allocated and decoding from UTF-8 and the input is valid
+   * UTF-8, decoding from an ASCII-compatible encoding and the input
+   * is valid ASCII or decoding from ISO-2022-JP and the input stays
+   * in the ASCII state of ISO-2022-JP. It is OK to pass the same string
+   * as both arguments.
+   *
+   * _Note:_ It is wrong to use this when the input buffer represents only
+   * a segment of the input instead of the whole input. Use
+   * `NewDecoderWithoutBOMHandling()` when decoding segmented input.
+   */
+  inline nsresult DecodeWithoutBOMHandling(const nsACString& aBytes,
+                                           nsACString& aOut) const
+  {
+    const nsACString* bytes = &aBytes;
+    nsACString* out = &aOut;
+    if (bytes == out) {
+      nsAutoCString temp(aBytes);
+      return mozilla_encoding_decode_to_nscstring_without_bom_handling(
+        this, &temp, out);
+    }
+    return mozilla_encoding_decode_to_nscstring_without_bom_handling(
+      this, bytes, out);
+  }
+
+  /**
+   * Decode complete input to `nsAString` _without BOM handling_ and
+   * with malformed sequences replaced with the REPLACEMENT CHARACTER when
+   * the entire input is available as a single buffer (i.e. the end of the
+   * buffer marks the end of the stream).
+   *
+   * When invoked on `UTF_8`, this method implements the (non-streaming
+   * version of) the _UTF-8 decode without BOM_
+   * (https://encoding.spec.whatwg.org/#utf-8-decode-without-bom) spec concept.
+   *
+   * Returns `NS_ERROR_OUT_OF_MEMORY` upon OOM, `NS_OK_HAD_REPLACEMENTS`
+   * if there were malformed sequences (that were replaced with the
+   * REPLACEMENT CHARACTER) and `NS_OK` otherwise.
+   *
+   * _Note:_ It is wrong to use this when the input buffer represents only
+   * a segment of the input instead of the whole input. Use
+   * `NewDecoderWithoutBOMHandling()` when decoding segmented input.
+   */
+  inline nsresult DecodeWithoutBOMHandling(Span<const uint8_t> aBytes,
+                                           nsAString& aOut) const
+  {
+    return mozilla_encoding_decode_to_nsstring_without_bom_handling(
+      this, aBytes.Elements(), aBytes.Length(), &aOut);
+  }
+
+  /**
+   * Decode complete input to `nsACString` _without BOM handling_ and
+   * _with malformed sequences treated as fatal_ when the entire input is
+   * available as a single buffer (i.e. the end of the buffer marks the end
+   * of the stream).
+   *
+   * When invoked on `UTF_8`, this method implements the (non-streaming
+   * version of) the _UTF-8 decode without BOM or fail_
+   * (https://encoding.spec.whatwg.org/#utf-8-decode-without-bom-or-fail)
+   * spec concept.
+   *
+   * Returns `NS_ERROR_OUT_OF_MEMORY` upon OOM, `NS_ERROR_UDEC_ILLEGALINPUT`
+   * if a malformed sequence was encountered and `NS_OK` otherwise.
+   *
+   * The backing buffer of the string isn't copied if the input buffer
+   * is heap-allocated and decoding from UTF-8 and the input is valid
+   * UTF-8, decoding from an ASCII-compatible encoding and the input
+   * is valid ASCII or decoding from ISO-2022-JP and the input stays
+   * in the ASCII state of ISO-2022-JP. It is OK to pass the same string
+   * as both arguments.
+   *
+   * _Note:_ It is wrong to use this when the input buffer represents only
+   * a segment of the input instead of the whole input. Use
+   * `NewDecoderWithoutBOMHandling()` when decoding segmented input.
+   */
+  inline nsresult DecodeWithoutBOMHandlingAndWithoutReplacement(
+    const nsACString& aBytes,
+    nsACString& aOut) const
+  {
+    const nsACString* bytes = &aBytes;
+    nsACString* out = &aOut;
+    if (bytes == out) {
+      nsAutoCString temp(aBytes);
+      return mozilla_encoding_decode_to_nscstring_without_bom_handling_and_without_replacement(
+        this, &temp, out);
+    }
+    return mozilla_encoding_decode_to_nscstring_without_bom_handling_and_without_replacement(
+      this, bytes, out);
+  }
+
+  /**
+   * Decode complete input to `nsAString` _without BOM handling_ and
+   * _with malformed sequences treated as fatal_ when the entire input is
+   * available as a single buffer (i.e. the end of the buffer marks the end
+   * of the stream).
+   *
+   * When invoked on `UTF_8`, this method implements the (non-streaming
+   * version of) the _UTF-8 decode without BOM or fail_
+   * (https://encoding.spec.whatwg.org/#utf-8-decode-without-bom-or-fail)
+   * spec concept.
+   *
+   * Returns `NS_ERROR_OUT_OF_MEMORY` upon OOM, `NS_ERROR_UDEC_ILLEGALINPUT`
+   * if a malformed sequence was encountered and `NS_OK` otherwise.
+   *
+   * _Note:_ It is wrong to use this when the input buffer represents only
+   * a segment of the input instead of the whole input. Use
+   * `NewDecoderWithoutBOMHandling()` when decoding segmented input.
+   */
+  inline nsresult DecodeWithoutBOMHandlingAndWithoutReplacement(
+    Span<const uint8_t> aBytes,
+    nsAString& aOut) const
+  {
+    return mozilla_encoding_decode_to_nsstring_without_bom_handling_and_without_replacement(
+      this, aBytes.Elements(), aBytes.Length(), &aOut);
+  }
+
+  /**
+   * Encode complete input to `nsACString` with unmappable characters
+   * replaced with decimal numeric character references when the entire input
+   * is available as a single buffer (i.e. the end of the buffer marks the
+   * end of the stream).
+   *
+   * This method implements the (non-streaming version of) the
+   * _encode_ (https://encoding.spec.whatwg.org/#encode) spec concept.
+   *
+   * The second item in the returned tuple is the encoding that was actually
+   * used (which may differ from this encoding thanks to some encodings
+   * having UTF-8 as their output encoding).
+   *
+   * The first item of the returned tuple is `NS_ERROR_UDEC_ILLEGALINPUT` if
+   * the input is not valid UTF-8, `NS_ERROR_OUT_OF_MEMORY` upon OOM,
+   * `NS_OK_HAD_REPLACEMENTS` if there were unmappable code points (that were
+   * replaced with numeric character references) and `NS_OK` otherwise.
+   *
+   * The backing buffer of the string isn't copied if the input buffer
+   * is heap-allocated and encoding to UTF-8 and the input is valid
+   * UTF-8, encoding to an ASCII-compatible encoding and the input
+   * is valid ASCII or encoding from ISO-2022-JP and the input stays
+   * in the ASCII state of ISO-2022-JP. It is OK to pass the same string
+   * as both arguments.
+   *
+   * _Note:_ It is wrong to use this when the input buffer represents only
+   * a segment of the input instead of the whole input. Use `NewEncoder()`
+   * when encoding segmented output.
+   */
+  inline Tuple<nsresult, NotNull<const mozilla::Encoding*>> Encode(
+    const nsACString& aString,
+    nsACString& aOut) const
+  {
+    const Encoding* encoding = this;
+    const nsACString* string = &aString;
+    nsACString* out = &aOut;
+    nsresult rv;
+    if (string == out) {
+      nsAutoCString temp(aString);
+      rv = mozilla_encoding_encode_from_nscstring(&encoding, &temp, out);
+    } else {
+      rv = mozilla_encoding_encode_from_nscstring(&encoding, string, out);
+    }
+    return MakeTuple(rv, WrapNotNull(encoding));
+  }
+
+  /**
+   * Encode complete input to `nsACString` with unmappable characters
+   * replaced with decimal numeric character references when the entire input
+   * is available as a single buffer (i.e. the end of the buffer marks the
+   * end of the stream).
+   *
+   * This method implements the (non-streaming version of) the
+   * _encode_ (https://encoding.spec.whatwg.org/#encode) spec concept.
+   *
+   * The second item in the returned tuple is the encoding that was actually
+   * used (which may differ from this encoding thanks to some encodings
+   * having UTF-8 as their output encoding).
+   *
+   * The first item of the returned tuple is `NS_ERROR_OUT_OF_MEMORY` upon
+   * OOM, `NS_OK_HAD_REPLACEMENTS` if there were unmappable code points (that
+   * were replaced with numeric character references) and `NS_OK` otherwise.
+
+   * _Note:_ It is wrong to use this when the input buffer represents only
+   * a segment of the input instead of the whole input. Use `NewEncoder()`
+   * when encoding segmented output.
+   */
+  inline Tuple<nsresult, NotNull<const mozilla::Encoding*>> Encode(
+    Span<const char16_t> aString,
+    nsACString& aOut) const
+  {
+    const Encoding* encoding = this;
+    nsresult rv = mozilla_encoding_encode_from_utf16(
+      &encoding, aString.Elements(), aString.Length(), &aOut);
+    return MakeTuple(rv, WrapNotNull(encoding));
+  }
+
+  /**
+   * Instantiates a new decoder for this encoding with BOM sniffing enabled.
+   *
+   * BOM sniffing may cause the returned decoder to morph into a decoder
+   * for UTF-8, UTF-16LE or UTF-16BE instead of this encoding.
+   */
+  inline UniquePtr<Decoder> NewDecoder() const
+  {
+    UniquePtr<Decoder> decoder(encoding_new_decoder(this));
+    return decoder;
+  }
+
+  /**
+   * Instantiates a new decoder for this encoding with BOM sniffing enabled
+   * into memory occupied by a previously-instantiated decoder.
+   *
+   * BOM sniffing may cause the returned decoder to morph into a decoder
+   * for UTF-8, UTF-16LE or UTF-16BE instead of this encoding.
+   */
+  inline void NewDecoderInto(Decoder& aDecoder) const
+  {
+    encoding_new_decoder_into(this, &aDecoder);
+  }
+
+  /**
+   * Instantiates a new decoder for this encoding with BOM removal.
+   *
+   * If the input starts with bytes that are the BOM for this encoding,
+   * those bytes are removed. However, the decoder never morphs into a
+   * decoder for another encoding: A BOM for another encoding is treated as
+   * (potentially malformed) input to the decoding algorithm for this
+   * encoding.
+   */
+  inline UniquePtr<Decoder> NewDecoderWithBOMRemoval() const
+  {
+    UniquePtr<Decoder> decoder(encoding_new_decoder_with_bom_removal(this));
+    return decoder;
+  }
+
+  /**
+   * Instantiates a new decoder for this encoding with BOM removal
+   * into memory occupied by a previously-instantiated decoder.
+   *
+   * If the input starts with bytes that are the BOM for this encoding,
+   * those bytes are removed. However, the decoder never morphs into a
+   * decoder for another encoding: A BOM for another encoding is treated as
+   * (potentially malformed) input to the decoding algorithm for this
+   * encoding.
+   */
+  inline void NewDecoderWithBOMRemovalInto(Decoder& aDecoder) const
+  {
+    encoding_new_decoder_with_bom_removal_into(this, &aDecoder);
+  }
+
+  /**
+   * Instantiates a new decoder for this encoding with BOM handling disabled.
+   *
+   * If the input starts with bytes that look like a BOM, those bytes are
+   * not treated as a BOM. (Hence, the decoder never morphs into a decoder
+   * for another encoding.)
+   *
+   * _Note:_ If the caller has performed BOM sniffing on its own but has not
+   * removed the BOM, the caller should use `NewDecoderWithBOMRemoval()`
+   * instead of this method to cause the BOM to be removed.
+   */
+  inline UniquePtr<Decoder> NewDecoderWithoutBOMHandling() const
+  {
+    UniquePtr<Decoder> decoder(encoding_new_decoder_without_bom_handling(this));
+    return decoder;
+  }
+
+  /**
+   * Instantiates a new decoder for this encoding with BOM handling disabled
+   * into memory occupied by a previously-instantiated decoder.
+   *
+   * If the input starts with bytes that look like a BOM, those bytes are
+   * not treated as a BOM. (Hence, the decoder never morphs into a decoder
+   * for another encoding.)
+   *
+   * _Note:_ If the caller has performed BOM sniffing on its own but has not
+   * removed the BOM, the caller should use `NewDecoderWithBOMRemovalInto()`
+   * instead of this method to cause the BOM to be removed.
+   */
+  inline void NewDecoderWithoutBOMHandlingInto(Decoder& aDecoder) const
+  {
+    encoding_new_decoder_without_bom_handling_into(this, &aDecoder);
+  }
+
+  /**
+   * Instantiates a new encoder for the output encoding of this encoding.
+   */
+  inline UniquePtr<Encoder> NewEncoder() const
+  {
+    UniquePtr<Encoder> encoder(encoding_new_encoder(this));
+    return encoder;
+  }
+
+  /**
+   * Instantiates a new encoder for the output encoding of this encoding
+   * into memory occupied by a previously-instantiated encoder.
+   */
+  inline void NewEncoderInto(Encoder& aEncoder) const
+  {
+    encoding_new_encoder_into(this, &aEncoder);
+  }
+
+  /**
+   * Validates UTF-8.
+   *
+   * Returns the index of the first byte that makes the input malformed as
+   * UTF-8 or the length of the input if the input is entirely valid.
+   */
+  static inline size_t UTF8ValidUpTo(Span<const uint8_t> aBuffer)
+  {
+    return encoding_utf8_valid_up_to(aBuffer.Elements(), aBuffer.Length());
+  }
+
+  /**
+   * Validates ASCII.
+   *
+   * Returns the index of the first byte that makes the input malformed as
+   * ASCII or the length of the input if the input is entirely valid.
+   */
+  static inline size_t ASCIIValidUpTo(Span<const uint8_t> aBuffer)
+  {
+    return encoding_ascii_valid_up_to(aBuffer.Elements(), aBuffer.Length());
+  }
+
+  /**
+   * Validates ISO-2022-JP ASCII-state data.
+   *
+   * Returns the index of the first byte that makes the input not
+   * representable in the ASCII state of ISO-2022-JP or the length of the
+   * input if the input is entirely representable in the ASCII state of
+   * ISO-2022-JP.
+   */
+  static inline size_t ISO2022JPASCIIValidUpTo(Span<const uint8_t> aBuffer)
+  {
+    return encoding_iso_2022_jp_ascii_valid_up_to(aBuffer.Elements(),
+                                                  aBuffer.Length());
+  }
+
+private:
+  Encoding() = delete;
+  Encoding(const Encoding&) = delete;
+  Encoding& operator=(const Encoding&) = delete;
+  ~Encoding() = delete;
+
+};
+
+/**
+ * A converter that decodes a byte stream into Unicode according to a
+ * character encoding in a streaming (incremental) manner.
+ *
+ * The various `Decode*` methods take an input buffer (`aSrc`) and an output
+ * buffer `aDst` both of which are caller-allocated. There are variants for
+ * both UTF-8 and UTF-16 output buffers.
+ *
+ * A `Decode*` method decodes bytes from `aSrc` into Unicode characters stored
+ * into `aDst` until one of the following three things happens:
+ *
+ * 1. A malformed byte sequence is encountered (`*WithoutReplacement`
+ *    variants only).
+ *
+ * 2. The output buffer has been filled so near capacity that the decoder
+ *    cannot be sure that processing an additional byte of input wouldn't
+ *    cause so much output that the output buffer would overflow.
+ *
+ * 3. All the input bytes have been processed.
+ *
+ * The `Decode*` method then returns tuple of a status indicating which one
+ * of the three reasons to return happened, how many input bytes were read,
+ * how many output code units (`uint8_t` when decoding into UTF-8 and `char16_t`
+ * when decoding to UTF-16) were written, and in the case of the
+ * variants performing replacement, a boolean indicating whether an error was
+ * replaced with the REPLACEMENT CHARACTER during the call.
+ *
+ * The number of bytes "written" is what's logically written. Garbage may be
+ * written in the output buffer beyond the point logically written to.
+ *
+ * In the case of the `*WithoutReplacement` variants, the status is a
+ * `uint32_t` whose possible values are packed info about a malformed byte
+ * sequence, `kOutputFull` and `kInputEmpty` corresponding to the three cases
+ * listed above).
+ *
+ * Packed info about malformed sequences has the following format:
+ * The lowest 8 bits, which can have the decimal value 0, 1, 2 or 3,
+ * indicate the number of bytes that were consumed after the malformed
+ * sequence and whose next-lowest 8 bits, when shifted right by 8 indicate
+ * the length of the malformed byte sequence (possible decimal values 1, 2,
+ * 3 or 4). The maximum possible sum of the two is 6.
+ *
+ * In the case of methods whose name does not end with
+ * `*WithoutReplacement`, malformed sequences are automatically replaced
+ * with the REPLACEMENT CHARACTER and errors do not cause the methods to
+ * return early.
+ *
+ * When decoding to UTF-8, the output buffer must have at least 4 bytes of
+ * space. When decoding to UTF-16, the output buffer must have at least two
+ * UTF-16 code units (`char16_t`) of space.
+ *
+ * When decoding to UTF-8 without replacement, the methods are guaranteed
+ * not to return indicating that more output space is needed if the length
+ * of the output buffer is at least the length returned by
+ * `MaxUTF8BufferLengthWithoutReplacement()`. When decoding to UTF-8
+ * with replacement, the length of the output buffer that guarantees the
+ * methods not to return indicating that more output space is needed is given
+ * by `MaxUTF8BufferLength()`. When decoding to UTF-16 with
+ * or without replacement, the length of the output buffer that guarantees
+ * the methods not to return indicating that more output space is needed is
+ * given by `MaxUTF16BufferLength()`.
+ *
+ * The output written into `aDst` is guaranteed to be valid UTF-8 or UTF-16,
+ * and the output after each `Decode*` call is guaranteed to consist of
+ * complete characters. (I.e. the code unit sequence for the last character is
+ * guaranteed not to be split across output buffers.)
+ *
+ * The boolean argument `aLast` indicates that the end of the stream is reached
+ * when all the bytes in `aSrc` have been consumed.
+ *
+ * A `Decoder` object can be used to incrementally decode a byte stream.
+ *
+ * During the processing of a single stream, the caller must call `Decode*`
+ * zero or more times with `aLast` set to `false` and then call `Decode*` at
+ * least once with `aLast` set to `true`. If `Decode*` returns `kInputEmpty`,
+ * the processing of the stream has ended. Otherwise, the caller must call
+ * `Decode*` again with `aLast` set to `true` (or treat a malformed result,
+ * i.e. neither `kInputEmpty` nor `kOutputFull`, as a fatal error).
+ *
+ * Once the stream has ended, the `Decoder` object must not be used anymore.
+ * That is, you need to create another one to process another stream.
+ *
+ * When the decoder returns `kOutputFull` or the decoder returns a malformed
+ * result and the caller does not wish to treat it as a fatal error, the input
+ * buffer `aSrc` may not have been completely consumed. In that case, the caller
+ * must pass the unconsumed contents of `aSrc` to `Decode*` again upon the next
+ * call.
+ *
+ * # Infinite loops
+ *
+ * When converting with a fixed-size output buffer whose size is too small to
+ * accommodate one character of output, an infinite loop ensues. When
+ * converting with a fixed-size output buffer, it generally makes sense to
+ * make the buffer fairly large (e.g. couple of kilobytes).
+ */
+class Decoder final
+{
+public:
+  ~Decoder() {}
+  static void operator delete(void* aDecoder)
+  {
+    decoder_free(reinterpret_cast<Decoder*>(aDecoder));
+  }
+
+  /**
+   * The `Encoding` this `Decoder` is for.
+   *
+   * BOM sniffing can change the return value of this method during the life
+   * of the decoder.
+   */
+  inline NotNull<const mozilla::Encoding*> Encoding() const
+  {
+    return WrapNotNull(decoder_encoding(this));
+  }
+
+  /**
+   * Query the worst-case UTF-8 output size _with replacement_.
+   *
+   * Returns the size of the output buffer in UTF-8 code units (`uint8_t`)
+   * that will not overflow given the current state of the decoder and
+   * `aByteLength` number of additional input bytes when decoding with
+   * errors handled by outputting a REPLACEMENT CHARACTER for each malformed
+   * sequence.
+   */
+  inline CheckedInt<size_t> MaxUTF8BufferLength(size_t aByteLength) const
+  {
+    CheckedInt<size_t> max(decoder_max_utf8_buffer_length(this, aByteLength));
+    if (max.value() == MaxValue<size_t>::value) {
+      // Mark invalid by overflowing
+      max++;
+      MOZ_ASSERT(!max.isValid());
+    }
+    return max;
+  }
+
+  /**
+   * Query the worst-case UTF-8 output size _without replacement_.
+   *
+   * Returns the size of the output buffer in UTF-8 code units (`uint8_t`)
+   * that will not overflow given the current state of the decoder and
+   * `aByteLength` number of additional input bytes when decoding without
+   * replacement error handling.
+   *
+   * Note that this value may be too small for the `WithReplacement` case.
+   * Use `MaxUTF8BufferLength()` for that case.
+   */
+  inline CheckedInt<size_t> MaxUTF8BufferLengthWithoutReplacement(
+    size_t aByteLength) const
+  {
+    CheckedInt<size_t> max(
+      decoder_max_utf8_buffer_length_without_replacement(this, aByteLength));
+    if (max.value() == MaxValue<size_t>::value) {
+      // Mark invalid by overflowing
+      max++;
+      MOZ_ASSERT(!max.isValid());
+    }
+    return max;
+  }
+
+  /**
+   * Incrementally decode a byte stream into UTF-8 with malformed sequences
+   * replaced with the REPLACEMENT CHARACTER.
+   *
+   * See the documentation of the class for documentation for `Decode*`
+   * methods collectively.
+   */
+  inline Tuple<uint32_t, size_t, size_t, bool>
+  DecodeToUTF8(Span<const uint8_t> aSrc, Span<uint8_t> aDst, bool aLast)
+  {
+    size_t srcRead = aSrc.Length();
+    size_t dstWritten = aDst.Length();
+    bool hadReplacements;
+    uint32_t result = decoder_decode_to_utf8(this,
+                                             aSrc.Elements(),
+                                             &srcRead,
+                                             aDst.Elements(),
+                                             &dstWritten,
+                                             aLast,
+                                             &hadReplacements);
+    return MakeTuple(result, srcRead, dstWritten, hadReplacements);
+  }
+
+  /**
+   * Incrementally decode a byte stream into UTF-8 _without replacement_.
+   *
+   * See the documentation of the class for documentation for `Decode*`
+   * methods collectively.
+   */
+  inline Tuple<uint32_t, size_t, size_t> DecodeToUTF8WithoutReplacement(
+    Span<const uint8_t> aSrc,
+    Span<uint8_t> aDst,
+    bool aLast)
+  {
+    size_t srcRead = aSrc.Length();
+    size_t dstWritten = aDst.Length();
+    uint32_t result = decoder_decode_to_utf8_without_replacement(
+      this, aSrc.Elements(), &srcRead, aDst.Elements(), &dstWritten, aLast);
+    return MakeTuple(result, srcRead, dstWritten);
+  }
+
+  /**
+   * Query the worst-case UTF-16 output size (with or without replacement).
+   *
+   * Returns the size of the output buffer in UTF-16 code units (`char16_t`)
+   * that will not overflow given the current state of the decoder and
+   * `aByteLength` number of additional input bytes.
+   *
+   * Since the REPLACEMENT CHARACTER fits into one UTF-16 code unit, the
+   * return value of this method applies also in the
+   * `_without_replacement` case.
+   */
+  inline CheckedInt<size_t> MaxUTF16BufferLength(size_t aU16Length) const
+  {
+    CheckedInt<size_t> max(decoder_max_utf16_buffer_length(this, aU16Length));
+    if (max.value() == MaxValue<size_t>::value) {
+      // Mark invalid by overflowing
+      max++;
+      MOZ_ASSERT(!max.isValid());
+    }
+    return max;
+  }
+
+  /**
+   * Incrementally decode a byte stream into UTF-16 with malformed sequences
+   * replaced with the REPLACEMENT CHARACTER.
+   *
+   * See the documentation of the class for documentation for `Decode*`
+   * methods collectively.
+   */
+  inline Tuple<uint32_t, size_t, size_t, bool>
+  DecodeToUTF16(Span<const uint8_t> aSrc, Span<char16_t> aDst, bool aLast)
+  {
+    size_t srcRead = aSrc.Length();
+    size_t dstWritten = aDst.Length();
+    bool hadReplacements;
+    uint32_t result = decoder_decode_to_utf16(this,
+                                              aSrc.Elements(),
+                                              &srcRead,
+                                              aDst.Elements(),
+                                              &dstWritten,
+                                              aLast,
+                                              &hadReplacements);
+    return MakeTuple(result, srcRead, dstWritten, hadReplacements);
+  }
+
+  /**
+   * Incrementally decode a byte stream into UTF-16 _without replacement_.
+   *
+   * See the documentation of the class for documentation for `Decode*`
+   * methods collectively.
+   */
+  inline Tuple<uint32_t, size_t, size_t> DecodeToUTF16WithoutReplacement(
+    Span<const uint8_t> aSrc,
+    Span<char16_t> aDst,
+    bool aLast)
+  {
+    size_t srcRead = aSrc.Length();
+    size_t dstWritten = aDst.Length();
+    uint32_t result = decoder_decode_to_utf16_without_replacement(
+      this, aSrc.Elements(), &srcRead, aDst.Elements(), &dstWritten, aLast);
+    return MakeTuple(result, srcRead, dstWritten);
+  }
+
+private:
+  Decoder() = delete;
+  Decoder(const Decoder&) = delete;
+  Decoder& operator=(const Decoder&) = delete;
+};
+
+/**
+ * A converter that encodes a Unicode stream into bytes according to a
+ * character encoding in a streaming (incremental) manner.
+ *
+ * The various `Encode*` methods take an input buffer (`aSrc`) and an output
+ * buffer `aDst` both of which are caller-allocated. There are variants for
+ * both UTF-8 and UTF-16 input buffers.
+ *
+ * An `Encode*` method encode characters from `aSrc` into bytes characters
+ * stored into `aDst` until one of the following three things happens:
+ *
+ * 1. An unmappable character is encountered (`*WithoutReplacement` variants
+ *    only).
+ *
+ * 2. The output buffer has been filled so near capacity that the decoder
+ *    cannot be sure that processing an additional character of input wouldn't
+ *    cause so much output that the output buffer would overflow.
+ *
+ * 3. All the input characters have been processed.
+ *
+ * The `Encode*` method then returns tuple of a status indicating which one
+ * of the three reasons to return happened, how many input code units (`uint8_t`
+ * when encoding from UTF-8 and `char16_t` when encoding from UTF-16) were read,
+ * how many output bytes were written, and in the case of the variants that
+ * perform replacement, a boolean indicating whether an unmappable
+ * character was replaced with a numeric character reference during the call.
+ *
+ * The number of bytes "written" is what's logically written. Garbage may be
+ * written in the output buffer beyond the point logically written to.
+ *
+ * In the case of the methods whose name ends with
+ * `*WithoutReplacement`, the status is a `uint32_t` whose possible values
+ * are an unmappable code point, `kOutputFull` and `kInputEmpty` corresponding
+ * to the three cases listed above).
+ *
+ * In the case of methods whose name does not end with
+ * `*WithoutReplacement`, unmappable characters are automatically replaced
+ * with the corresponding numeric character references and unmappable
+ * characters do not cause the methods to return early.
+ *
+ * When encoding from UTF-8 without replacement, the methods are guaranteed
+ * not to return indicating that more output space is needed if the length
+ * of the output buffer is at least the length returned by
+ * `MaxBufferLengthFromUTF8WithoutReplacement()`. When encoding from
+ * UTF-8 with replacement, the length of the output buffer that guarantees the
+ * methods not to return indicating that more output space is needed in the
+ * absence of unmappable characters is given by
+ * `MaxBufferLengthFromUTF8IfNoUnmappables()`. When encoding from
+ * UTF-16 without replacement, the methods are guaranteed not to return
+ * indicating that more output space is needed if the length of the output
+ * buffer is at least the length returned by
+ * `MaxBufferLengthFromUTF16WithoutReplacement()`. When encoding
+ * from UTF-16 with replacement, the the length of the output buffer that
+ * guarantees the methods not to return indicating that more output space is
+ * needed in the absence of unmappable characters is given by
+ * `MaxBufferLengthFromUTF16IfNoUnmappables()`.
+ * When encoding with replacement, applications are not expected to size the
+ * buffer for the worst case ahead of time but to resize the buffer if there
+ * are unmappable characters. This is why max length queries are only available
+ * for the case where there are no unmappable characters.
+ *
+ * When encoding from UTF-8, each `aSrc` buffer _must_ be valid UTF-8. When
+ * encoding from UTF-16, unpaired surrogates in the input are treated as U+FFFD
+ * REPLACEMENT CHARACTERS. Therefore, in order for astral characters not to
+ * turn into a pair of REPLACEMENT CHARACTERS, the caller must ensure that
+ * surrogate pairs are not split across input buffer boundaries.
+ *
+ * After an `Encode*` call returns, the output produced so far, taken as a
+ * whole from the start of the stream, is guaranteed to consist of a valid
+ * byte sequence in the target encoding. (I.e. the code unit sequence for a
+ * character is guaranteed not to be split across output buffers. However, due
+ * to the stateful nature of ISO-2022-JP, the stream needs to be considered
+ * from the start for it to be valid. For other encodings, the validity holds
+ * on a per-output buffer basis.)
+ *
+ * The boolean argument `aLast` indicates that the end of the stream is reached
+ * when all the characters in `aSrc` have been consumed. This argument is needed
+ * for ISO-2022-JP and is ignored for other encodings.
+ *
+ * An `Encoder` object can be used to incrementally encode a byte stream.
+ *
+ * During the processing of a single stream, the caller must call `Encode*`
+ * zero or more times with `aLast` set to `false` and then call `Encode*` at
+ * least once with `aLast` set to `true`. If `Encode*` returns `kInputEmpty`,
+ * the processing of the stream has ended. Otherwise, the caller must call
+ * `Encode*` again with `aLast` set to `true` (or treat an unmappable result,
+ * i.e. neither `kInputEmpty` nor `kOutputFull`, as a fatal error).
+ *
+ * Once the stream has ended, the `Encoder` object must not be used anymore.
+ * That is, you need to create another one to process another stream.
+ *
+ * When the encoder returns `kOutputFull` or the encoder returns an unmappable
+ * result and the caller does not wish to treat it as a fatal error, the input
+ * buffer `aSrc` may not have been completely consumed. In that case, the caller
+ * must pass the unconsumed contents of `aSrc` to `Encode*` again upon the next
+ * call.
+ *
+ * # Infinite loops
+ *
+ * When converting with a fixed-size output buffer whose size is too small to
+ * accommodate one character of output, an infinite loop ensues. When
+ * converting with a fixed-size output buffer, it generally makes sense to
+ * make the buffer fairly large (e.g. couple of kilobytes).
+ */
+class Encoder final
+{
+public:
+  ~Encoder() {}
+
+  static void operator delete(void* aEncoder)
+  {
+    encoder_free(reinterpret_cast<Encoder*>(aEncoder));
+  }
+
+  /**
+   * The `Encoding` this `Encoder` is for.
+   */
+  inline NotNull<const mozilla::Encoding*> Encoding() const
+  {
+    return WrapNotNull(encoder_encoding(this));
+  }
+
+  /**
+   * Returns `true` if this is an ISO-2022-JP encoder that's not in the
+   * ASCII state and `false` otherwise.
+   */
+  inline bool HasPendingState() const
+  {
+    return encoder_has_pending_state(this);
+  }
+
+  /**
+   * Query the worst-case output size when encoding from UTF-8 with
+   * replacement.
+   *
+   * Returns the size of the output buffer in bytes that will not overflow
+   * given the current state of the encoder and `aByteLength` number of
+   * additional input code units if there are no unmappable characters in
+   * the input.
+   */
+  inline CheckedInt<size_t> MaxBufferLengthFromUTF8IfNoUnmappables(
+    size_t aByteLength) const
+  {
+    CheckedInt<size_t> max(
+      encoder_max_buffer_length_from_utf8_if_no_unmappables(this, aByteLength));
+    if (max.value() == MaxValue<size_t>::value) {
+      // Mark invalid by overflowing
+      max++;
+      MOZ_ASSERT(!max.isValid());
+    }
+    return max;
+  }
+
+  /**
+   * Query the worst-case output size when encoding from UTF-8 without
+   * replacement.
+   *
+   * Returns the size of the output buffer in bytes that will not overflow
+   * given the current state of the encoder and `aByteLength` number of
+   * additional input code units.
+   */
+  inline CheckedInt<size_t> MaxBufferLengthFromUTF8WithoutReplacement(
+    size_t aByteLength) const
+  {
+    CheckedInt<size_t> max(
+      encoder_max_buffer_length_from_utf8_without_replacement(this,
+                                                              aByteLength));
+    if (max.value() == MaxValue<size_t>::value) {
+      // Mark invalid by overflowing
+      max++;
+      MOZ_ASSERT(!max.isValid());
+    }
+    return max;
+  }
+
+  /**
+   * Incrementally encode into byte stream from UTF-8 with unmappable
+   * characters replaced with HTML (decimal) numeric character references.
+   *
+   * See the documentation of the class for documentation for `Encode*`
+   * methods collectively.
+   *
+   * WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING:
+   * The input ***MUST*** be valid UTF-8 or bad things happen! Unless
+   * absolutely sure, use `Encoding::UTF8ValidUpTo()` to check.
+   */
+  inline Tuple<uint32_t, size_t, size_t, bool>
+  EncodeFromUTF8(Span<const uint8_t> aSrc, Span<uint8_t> aDst, bool aLast)
+  {
+    size_t srcRead = aSrc.Length();
+    size_t dstWritten = aDst.Length();
+    bool hadReplacements;
+    uint32_t result = encoder_encode_from_utf8(this,
+                                               aSrc.Elements(),
+                                               &srcRead,
+                                               aDst.Elements(),
+                                               &dstWritten,
+                                               aLast,
+                                               &hadReplacements);
+    return MakeTuple(result, srcRead, dstWritten, hadReplacements);
+  }
+
+  /**
+   * Incrementally encode into byte stream from UTF-8 _without replacement_.
+   *
+   * See the documentation of the class for documentation for `Encode*`
+   * methods collectively.
+   *
+   * WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING:
+   * The input ***MUST*** be valid UTF-8 or bad things happen! Unless
+   * absolutely sure, use `Encoding::UTF8ValidUpTo()` to check.
+   */
+  inline Tuple<uint32_t, size_t, size_t> EncodeFromUTF8WithoutReplacement(
+    Span<const uint8_t> aSrc,
+    Span<uint8_t> aDst,
+    bool aLast)
+  {
+    size_t srcRead = aSrc.Length();
+    size_t dstWritten = aDst.Length();
+    uint32_t result = encoder_encode_from_utf8_without_replacement(
+      this, aSrc.Elements(), &srcRead, aDst.Elements(), &dstWritten, aLast);
+    return MakeTuple(result, srcRead, dstWritten);
+  }
+
+  /**
+   * Query the worst-case output size when encoding from UTF-16 with
+   * replacement.
+   *
+   * Returns the size of the output buffer in bytes that will not overflow
+   * given the current state of the encoder and `aU16Length` number of
+   * additional input code units if there are no unmappable characters in
+   * the input.
+   */
+  inline CheckedInt<size_t> MaxBufferLengthFromUTF16IfNoUnmappables(
+    size_t aU16Length) const
+  {
+    CheckedInt<size_t> max(
+      encoder_max_buffer_length_from_utf16_if_no_unmappables(this, aU16Length));
+    if (max.value() == MaxValue<size_t>::value) {
+      // Mark invalid by overflowing
+      max++;
+      MOZ_ASSERT(!max.isValid());
+    }
+    return max;
+  }
+
+  /**
+   * Query the worst-case output size when encoding from UTF-16 without
+   * replacement.
+   *
+   * Returns the size of the output buffer in bytes that will not overflow
+   * given the current state of the encoder and `aU16Length` number of
+   * additional input code units.
+   */
+  inline CheckedInt<size_t> MaxBufferLengthFromUTF16WithoutReplacement(
+    size_t aU16Length) const
+  {
+    CheckedInt<size_t> max(
+      encoder_max_buffer_length_from_utf16_without_replacement(this,
+                                                               aU16Length));
+    if (max.value() == MaxValue<size_t>::value) {
+      // Mark invalid by overflowing
+      max++;
+      MOZ_ASSERT(!max.isValid());
+    }
+    return max;
+  }
+
+  /**
+   * Incrementally encode into byte stream from UTF-16 with unmappable
+   * characters replaced with HTML (decimal) numeric character references.
+   *
+   * See the documentation of the class for documentation for `Encode*`
+   * methods collectively.
+   */
+  inline Tuple<uint32_t, size_t, size_t, bool>
+  EncodeFromUTF16(Span<const char16_t> aSrc, Span<uint8_t> aDst, bool aLast)
+  {
+    size_t srcRead = aSrc.Length();
+    size_t dstWritten = aDst.Length();
+    bool hadReplacements;
+    uint32_t result = encoder_encode_from_utf16(this,
+                                                aSrc.Elements(),
+                                                &srcRead,
+                                                aDst.Elements(),
+                                                &dstWritten,
+                                                aLast,
+                                                &hadReplacements);
+    return MakeTuple(result, srcRead, dstWritten, hadReplacements);
+  }
+
+  /**
+   * Incrementally encode into byte stream from UTF-16 _without replacement_.
+   *
+   * See the documentation of the class for documentation for `Encode*`
+   * methods collectively.
+   */
+  inline Tuple<uint32_t, size_t, size_t> EncodeFromUTF16WithoutReplacement(
+    Span<const char16_t> aSrc,
+    Span<uint8_t> aDst,
+    bool aLast)
+  {
+    size_t srcRead = aSrc.Length();
+    size_t dstWritten = aDst.Length();
+    uint32_t result = encoder_encode_from_utf16_without_replacement(
+      this, aSrc.Elements(), &srcRead, aDst.Elements(), &dstWritten, aLast);
+    return MakeTuple(result, srcRead, dstWritten);
+  }
+
+private:
+  Encoder() = delete;
+  Encoder(const Encoder&) = delete;
+  Encoder& operator=(const Encoder&) = delete;
+};
+
+}; // namespace mozilla
+
+#endif // mozilla_Encoding_h
new file mode 100644
--- /dev/null
+++ b/intl/encoding_glue/Cargo.toml
@@ -0,0 +1,16 @@
+[package]
+name = "encoding_glue"
+description = "FFI functions for mozilla::Encoding that aren't appropriate to share on crates.io due to m-c dependencies"
+version = "0.1.0"
+authors = ["Henri Sivonen <hsivonen@hsivonen.fi>"]
+license = "MIT/Apache-2.0"
+
+[features]
+simd-accel = ["encoding_rs/simd-accel"]
+no-static-ideograph-encoder-tables = ["encoding_rs/no-static-ideograph-encoder-tables"]
+parallel-utf8 = ["encoding_rs/parallel-utf8"]
+
+[dependencies]
+encoding_rs = "0.6.5"
+nsstring = { path = "../../xpcom/rust/nsstring" }
+nserror = { path = "../../xpcom/rust/nserror" }
new file mode 100644
--- /dev/null
+++ b/intl/encoding_glue/src/lib.rs
@@ -0,0 +1,580 @@
+// Copyright 2015-2016 Mozilla Foundation. See the COPYRIGHT
+// file at the top-level directory of this distribution.
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// https://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or https://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+// Adapted from third_party/rust/encoding_rs/src/lib.rs, so the
+// "top-level directory" in the above notice refers to
+// third_party/rust/encoding_rs/.
+
+extern crate encoding_rs;
+extern crate nsstring;
+extern crate nserror;
+
+use std::slice;
+use encoding_rs::*;
+use nsstring::*;
+use nserror::*;
+
+// nsStringBuffer's internal bookkeeping takes 8 bytes from
+// the allocation. Plus one for termination.
+const NS_CSTRING_OVERHEAD: usize = 9;
+
+/// Takes `Option<usize>`, the destination string and a value
+/// to return on failure and tries to set the length of the
+/// destination string to the `usize` wrapped in the first
+/// argument.
+macro_rules! try_dst_set_len {
+    ($needed:expr,
+     $dst:ident,
+     $ret:expr) => (
+    let needed = match $needed {
+        Some(max) => {
+            // XPCOM strings use uint32_t for length.
+            if max > ::std::u32::MAX as usize {
+                return $ret;
+            }
+            max as u32
+        }
+        None => {
+            return $ret;
+        }
+    };
+    unsafe {
+        if $dst.fallible_set_length(needed).is_err() {
+            return $ret;
+        }
+    }
+     )
+}
+
+#[no_mangle]
+pub unsafe extern "C" fn mozilla_encoding_decode_to_nsstring(encoding: *mut *const Encoding,
+                                                             src: *const u8,
+                                                             src_len: usize,
+                                                             dst: *mut nsAString)
+                                                             -> nsresult {
+    let (rv, enc) = decode_to_nsstring(&**encoding, slice::from_raw_parts(src, src_len), &mut *dst);
+    *encoding = enc as *const Encoding;
+    rv
+}
+
+pub fn decode_to_nsstring(encoding: &'static Encoding,
+                          src: &[u8],
+                          dst: &mut nsAString)
+                          -> (nsresult, &'static Encoding) {
+    if let Some((enc, bom_length)) = Encoding::for_bom(src) {
+        return (decode_to_nsstring_without_bom_handling(enc, &src[bom_length..], dst), enc);
+    }
+    (decode_to_nsstring_without_bom_handling(encoding, src, dst), encoding)
+}
+
+#[no_mangle]
+pub unsafe extern "C" fn mozilla_encoding_decode_to_nsstring_with_bom_removal(encoding: *const Encoding, src: *const u8, src_len: usize, dst: *mut nsAString) -> nsresult{
+    decode_to_nsstring_with_bom_removal(&*encoding, slice::from_raw_parts(src, src_len), &mut *dst)
+}
+
+pub fn decode_to_nsstring_with_bom_removal(encoding: &'static Encoding,
+                                           src: &[u8],
+                                           dst: &mut nsAString)
+                                           -> nsresult {
+    let without_bom = if encoding == UTF_8 && src.starts_with(b"\xEF\xBB\xBF") {
+        &src[3..]
+    } else if (encoding == UTF_16LE && src.starts_with(b"\xFF\xFE")) ||
+              (encoding == UTF_16BE && src.starts_with(b"\xFE\xFF")) {
+        &src[2..]
+    } else {
+        src
+    };
+    decode_to_nsstring_without_bom_handling(encoding, without_bom, dst)
+}
+
+#[no_mangle]
+pub unsafe extern "C" fn mozilla_encoding_decode_to_nsstring_without_bom_handling(encoding: *const Encoding, src: *const u8, src_len: usize, dst: *mut nsAString) -> nsresult{
+    decode_to_nsstring_without_bom_handling(&*encoding,
+                                            slice::from_raw_parts(src, src_len),
+                                            &mut *dst)
+}
+
+pub fn decode_to_nsstring_without_bom_handling(encoding: &'static Encoding,
+                                               src: &[u8],
+                                               dst: &mut nsAString)
+                                               -> nsresult {
+    let mut decoder = encoding.new_decoder_without_bom_handling();
+    try_dst_set_len!(decoder.max_utf16_buffer_length(src.len()),
+                     dst,
+                     NS_ERROR_OUT_OF_MEMORY);
+    // to_mut() shouldn't fail right after setting length.
+    let (result, read, written, had_errors) = decoder.decode_to_utf16(src, dst.to_mut(), true);
+    debug_assert_eq!(result, CoderResult::InputEmpty);
+    debug_assert_eq!(read, src.len());
+    debug_assert!(written <= dst.len());
+    unsafe {
+        if dst.fallible_set_length(written as u32).is_err() {
+            return NS_ERROR_OUT_OF_MEMORY;
+        }
+    }
+    if had_errors {
+        return NS_OK_HAD_REPLACEMENTS;
+    }
+    NS_OK
+}
+
+#[no_mangle]
+pub unsafe extern "C" fn mozilla_encoding_decode_to_nsstring_without_bom_handling_and_without_replacement
+    (encoding: *const Encoding,
+     src: *const u8,
+     src_len: usize,
+     dst: *mut nsAString)
+     -> nsresult {
+    decode_to_nsstring_without_bom_handling_and_without_replacement(&*encoding,
+                                                                    slice::from_raw_parts(src,
+                                                                                          src_len),
+                                                                    &mut *dst)
+}
+
+pub fn decode_to_nsstring_without_bom_handling_and_without_replacement(encoding: &'static Encoding, src: &[u8], dst: &mut nsAString) -> nsresult{
+    let mut decoder = encoding.new_decoder_without_bom_handling();
+    try_dst_set_len!(decoder.max_utf16_buffer_length(src.len()),
+                     dst,
+                     NS_ERROR_OUT_OF_MEMORY);
+    // to_mut() shouldn't fail right after setting length.
+    let (result, read, written) = decoder
+        .decode_to_utf16_without_replacement(src, dst.to_mut(), true);
+    match result {
+        DecoderResult::InputEmpty => {
+            debug_assert_eq!(read, src.len());
+            debug_assert!(written <= dst.len());
+            unsafe {
+                if dst.fallible_set_length(written as u32).is_err() {
+                    return NS_ERROR_OUT_OF_MEMORY;
+                }
+            }
+            NS_OK
+        }
+        DecoderResult::Malformed(_, _) => {
+            dst.truncate();
+            NS_ERROR_UDEC_ILLEGALINPUT
+        }
+        DecoderResult::OutputFull => unreachable!(),
+    }
+}
+
+#[no_mangle]
+pub unsafe extern "C" fn mozilla_encoding_encode_from_utf16(encoding: *mut *const Encoding,
+                                                            src: *const u16,
+                                                            src_len: usize,
+                                                            dst: *mut nsACString)
+                                                            -> nsresult {
+    let (rv, enc) = encode_from_utf16(&**encoding, slice::from_raw_parts(src, src_len), &mut *dst);
+    *encoding = enc as *const Encoding;
+    rv
+}
+
+pub fn encode_from_utf16(encoding: &'static Encoding,
+                         src: &[u16],
+                         dst: &mut nsACString)
+                         -> (nsresult, &'static Encoding) {
+    let output_encoding = encoding.output_encoding();
+    let mut encoder = output_encoding.new_encoder();
+    try_dst_set_len!(encoder.max_buffer_length_from_utf16_if_no_unmappables(src.len()),
+                     dst,
+                     (NS_ERROR_OUT_OF_MEMORY, output_encoding));
+
+    let mut total_read = 0;
+    let mut total_written = 0;
+    let mut total_had_errors = false;
+    loop {
+        let (result, read, written, had_errors) = encoder
+            .encode_from_utf16(&src[total_read..],
+                               &mut (dst.to_mut())[total_written..],
+                               true);
+        total_read += read;
+        total_written += written;
+        total_had_errors |= had_errors;
+        match result {
+            CoderResult::InputEmpty => {
+                debug_assert_eq!(total_read, src.len());
+                debug_assert!(total_written <= dst.len());
+                unsafe {
+                    if dst.fallible_set_length(total_written as u32).is_err() {
+                        return (NS_ERROR_OUT_OF_MEMORY, output_encoding);
+                    }
+                }
+                if total_had_errors {
+                    return (NS_OK_HAD_REPLACEMENTS, output_encoding);
+                }
+                return (NS_OK, output_encoding);
+            }
+            CoderResult::OutputFull => {
+                if let Some(needed) =
+                    checked_add(total_written,
+                                encoder.max_buffer_length_from_utf16_if_no_unmappables(src.len() -
+                                                                                       total_read)) {
+                    // Let's round the allocation up in order to avoid repeated
+                    // allocations. Using power-of-two as the approximation of
+                    // available jemalloc buckets, since linking with
+                    // malloc_good_size is messy.
+                    if let Some(with_bookkeeping) = NS_CSTRING_OVERHEAD.checked_add(needed) {
+                        let rounded = with_bookkeeping.next_power_of_two();
+                        let unclowned = rounded - NS_CSTRING_OVERHEAD;
+                        // XPCOM strings use uint32_t for length.
+                        if unclowned <= ::std::u32::MAX as usize {
+                            unsafe {
+                                if dst.fallible_set_length(unclowned as u32).is_ok() {
+                                    continue;
+                                }
+                            }
+                        }
+                    }
+                }
+                return (NS_ERROR_OUT_OF_MEMORY, output_encoding);
+            }
+        }
+    }
+}
+
+#[no_mangle]
+pub unsafe extern "C" fn mozilla_encoding_decode_to_nscstring(encoding: *mut *const Encoding,
+                                                              src: *const nsACString,
+                                                              dst: *mut nsACString)
+                                                              -> nsresult {
+    debug_assert_ne!(src as usize, dst as usize);
+    let (rv, enc) = decode_to_nscstring(&**encoding, &*src, &mut *dst);
+    *encoding = enc as *const Encoding;
+    rv
+}
+
+pub fn decode_to_nscstring(encoding: &'static Encoding,
+                           src: &nsACString,
+                           dst: &mut nsACString)
+                           -> (nsresult, &'static Encoding) {
+    if let Some((enc, bom_length)) = Encoding::for_bom(src) {
+        return (decode_from_slice_to_nscstring_without_bom_handling(enc,
+                                                                    &src[bom_length..],
+                                                                    dst,
+                                                                    0),
+                enc);
+    }
+    (decode_to_nscstring_without_bom_handling(encoding, src, dst), encoding)
+}
+
+#[no_mangle]
+pub unsafe extern "C" fn mozilla_encoding_decode_to_nscstring_with_bom_removal(encoding: *const Encoding, src: *const nsACString, dst: *mut nsACString) -> nsresult{
+    debug_assert_ne!(src as usize, dst as usize);
+    decode_to_nscstring_with_bom_removal(&*encoding, &*src, &mut *dst)
+}
+
+pub fn decode_to_nscstring_with_bom_removal(encoding: &'static Encoding,
+                                            src: &nsACString,
+                                            dst: &mut nsACString)
+                                            -> nsresult {
+    let without_bom = if encoding == UTF_8 && src.starts_with(b"\xEF\xBB\xBF") {
+        &src[3..]
+    } else if (encoding == UTF_16LE && src.starts_with(b"\xFF\xFE")) ||
+              (encoding == UTF_16BE && src.starts_with(b"\xFE\xFF")) {
+        &src[2..]
+    } else {
+        return decode_to_nscstring_without_bom_handling(encoding, src, dst);
+    };
+    decode_from_slice_to_nscstring_without_bom_handling(encoding, without_bom, dst, 0)
+}
+
+#[no_mangle]
+pub unsafe extern "C" fn mozilla_encoding_decode_to_nscstring_without_bom_handling(encoding: *const Encoding, src: *const nsACString, dst: *mut nsACString) -> nsresult{
+    debug_assert_ne!(src as usize, dst as usize);
+    decode_to_nscstring_without_bom_handling(&*encoding, &*src, &mut *dst)
+}
+
+pub fn decode_to_nscstring_without_bom_handling(encoding: &'static Encoding,
+                                                src: &nsACString,
+                                                dst: &mut nsACString)
+                                                -> nsresult {
+    let bytes = &src[..];
+    let valid_up_to = if encoding == UTF_8 {
+        Encoding::utf8_valid_up_to(bytes)
+    } else if encoding.is_ascii_compatible() {
+        Encoding::ascii_valid_up_to(bytes)
+    } else if encoding == ISO_2022_JP {
+        Encoding::iso_2022_jp_ascii_valid_up_to(bytes)
+    } else {
+        return decode_from_slice_to_nscstring_without_bom_handling(encoding, src, dst, 0);
+    };
+    if valid_up_to == bytes.len() {
+        if dst.fallible_assign(src).is_err() {
+            return NS_ERROR_OUT_OF_MEMORY;
+        }
+        return NS_OK;
+    }
+    decode_from_slice_to_nscstring_without_bom_handling(encoding, src, dst, valid_up_to)
+}
+
+fn decode_from_slice_to_nscstring_without_bom_handling(encoding: &'static Encoding,
+                                                       src: &[u8],
+                                                       dst: &mut nsACString,
+                                                       already_validated: usize)
+                                                       -> nsresult {
+    let bytes = src;
+    let mut decoder = encoding.new_decoder_without_bom_handling();
+    let rounded_without_replacement =
+        checked_next_power_of_two(checked_add(already_validated, decoder.max_utf8_buffer_length_without_replacement(bytes.len() - already_validated)));
+    let with_replacement = checked_add(already_validated,
+                                       decoder.max_utf8_buffer_length(bytes.len() -
+                                                                      already_validated));
+    try_dst_set_len!(checked_min(rounded_without_replacement, with_replacement),
+                     dst,
+                     NS_ERROR_OUT_OF_MEMORY);
+
+    if already_validated != 0 {
+        // to_mut() shouldn't fail right after setting length.
+        &mut (dst.to_mut())[..already_validated].copy_from_slice(&bytes[..already_validated]);
+    }
+    let mut total_read = already_validated;
+    let mut total_written = already_validated;
+    let mut total_had_errors = false;
+    loop {
+        // to_mut() shouldn't fail right after setting length.
+        let (result, read, written, had_errors) =
+            decoder.decode_to_utf8(&bytes[total_read..],
+                                   &mut (dst.to_mut())[total_written..],
+                                   true);
+        total_read += read;
+        total_written += written;
+        total_had_errors |= had_errors;
+        match result {
+            CoderResult::InputEmpty => {
+                debug_assert_eq!(total_read, bytes.len());
+                unsafe {
+                    if dst.fallible_set_length(total_written as u32).is_err() {
+                        return NS_ERROR_OUT_OF_MEMORY;
+                    }
+                }
+                if total_had_errors {
+                    return NS_OK_HAD_REPLACEMENTS;
+                }
+                return NS_OK;
+            }
+            CoderResult::OutputFull => {
+                // Allocate for the worst case. That is, we should come
+                // here at most once per invocation of this method.
+                try_dst_set_len!(checked_add(total_written,
+                                             decoder.max_utf8_buffer_length(bytes.len() -
+                                                                            total_read)),
+                                 dst,
+                                 NS_ERROR_OUT_OF_MEMORY);
+                continue;
+            }
+        }
+    }
+}
+
+#[no_mangle]
+pub unsafe extern "C" fn mozilla_encoding_decode_to_nscstring_without_bom_handling_and_without_replacement
+    (encoding: *const Encoding,
+     src: *const nsACString,
+     dst: *mut nsACString)
+     -> nsresult {
+    decode_to_nscstring_without_bom_handling_and_without_replacement(&*encoding, &*src, &mut *dst)
+}
+
+pub fn decode_to_nscstring_without_bom_handling_and_without_replacement(encoding: &'static Encoding, src: &nsACString, dst: &mut nsACString) -> nsresult{
+    let bytes = &src[..];
+    if encoding == UTF_8 {
+        let valid_up_to = Encoding::utf8_valid_up_to(bytes);
+        if valid_up_to == bytes.len() {
+            if dst.fallible_assign(src).is_err() {
+                return NS_ERROR_OUT_OF_MEMORY;
+            }
+            return NS_OK;
+        }
+        return NS_ERROR_UDEC_ILLEGALINPUT;
+    }
+    let valid_up_to = if encoding.is_ascii_compatible() {
+        Encoding::ascii_valid_up_to(bytes)
+    } else if encoding == ISO_2022_JP {
+        Encoding::iso_2022_jp_ascii_valid_up_to(bytes)
+    } else {
+        0
+    };
+    if valid_up_to == bytes.len() {
+        if dst.fallible_assign(src).is_err() {
+            return NS_ERROR_OUT_OF_MEMORY;
+        }
+        return NS_OK;
+    }
+    let mut decoder = encoding.new_decoder_without_bom_handling();
+    try_dst_set_len!(checked_add(valid_up_to,
+                                 decoder.max_utf8_buffer_length_without_replacement(bytes.len() -
+                                                                                    valid_up_to)),
+                     dst,
+                     NS_ERROR_OUT_OF_MEMORY);
+    // to_mut() shouldn't fail right after setting length.
+    let (result, read, written) = {
+        let dest = dst.to_mut();
+        dest[..valid_up_to].copy_from_slice(&bytes[..valid_up_to]);
+        decoder
+            .decode_to_utf8_without_replacement(&src[valid_up_to..], &mut dest[valid_up_to..], true)
+    };
+    match result {
+        DecoderResult::InputEmpty => {
+            debug_assert_eq!(valid_up_to + read, src.len());
+            debug_assert!(valid_up_to + written <= dst.len());
+            unsafe {
+                if dst.fallible_set_length((valid_up_to + written) as u32)
+                       .is_err() {
+                    return NS_ERROR_OUT_OF_MEMORY;
+                }
+            }
+            NS_OK
+        }
+        DecoderResult::Malformed(_, _) => {
+            dst.truncate();
+            NS_ERROR_UDEC_ILLEGALINPUT
+        }
+        DecoderResult::OutputFull => unreachable!(),
+    }
+}
+
+#[no_mangle]
+pub unsafe extern "C" fn mozilla_encoding_encode_from_nscstring(encoding: *mut *const Encoding,
+                                                                src: *const nsACString,
+                                                                dst: *mut nsACString)
+                                                                -> nsresult {
+    let (rv, enc) = encode_from_nscstring(&**encoding, &*src, &mut *dst);
+    *encoding = enc as *const Encoding;
+    rv
+}
+
+pub fn encode_from_nscstring(encoding: &'static Encoding,
+                             src: &nsACString,
+                             dst: &mut nsACString)
+                             -> (nsresult, &'static Encoding) {
+    let output_encoding = encoding.output_encoding();
+    let bytes = &src[..];
+    if output_encoding == UTF_8 {
+        let valid_up_to = Encoding::utf8_valid_up_to(bytes);
+        if valid_up_to == bytes.len() {
+            if dst.fallible_assign(src).is_err() {
+                return (NS_ERROR_OUT_OF_MEMORY, output_encoding);
+            }
+            return (NS_OK, output_encoding);
+        }
+        return (NS_ERROR_UDEC_ILLEGALINPUT, output_encoding);
+    }
+    let valid_up_to = if output_encoding == ISO_2022_JP {
+        Encoding::iso_2022_jp_ascii_valid_up_to(bytes)
+    } else {
+        debug_assert!(output_encoding.is_ascii_compatible());
+        Encoding::ascii_valid_up_to(bytes)
+    };
+    if valid_up_to == bytes.len() {
+        if dst.fallible_assign(src).is_err() {
+            return (NS_ERROR_OUT_OF_MEMORY, output_encoding);
+        }
+        return (NS_OK, output_encoding);
+    }
+
+    // Encoder requires valid UTF-8. Using std instead of encoding_rs
+    // to avoid unsafe blocks.
+    let trail = if let Ok(trail) = ::std::str::from_utf8(&bytes[valid_up_to..]) {
+        trail
+    } else {
+        return (NS_ERROR_UDEC_ILLEGALINPUT, output_encoding);
+    };
+
+    let mut encoder = output_encoding.new_encoder();
+    try_dst_set_len!(checked_add(valid_up_to,
+                    encoder.max_buffer_length_from_utf8_if_no_unmappables(trail.len())), dst, (NS_ERROR_OUT_OF_MEMORY, output_encoding));
+
+    if valid_up_to != 0 {
+        // to_mut() shouldn't fail right after setting length.
+        &mut (dst.to_mut())[..valid_up_to].copy_from_slice(&bytes[..valid_up_to]);
+    }
+
+    // `total_read` tracks `trail` only but `total_written` tracks the overall situation!
+    // This asymmetry is here, because trail is materialized as `str` without resorting
+    // to unsafe code here.
+    let mut total_read = 0;
+    let mut total_written = valid_up_to;
+    let mut total_had_errors = false;
+    loop {
+        let (result, read, written, had_errors) = encoder
+            .encode_from_utf8(&trail[total_read..],
+                              &mut (dst.to_mut())[total_written..],
+                              true);
+        total_read += read;
+        total_written += written;
+        total_had_errors |= had_errors;
+        match result {
+            CoderResult::InputEmpty => {
+                debug_assert_eq!(valid_up_to + total_read, src.len());
+                debug_assert!(total_written <= dst.len());
+                unsafe {
+                    if dst.fallible_set_length(total_written as u32).is_err() {
+                        return (NS_ERROR_OUT_OF_MEMORY, output_encoding);
+                    }
+                }
+                if total_had_errors {
+                    return (NS_OK_HAD_REPLACEMENTS, output_encoding);
+                }
+                return (NS_OK, output_encoding);
+            }
+            CoderResult::OutputFull => {
+                if let Some(needed) =
+                    checked_add(total_written,
+                                encoder
+                                    .max_buffer_length_from_utf8_if_no_unmappables(trail.len() -
+                                                                                   total_read)) {
+                    // Let's round the allocation up in order to avoid repeated
+                    // allocations. Using power-of-two as the approximation of
+                    // available jemalloc buckets, since linking with
+                    // malloc_good_size is messy.
+                    if let Some(with_bookkeeping) = NS_CSTRING_OVERHEAD.checked_add(needed) {
+                        let rounded = with_bookkeeping.next_power_of_two();
+                        let unclowned = rounded - NS_CSTRING_OVERHEAD;
+                        // XPCOM strings use uint32_t for length.
+                        if unclowned <= ::std::u32::MAX as usize {
+                            unsafe {
+                                if dst.fallible_set_length(unclowned as u32).is_ok() {
+                                    continue;
+                                }
+                            }
+                        }
+                    }
+                }
+                return (NS_ERROR_OUT_OF_MEMORY, output_encoding);
+            }
+        }
+    }
+}
+
+#[inline(always)]
+fn checked_add(num: usize, opt: Option<usize>) -> Option<usize> {
+    if let Some(n) = opt {
+        n.checked_add(num)
+    } else {
+        None
+    }
+}
+
+#[inline(always)]
+fn checked_next_power_of_two(opt: Option<usize>) -> Option<usize> {
+    opt.map(|n| n.next_power_of_two())
+}
+
+#[inline(always)]
+fn checked_min(one: Option<usize>, other: Option<usize>) -> Option<usize> {
+    if let Some(a) = one {
+        if let Some(b) = other {
+            Some(::std::cmp::min(a, b))
+        } else {
+            Some(a)
+        }
+    } else {
+        other
+    }
+}
new file mode 100644
--- /dev/null
+++ b/intl/gtest/TestEncoding.cpp
@@ -0,0 +1,73 @@
+/* Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/publicdomain/zero/1.0/ */
+
+#include "gtest/gtest.h"
+
+#include "mozilla/Encoding.h"
+
+#define ENCODING_TEST(name) TEST(EncodingTest, name)
+
+using namespace mozilla;
+
+// These tests mainly test that the C++ interface seems to
+// reach the Rust code. More thorough testing of the back
+// end is done in Rust.
+
+ENCODING_TEST(ForLabel)
+{
+  nsAutoCString label("  uTf-8   ");
+  ASSERT_EQ(Encoding::ForLabel(label), UTF_8_ENCODING);
+  label.AssignLiteral("   cseucpkdfmTjapanese  ");
+  ASSERT_EQ(Encoding::ForLabel(label), EUC_JP_ENCODING);
+}
+
+ENCODING_TEST(ForName)
+{
+  nsAutoCString encoding("UTF-8");
+  ASSERT_EQ(Encoding::ForName(encoding), UTF_8_ENCODING);
+  encoding.AssignLiteral("EUC-JP");
+  ASSERT_EQ(Encoding::ForName(encoding), EUC_JP_ENCODING);
+}
+
+ENCODING_TEST(ForBOM)
+{
+  nsAutoCString data("\xEF\xBB\xBF\x61");
+  const Encoding* encoding;
+  size_t bomLength;
+  Tie(encoding, bomLength) = Encoding::ForBOM(data);
+  ASSERT_EQ(encoding, UTF_8_ENCODING);
+  ASSERT_EQ(bomLength, 3U);
+  data.AssignLiteral("\xFF\xFE");
+  Tie(encoding, bomLength) = Encoding::ForBOM(data);
+  ASSERT_EQ(encoding, UTF_16LE_ENCODING);
+  ASSERT_EQ(bomLength, 2U);
+  data.AssignLiteral("\xFE\xFF");
+  Tie(encoding, bomLength) = Encoding::ForBOM(data);
+  ASSERT_EQ(encoding, UTF_16BE_ENCODING);
+  ASSERT_EQ(bomLength, 2U);
+  data.AssignLiteral("\xEF\xBB");
+  Tie(encoding, bomLength) = Encoding::ForBOM(data);
+  ASSERT_EQ(encoding, nullptr);
+  ASSERT_EQ(bomLength, 0U);
+}
+
+ENCODING_TEST(Name)
+{
+  nsAutoCString name;
+  UTF_8_ENCODING->Name(name);
+  ASSERT_TRUE(name.EqualsLiteral("UTF-8"));
+  GBK_ENCODING->Name(name);
+  ASSERT_TRUE(name.EqualsLiteral("GBK"));
+}
+
+ENCODING_TEST(CanEncodeEverything)
+{
+  ASSERT_TRUE(UTF_8_ENCODING->CanEncodeEverything());
+  ASSERT_FALSE(GB18030_ENCODING->CanEncodeEverything());
+}
+
+ENCODING_TEST(IsAsciiCompatible)
+{
+  ASSERT_TRUE(UTF_8_ENCODING->IsAsciiCompatible());
+  ASSERT_FALSE(ISO_2022_JP_ENCODING->IsAsciiCompatible());
+}
new file mode 100644
--- /dev/null
+++ b/intl/gtest/moz.build
@@ -0,0 +1,11 @@
+# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+UNIFIED_SOURCES += [
+    'TestEncoding.cpp',
+]
+
+FINAL_LIBRARY = 'xul-gtest'
--- a/intl/locale/mac/nsMacCharset.cpp
+++ b/intl/locale/mac/nsMacCharset.cpp
@@ -1,20 +1,17 @@
 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 #include <Carbon/Carbon.h>
 #include "nsIPlatformCharset.h"
-#include "nsCOMPtr.h"
-#include "nsIServiceManager.h"
-#include "nsReadableUtils.h"
+#include "nsString.h"
 #include "nsPlatformCharset.h"
-#include "nsEncoderDecoderUtils.h"
 
 NS_IMPL_ISUPPORTS(nsPlatformCharset, nsIPlatformCharset)
 
 nsPlatformCharset::nsPlatformCharset()
 {
 }
 nsPlatformCharset::~nsPlatformCharset()
 {
--- a/intl/locale/unix/nsUNIXCharset.cpp
+++ b/intl/locale/unix/nsUNIXCharset.cpp
@@ -6,17 +6,16 @@
 #include <locale.h>
 
 #include "mozilla/ArrayUtils.h"
 
 #include "nsIPlatformCharset.h"
 #include "nsUConvPropertySearch.h"
 #include "nsCOMPtr.h"
 #include "nsReadableUtils.h"
-#include "nsEncoderDecoderUtils.h"
 #if HAVE_GNU_LIBC_VERSION_H
 #include <gnu/libc-version.h>
 #endif
 #ifdef HAVE_NL_TYPES_H
 #include <nl_types.h>
 #endif
 #if HAVE_LANGINFO_CODESET
 #include <langinfo.h>
--- a/intl/locale/unix/unixcharset.properties
+++ b/intl/locale/unix/unixcharset.properties
@@ -1,15 +1,15 @@
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 ##
 ## NOTE: THIS FILE IS DEPRECATED
-##       except for those *nix systems that do not support 
+##       except for those *nix systems that do not support
 ##       nl_langinfo(CODESET) this file should not be used
 ##
 ## All platform section
 ##   Put the general locale to charset mapping here.
 ##   If somehow two platform use the same locale name with different
 ##   charset, put the least common one in the platform specific section
 ##   This section have lower priority than the platform specific section
 ##
@@ -508,26 +508,26 @@ th_TH=windows-874
 th_TH.TIS620=windows-874
 th=windows-874
 th_TH.UTF-8=UTF-8
 # RedHat 7 reported by Garaschenko Slava <slava@maze.ambernet.kiev.ua bug 70601
 uk_UA=KOI8-U
 zh=gb18030
 zh_CN=gb18030
 zh_CN.EUC=gb18030
-zh.GBK=gbk
+zh.GBK=GBK
 zh_CN.UTF-8=UTF-8
 zh.UTF-8=UTF-8
 zh_TW.BIG5=Big5
 # saw the following name from news://xcin.linux.org.tw/tlug.cle-devel
 zh_CN.gb18030=gb18030
 # AIX
 ZH_CN=UTF-8
 zh_CN.ugb=gb18030
-zh_CN.GBK=gbk
+zh_CN.GBK=GBK
 zh_HK.big5=Big5
 zh_TW.big5=Big5
 zh_TW.big5@chuyin=Big5
 zh_TW.big5@radical=Big5
 zh_TW.big5@stroke=Big5
 # AIX
 Zh_TW.big5=Big5
 # CLE 0.8
--- a/intl/locale/windows/nsWinCharset.cpp
+++ b/intl/locale/windows/nsWinCharset.cpp
@@ -4,21 +4,18 @@
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 #include "mozilla/ArrayUtils.h"
 
 #include "nsIPlatformCharset.h"
 #include "nsUConvPropertySearch.h"
 #include <windows.h>
 #include "nsWin32Locale.h"
-#include "nsCOMPtr.h"
-#include "nsReadableUtils.h"
-#include "nsServiceManagerUtils.h"
+#include "nsString.h"
 #include "nsPlatformCharset.h"
-#include "nsEncoderDecoderUtils.h"
 
 using namespace mozilla;
 
 static constexpr nsUConvProp kWinCharsets[] = {
 #include "wincharset.properties.h"
 };
 
 NS_IMPL_ISUPPORTS(nsPlatformCharset, nsIPlatformCharset)
--- a/intl/moz.build
+++ b/intl/moz.build
@@ -1,38 +1,51 @@
 # -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
+TEST_DIRS += [
+    'gtest',
+]
+
 DIRS += [
     'hyphenation/hyphen',
     'hyphenation/glue',
     'locale',
     'locales',
     'lwbrk',
     'strres',
     'unicharutil',
 ]
 
 DIRS += [
     'uconv',
     'build',
 ]
 
-with Files("**"):
-    BUG_COMPONENT = ("Core", "Internationalization")
-
-with Files("icu/**"):
-    BUG_COMPONENT = ("Core", "JavaScript: Internationalization API")
-
-with Files("icu-patches/**"):
-    BUG_COMPONENT = ("Core", "JavaScript: Internationalization API")
-
-with Files("tzdata/**"):
-    BUG_COMPONENT = ("Core", "JavaScript: Internationalization API")
-
-with Files("update*"):
-    BUG_COMPONENT = ("Core", "JavaScript: Internationalization API")
-
-with Files("icu_sources_data.py"):
-    BUG_COMPONENT = ("Core", "Build Config")
+EXPORTS.mozilla += [
+    'Encoding.h',
+]
+
+EXPORTS += [
+    '../third_party/rust/encoding_c/include/encoding_rs.h',
+    '../third_party/rust/encoding_c/include/encoding_rs_statics.h',
+]
+
+with Files("**"):
+    BUG_COMPONENT = ("Core", "Internationalization")
+
+with Files("icu/**"):
+    BUG_COMPONENT = ("Core", "JavaScript: Internationalization API")
+
+with Files("icu-patches/**"):
+    BUG_COMPONENT = ("Core", "JavaScript: Internationalization API")
+
+with Files("tzdata/**"):
+    BUG_COMPONENT = ("Core", "JavaScript: Internationalization API")
+
+with Files("update*"):
+    BUG_COMPONENT = ("Core", "JavaScript: Internationalization API")
+
+with Files("icu_sources_data.py"):
+    BUG_COMPONENT = ("Core", "Build Config")
--- a/intl/uconv/moz.build
+++ b/intl/uconv/moz.build
@@ -10,162 +10,24 @@ XPIDL_SOURCES += [
     'nsIScriptableUConv.idl',
     'nsITextToSubURI.idl',
     'nsIUTF8ConverterService.idl',
 ]
 
 XPIDL_MODULE = 'uconv'
 
 EXPORTS += [
-    'nsEncoderDecoderUtils.h',
-    'nsIUnicodeDecoder.h',
-    'nsIUnicodeEncoder.h',
-    'nsNCRFallbackEncoderWrapper.h',
-    'nsUConvCID.h',
-    'nsUCSupport.h',
-    'uconvutil.h',
-    'ucvcn/nsUCvCnCID.h',
-    'ucvja/nsUCVJA2CID.h',
-    'ucvja/nsUCVJACID.h',
-    'ucvko/nsUCvKOCID.h',
-    'ucvlatin/nsUCvLatinCID.h',
+	'nsUConvCID.h',
 ]
 
 UNIFIED_SOURCES += [
     'nsConverterInputStream.cpp',
     'nsConverterOutputStream.cpp',
-    'nsCP1252ToUnicode.cpp',
-    'nsMacRomanToUnicode.cpp',
-    'nsNCRFallbackEncoderWrapper.cpp',
-    'nsReplacementToUnicode.cpp',
     'nsScriptableUConv.cpp',
     'nsTextToSubURI.cpp',
     'nsUConvModule.cpp',
-    'nsUnicodeToCP1252.cpp',
-    'nsUnicodeToISO88591.cpp',
-    'nsUnicodeToMacRoman.cpp',
-    'nsUnicodeToUTF8.cpp',
-    'nsUTF8ConverterService.cpp',
-    'nsUTF8ToUnicode.cpp',
-]
-
-UNIFIED_SOURCES += [
-    'ucvcn/nsGBKConvUtil.cpp',
-    'ucvcn/nsGBKToUnicode.cpp',
-    'ucvcn/nsUnicodeToGBK.cpp',
-]
-
-UNIFIED_SOURCES += [
-    'ucvja/nsJapaneseToUnicode.cpp',
-    'ucvja/nsUnicodeToEUCJP.cpp',
-    'ucvja/nsUnicodeToISO2022JP.cpp',
-    'ucvja/nsUnicodeToSJIS.cpp',
-]
-
-UNIFIED_SOURCES += [
-    'ucvko/nsCP949ToUnicode.cpp',
-    'ucvko/nsUnicodeToCP949.cpp',
-]
-
-UNIFIED_SOURCES += [
-    'ucvlatin/nsCP1250ToUnicode.cpp',
-    'ucvlatin/nsCP1251ToUnicode.cpp',
-    'ucvlatin/nsCP1253ToUnicode.cpp',
-    'ucvlatin/nsCP1254ToUnicode.cpp',
-    'ucvlatin/nsCP1255ToUnicode.cpp',
-    'ucvlatin/nsCP1256ToUnicode.cpp',
-    'ucvlatin/nsCP1257ToUnicode.cpp',
-    'ucvlatin/nsCP1258ToUnicode.cpp',
-    'ucvlatin/nsCP866ToUnicode.cpp',
-    'ucvlatin/nsCP874ToUnicode.cpp',
-    'ucvlatin/nsISO885910ToUnicode.cpp',
-    'ucvlatin/nsISO885913ToUnicode.cpp',
-    'ucvlatin/nsISO885914ToUnicode.cpp',
-    'ucvlatin/nsISO885915ToUnicode.cpp',
-    'ucvlatin/nsISO885916ToUnicode.cpp',
-    'ucvlatin/nsISO88592ToUnicode.cpp',
-    'ucvlatin/nsISO88593ToUnicode.cpp',
-    'ucvlatin/nsISO88594ToUnicode.cpp',
-    'ucvlatin/nsISO88595ToUnicode.cpp',
-    'ucvlatin/nsISO88596ToUnicode.cpp',
-    'ucvlatin/nsISO88597ToUnicode.cpp',
-    'ucvlatin/nsISO88598IToUnicode.cpp',
-    'ucvlatin/nsISO88598ToUnicode.cpp',
-    'ucvlatin/nsKOI8RToUnicode.cpp',
-    'ucvlatin/nsKOI8UToUnicode.cpp',
-    'ucvlatin/nsMacArabicToUnicode.cpp',
-    'ucvlatin/nsMacCEToUnicode.cpp',
-    'ucvlatin/nsMacCroatianToUnicode.cpp',
-    'ucvlatin/nsMacCyrillicToUnicode.cpp',
-    'ucvlatin/nsMacDevanagariToUnicode.cpp',
-    'ucvlatin/nsMacFarsiToUnicode.cpp',
-    'ucvlatin/nsMacGreekToUnicode.cpp',
-    'ucvlatin/nsMacGujaratiToUnicode.cpp',
-    'ucvlatin/nsMacGurmukhiToUnicode.cpp',
-    'ucvlatin/nsMacHebrewToUnicode.cpp',
-    'ucvlatin/nsMacIcelandicToUnicode.cpp',
-    'ucvlatin/nsMacRomanianToUnicode.cpp',
-    'ucvlatin/nsMacTurkishToUnicode.cpp',
-    'ucvlatin/nsUnicodeToCP1250.cpp',
-    'ucvlatin/nsUnicodeToCP1251.cpp',
-    'ucvlatin/nsUnicodeToCP1253.cpp',
-    'ucvlatin/nsUnicodeToCP1254.cpp',
-    'ucvlatin/nsUnicodeToCP1255.cpp',
-    'ucvlatin/nsUnicodeToCP1256.cpp',
-    'ucvlatin/nsUnicodeToCP1257.cpp',
-    'ucvlatin/nsUnicodeToCP1258.cpp',
-    'ucvlatin/nsUnicodeToCP866.cpp',
-    'ucvlatin/nsUnicodeToCP874.cpp',
-    'ucvlatin/nsUnicodeToISO885910.cpp',
-    'ucvlatin/nsUnicodeToISO885913.cpp',
-    'ucvlatin/nsUnicodeToISO885914.cpp',
-    'ucvlatin/nsUnicodeToISO885915.cpp',
-    'ucvlatin/nsUnicodeToISO885916.cpp',
-    'ucvlatin/nsUnicodeToISO88592.cpp',
-    'ucvlatin/nsUnicodeToISO88593.cpp',
-    'ucvlatin/nsUnicodeToISO88594.cpp',
-    'ucvlatin/nsUnicodeToISO88595.cpp',
-    'ucvlatin/nsUnicodeToISO88596.cpp',
-    'ucvlatin/nsUnicodeToISO88597.cpp',
-    'ucvlatin/nsUnicodeToISO88598.cpp',
-    'ucvlatin/nsUnicodeToISO88598I.cpp',
-    'ucvlatin/nsUnicodeToKOI8R.cpp',
-    'ucvlatin/nsUnicodeToKOI8U.cpp',
-    'ucvlatin/nsUnicodeToMacCyrillic.cpp',
-    'ucvlatin/nsUnicodeToUserDefined.cpp',
-    'ucvlatin/nsUnicodeToUTF16.cpp',
-    'ucvlatin/nsUserDefinedToUnicode.cpp',
-    'ucvlatin/nsUTF16ToUnicode.cpp',
-]
-
-UNIFIED_SOURCES += [
-    'ucvtw/nsBIG5Data.cpp',
-    'ucvtw/nsBIG5ToUnicode.cpp',
-    'ucvtw/nsUnicodeToBIG5.cpp',
-]
-
-UNIFIED_SOURCES += [
-    'util/nsUCConstructors.cpp',
-    'util/nsUCSupport.cpp',
-    'util/nsUnicodeDecodeHelper.cpp',
-    'util/nsUnicodeEncodeHelper.cpp',
-    'util/ugen.c',
-    'util/umap.c',
-    'util/uscan.c',
-]
-
-if CONFIG['INTEL_ARCHITECTURE']:
-    SOURCES += ['nsUTF8ToUnicodeSSE2.cpp']
-    SOURCES['nsUTF8ToUnicodeSSE2.cpp'].flags += CONFIG['SSE2_FLAGS']
-
-LOCAL_INCLUDES += [
-    'ucvcn',
-    'ucvja',
-    'ucvko',
-    'ucvlatin',
-    'ucvtw',
-    'util',
+    'nsUTF8ConverterService.cpp'
 ]
 
 FINAL_LIBRARY = 'xul'
 
 if CONFIG['GNU_CXX']:
     CXXFLAGS += ['-Wno-error=shadow']
--- a/intl/uconv/nsConverterInputStream.cpp
+++ b/intl/uconv/nsConverterInputStream.cpp
@@ -3,19 +3,19 @@
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 #include "nsConverterInputStream.h"
 #include "nsIInputStream.h"
 #include "nsReadLine.h"
 #include "nsStreamUtils.h"
 #include <algorithm>
-#include "mozilla/dom/EncodingUtils.h"
+#include "mozilla/Unused.h"
 
-using mozilla::dom::EncodingUtils;
+using namespace mozilla;
 
 #define CONVERTER_BUFFER_SIZE 8192
 
 NS_IMPL_ISUPPORTS(nsConverterInputStream, nsIConverterInputStream,
                   nsIUnicharInputStream, nsIUnicharLineInputStream)
 
 
 NS_IMETHODIMP
@@ -26,42 +26,51 @@ nsConverterInputStream::Init(nsIInputStr
 {
     nsAutoCString label;
     if (!aCharset) {
         label.AssignLiteral("UTF-8");
     } else {
         label = aCharset;
     }
 
-    if (aBufferSize <=0) aBufferSize=CONVERTER_BUFFER_SIZE;
-    
-    // get the decoder
-    nsAutoCString encoding;
-    if (label.EqualsLiteral("UTF-16")) {
-        // Compat with old test cases. Unclear if any extensions really care.
-        encoding.Assign(label);
-    } else if (!EncodingUtils::FindEncodingForLabelNoReplacement(label,
-                                                                 encoding)) {
+    auto encoding = Encoding::ForLabelNoReplacement(label);
+    if (!encoding) {
       return NS_ERROR_UCONV_NOCONV;
     }
-    mConverter = EncodingUtils::DecoderForEncoding(encoding);
- 
-    // set up our buffers
+    // Previously, the implementation auto-switched only
+    // between the two UTF-16 variants and only when
+    // initialized with an endianness-unspecific label.
+    mConverter = encoding->NewDecoder();
+
+    size_t outputBufferSize;
+    if (aBufferSize <= 0) {
+      aBufferSize = CONVERTER_BUFFER_SIZE;
+      outputBufferSize = CONVERTER_BUFFER_SIZE;
+    } else {
+      // NetUtil.jsm assumes that if buffer size equals
+      // the input size, the whole stream will be processed
+      // as one readString. This is not true with encoding_rs,
+      // because encoding_rs might want to see space for a
+      // surrogate pair, so let's compute a larger output
+      // buffer length.
+      CheckedInt<size_t> needed = mConverter->MaxUTF16BufferLength(aBufferSize);
+      if (!needed.isValid()) {
+        return NS_ERROR_OUT_OF_MEMORY;
+      }
+      outputBufferSize = needed.value();
+    }
+
+    // set up our buffers.
     if (!mByteData.SetCapacity(aBufferSize, mozilla::fallible) ||
-        !mUnicharData.SetCapacity(aBufferSize, mozilla::fallible)) {
+        !mUnicharData.SetLength(outputBufferSize, mozilla::fallible)) {
       return NS_ERROR_OUT_OF_MEMORY;
     }
 
     mInput = aStream;
-    mReplacementChar = aReplacementChar;
-    if (!aReplacementChar ||
-        aReplacementChar != mConverter->GetCharacterForUnMapped()) {
-        mConverter->SetInputErrorBehavior(nsIUnicodeDecoder::kOnError_Signal);
-    }
-
+    mErrorsAreFatal = !aReplacementChar;
     return NS_OK;
 }
 
 NS_IMETHODIMP
 nsConverterInputStream::Close()
 {
     nsresult rv = mInput ? mInput->Close() : NS_OK;
     mLineBuffer = nullptr;
@@ -108,36 +117,35 @@ nsConverterInputStream::ReadSegments(nsW
   if (0 == bytesToWrite) {
     // Fill the unichar buffer
     bytesToWrite = Fill(&rv);
     if (bytesToWrite <= 0) {
       *aReadCount = 0;
       return rv;
     }
   }
-  
+
   if (bytesToWrite > aCount)
     bytesToWrite = aCount;
-  
+
   uint32_t bytesWritten;
   uint32_t totalBytesWritten = 0;
 
   while (bytesToWrite) {
     rv = aWriter(this, aClosure,
                  mUnicharData.Elements() + mUnicharDataOffset,
                  totalBytesWritten, bytesToWrite, &bytesWritten);
     if (NS_FAILED(rv)) {
       // don't propagate errors to the caller
       break;
     }
-    
+
     bytesToWrite -= bytesWritten;
     totalBytesWritten += bytesWritten;
     mUnicharDataOffset += bytesWritten;
-    
   }
 
   *aReadCount = totalBytesWritten;
 
   return NS_OK;
 }
 
 NS_IMETHODIMP
@@ -174,69 +182,67 @@ nsConverterInputStream::Fill(nsresult * 
   }
 
   if (NS_FAILED(mLastErrorCode)) {
     // We failed to completely convert last time, and error-recovery
     // is disabled.  We will fare no better this time, so...
     *aErrorCode = mLastErrorCode;
     return 0;
   }
-  
+
   // We assume a many to one conversion and are using equal sizes for
   // the two buffers.  However if an error happens at the very start
   // of a byte buffer we may end up in a situation where n bytes lead
   // to n+1 unicode chars.  Thus we need to keep track of the leftover
   // bytes as we convert.
-  
+
   uint32_t nb;
   *aErrorCode = NS_FillArray(mByteData, mInput, mLeftOverBytes, &nb);
   if (nb == 0 && mLeftOverBytes == 0) {
-    // No more data 
+    // No more data
     *aErrorCode = NS_OK;
     return 0;
   }
 
   NS_ASSERTION(uint32_t(nb) + mLeftOverBytes == mByteData.Length(),
                "mByteData is lying to us somewhere");
 
   // Now convert as much of the byte buffer to unicode as possible
-  mUnicharDataOffset = 0;
+  auto src = AsBytes(MakeSpan(mByteData));
+  auto dst = MakeSpan(mUnicharData);
+  // mUnicharData.Length() is the buffer length, not the fill status.
+  // mUnicharDataLength reflects the current fill status.
   mUnicharDataLength = 0;
-  uint32_t srcConsumed = 0;
-  do {
-    int32_t srcLen = mByteData.Length() - srcConsumed;
-    int32_t dstLen = mUnicharData.Capacity() - mUnicharDataLength;
-    *aErrorCode = mConverter->Convert(mByteData.Elements()+srcConsumed,
-                                      &srcLen,
-                                      mUnicharData.Elements()+mUnicharDataLength,
-                                      &dstLen);
-    mUnicharDataLength += dstLen;
-    // XXX if srcLen is negative, we want to drop the _first_ byte in
-    // the erroneous byte sequence and try again.  This is not quite
-    // possible right now -- see bug 160784
-    srcConsumed += srcLen;
-    if (NS_FAILED(*aErrorCode) && mReplacementChar) {
-      NS_ASSERTION(0 < mUnicharData.Capacity() - mUnicharDataLength,
-                   "Decoder returned an error but filled the output buffer! "
-                   "Should not happen.");
-      mUnicharData.Elements()[mUnicharDataLength++] = mReplacementChar;
-      ++srcConsumed;
-      // XXX this is needed to make sure we don't underrun our buffer;
-      // bug 160784 again
-      srcConsumed = std::max<uint32_t>(srcConsumed, 0);
-      mConverter->Reset();
-    }
-    NS_ASSERTION(srcConsumed <= mByteData.Length(),
-                 "Whoa.  The converter should have returned NS_OK_UDEC_MOREINPUT before this point!");
-  } while (mReplacementChar &&
-           NS_FAILED(*aErrorCode) &&
-           mUnicharData.Capacity() > mUnicharDataLength);
-
-  mLeftOverBytes = mByteData.Length() - srcConsumed;
-
+  // Whenever we convert, mUnicharData is logically empty.
+  mUnicharDataOffset = 0;
+  // Truncation from size_t to uint32_t below is OK, because the sizes
+  // are bounded by the lengths of mByteData and mUnicharData.
+  uint32_t result;
+  size_t read;
+  size_t written;
+  bool hadErrors;
+  // The design of this class is fundamentally bogus in that trailing
+  // errors are ignored. Always passing false as the last argument to
+  // Decode* calls below.
+  if (mErrorsAreFatal) {
+    Tie(result, read, written) =
+      mConverter->DecodeToUTF16WithoutReplacement(src, dst, false);
+  } else {
+    Tie(result, read, written, hadErrors) =
+      mConverter->DecodeToUTF16(src, dst, false);
+  }
+  Unused << hadErrors;
+  mLeftOverBytes = mByteData.Length() - read;
+  mUnicharDataLength = written;
+  if (result == kInputEmpty || result == kOutputFull) {
+    *aErrorCode = NS_OK;
+  } else {
+    MOZ_ASSERT(mErrorsAreFatal, "How come DecodeToUTF16() reported error?");
+    *aErrorCode = NS_ERROR_UDEC_ILLEGALINPUT;
+  }
   return mUnicharDataLength;
 }
 
 NS_IMETHODIMP
 nsConverterInputStream::ReadLine(nsAString& aLine, bool* aResult)
 {
   if (!mLineBuffer) {
     mLineBuffer = new nsLineBuffer<char16_t>;
--- a/intl/uconv/nsConverterInputStream.h
+++ b/intl/uconv/nsConverterInputStream.h
@@ -7,18 +7,18 @@
 #define nsConverterInputStream_h
 
 #include "nsIInputStream.h"
 #include "nsIConverterInputStream.h"
 #include "nsIUnicharLineInputStream.h"
 #include "nsTArray.h"
 #include "nsAutoPtr.h"
 #include "nsCOMPtr.h"
-#include "nsIUnicodeDecoder.h"
 #include "nsReadLine.h"
+#include "mozilla/Encoding.h"
 
 #define NS_CONVERTERINPUTSTREAM_CONTRACTID "@mozilla.org/intl/converter-input-stream;1"
 
 // {2BC2AD62-AD5D-4b7b-A9DB-F74AE203C527}
 #define NS_CONVERTERINPUTSTREAM_CID \
   { 0x2bc2ad62, 0xad5d, 0x4b7b, \
    { 0xa9, 0xdb, 0xf7, 0x4a, 0xe2, 0x3, 0xc5, 0x27 } }
 
@@ -28,37 +28,39 @@ class nsConverterInputStream : public ns
                                public nsIUnicharLineInputStream {
 
  public:
     NS_DECL_ISUPPORTS
     NS_DECL_NSIUNICHARINPUTSTREAM
     NS_DECL_NSIUNICHARLINEINPUTSTREAM
     NS_DECL_NSICONVERTERINPUTSTREAM
 
-    nsConverterInputStream() :
-        mLastErrorCode(NS_OK),
-        mLeftOverBytes(0),
-        mUnicharDataOffset(0),
-        mUnicharDataLength(0),
-        mReplacementChar(DEFAULT_REPLACEMENT_CHARACTER),
-        mLineBuffer(nullptr) { }
+    nsConverterInputStream()
+      : mLastErrorCode(NS_OK)
+      , mLeftOverBytes(0)
+      , mUnicharDataOffset(0)
+      , mUnicharDataLength(0)
+      , mErrorsAreFatal(false)
+      , mLineBuffer(nullptr)
+    {
+    }
 
- private:
+  private:
     virtual ~nsConverterInputStream() { Close(); }
 
     uint32_t Fill(nsresult *aErrorCode);
-    
-    nsCOMPtr<nsIUnicodeDecoder> mConverter;
+
+    mozilla::UniquePtr<mozilla::Decoder> mConverter;
     FallibleTArray<char> mByteData;
     FallibleTArray<char16_t> mUnicharData;
     nsCOMPtr<nsIInputStream> mInput;
 
     nsresult  mLastErrorCode;
     uint32_t  mLeftOverBytes;
     uint32_t  mUnicharDataOffset;
     uint32_t  mUnicharDataLength;
-    char16_t mReplacementChar;
+    bool mErrorsAreFatal;
 
     nsAutoPtr<nsLineBuffer<char16_t> > mLineBuffer;
 };
 
 #endif
 
--- a/intl/uconv/nsConverterOutputStream.cpp
+++ b/intl/uconv/nsConverterOutputStream.cpp
@@ -4,102 +4,88 @@
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 #include "nsCOMPtr.h"
 
 #include "nsIOutputStream.h"
 #include "nsString.h"
 
 #include "nsConverterOutputStream.h"
-#include "nsIUnicodeEncoder.h"
-#include "mozilla/dom/EncodingUtils.h"
+#include "mozilla/Encoding.h"
+#include "mozilla/Unused.h"
 
-using mozilla::dom::EncodingUtils;
+using namespace mozilla;
 
 NS_IMPL_ISUPPORTS(nsConverterOutputStream,
                   nsIUnicharOutputStream,
                   nsIConverterOutputStream)
 
 nsConverterOutputStream::~nsConverterOutputStream()
 {
     Close();
 }
 
 NS_IMETHODIMP
 nsConverterOutputStream::Init(nsIOutputStream* aOutStream,
-                              const char*      aCharset,
-                              uint32_t         aBufferSize /* ignored */,
-                              char16_t        aReplacementChar)
+                              const char* aCharset,
+                              uint32_t aBufferSize /* ignored */,
+                              char16_t aReplacementChar) /* ignored */
 {
     NS_PRECONDITION(aOutStream, "Null output stream!");
 
-    nsAutoCString label;
+    const Encoding* encoding;
     if (!aCharset) {
-        label.AssignLiteral("UTF-8");
+      encoding = UTF_8_ENCODING;
     } else {
-        label = aCharset;
+      encoding = Encoding::ForLabelNoReplacement(MakeStringSpan(aCharset));
+      if (!encoding || encoding == UTF_16LE_ENCODING ||
+          encoding == UTF_16BE_ENCODING) {
+        return NS_ERROR_UCONV_NOCONV;
+      }
     }
 
-    nsAutoCString encoding;
-    if (label.EqualsLiteral("UTF-16")) {
-        // Make sure to output a BOM when UTF-16 requested
-        encoding.Assign(label);
-    } else if (!EncodingUtils::FindEncodingForLabelNoReplacement(label,
-                                                                 encoding)) {
-      return NS_ERROR_UCONV_NOCONV;
-    }
-    mConverter = EncodingUtils::EncoderForEncoding(encoding);
+    mConverter = encoding->NewEncoder();
 
     mOutStream = aOutStream;
 
-    int32_t behaviour = aReplacementChar ? nsIUnicodeEncoder::kOnError_Replace
-                                         : nsIUnicodeEncoder::kOnError_Signal;
-    return mConverter->
-        SetOutputErrorBehavior(behaviour,
-                               nullptr,
-                               aReplacementChar);
+    return NS_OK;
 }
 
 NS_IMETHODIMP
 nsConverterOutputStream::Write(uint32_t aCount, const char16_t* aChars,
                                bool* aSuccess)
 {
     if (!mOutStream) {
         NS_ASSERTION(!mConverter, "Closed streams shouldn't have converters");
         return NS_BASE_STREAM_CLOSED;
     }
-    NS_ASSERTION(mConverter, "Must have a converter when not closed");
-
-    int32_t inLen = aCount;
-
-    int32_t maxLen;
-    nsresult rv = mConverter->GetMaxLength(aChars, inLen, &maxLen);
-    NS_ENSURE_SUCCESS(rv, rv);
-
-    nsAutoCString buf;
-    buf.SetLength(maxLen);
-    if (buf.Length() != (uint32_t) maxLen)
-        return NS_ERROR_OUT_OF_MEMORY;
-
-    int32_t outLen = maxLen;
-    rv = mConverter->Convert(aChars, &inLen, buf.BeginWriting(), &outLen);
-    if (NS_FAILED(rv))
+    MOZ_ASSERT(mConverter, "Must have a converter when not closed");
+    uint8_t buffer[4096];
+    auto dst = MakeSpan(buffer);
+    auto src = MakeSpan(aChars, aCount);
+    for (;;) {
+      uint32_t result;
+      size_t read;
+      size_t written;
+      bool hadErrors;
+      Tie(result, read, written, hadErrors) =
+        mConverter->EncodeFromUTF16(src, dst, false);
+      Unused << hadErrors;
+      src = src.From(read);
+      uint32_t streamWritten;
+      nsresult rv = mOutStream->Write(
+        reinterpret_cast<char*>(dst.Elements()), written, &streamWritten);
+      *aSuccess = NS_SUCCEEDED(rv) && written == streamWritten;
+      if (!(*aSuccess)) {
         return rv;
-    if (rv == NS_ERROR_UENC_NOMAPPING) {
-        // Yes, NS_ERROR_UENC_NOMAPPING is a success code
-        return NS_ERROR_LOSS_OF_SIGNIFICANT_DATA;
+      }
+      if (result == kInputEmpty) {
+        return NS_OK;
+      }
     }
-    NS_ASSERTION((uint32_t) inLen == aCount,
-                 "Converter didn't consume all the data!");
-
-    uint32_t written;
-    rv = mOutStream->Write(buf.get(), outLen, &written);
-    *aSuccess = NS_SUCCEEDED(rv) && written == uint32_t(outLen);
-    return rv;
-
 }
 
 NS_IMETHODIMP
 nsConverterOutputStream::WriteString(const nsAString& aString, bool* aSuccess)
 {
     int32_t inLen = aString.Length();
     nsAString::const_iterator i;
     aString.BeginReading(i);
@@ -107,37 +93,37 @@ nsConverterOutputStream::WriteString(con
 }
 
 NS_IMETHODIMP
 nsConverterOutputStream::Flush()
 {
     if (!mOutStream)
         return NS_OK; // Already closed.
 
-    char buf[1024];
-    int32_t size = sizeof(buf);
-    nsresult rv = mConverter->Finish(buf, &size);
-    NS_ASSERTION(rv != NS_OK_UENC_MOREOUTPUT,
-                 "1024 bytes ought to be enough for everyone");
-    if (NS_FAILED(rv))
-        return rv;
-    if (size == 0)
-        return NS_OK;
-
-    uint32_t written;
-    rv = mOutStream->Write(buf, size, &written);
-    if (NS_FAILED(rv)) {
-        NS_WARNING("Flush() lost data!");
-        return rv;
+    // If we are encoding to ISO-2022-JP, potentially
+    // transition back to the ASCII state. The buffer
+    // needs to be large enough for an additional NCR,
+    // though.
+    uint8_t buffer[12];
+    auto dst = MakeSpan(buffer);
+    Span<char16_t> src(nullptr);
+    uint32_t result;
+    size_t read;
+    size_t written;
+    bool hadErrors;
+    Tie(result, read, written, hadErrors) =
+      mConverter->EncodeFromUTF16(src, dst, true);
+    Unused << hadErrors;
+    MOZ_ASSERT(result == kInputEmpty);
+    uint32_t streamWritten;
+    if (!written) {
+      return NS_OK;
     }
-    if (written != uint32_t(size)) {
-        NS_WARNING("Flush() lost data!");
-        return NS_ERROR_LOSS_OF_SIGNIFICANT_DATA;
-    }
-    return rv;
+    return mOutStream->Write(
+      reinterpret_cast<char*>(dst.Elements()), written, &streamWritten);
 }
 
 NS_IMETHODIMP
 nsConverterOutputStream::Close()
 {
     if (!mOutStream)
         return NS_OK; // Already closed.
 
--- a/intl/uconv/nsConverterOutputStream.h
+++ b/intl/uconv/nsConverterOutputStream.h
@@ -4,18 +4,18 @@
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 #ifndef NSCONVERTEROUTPUTSTREAM_H_
 #define NSCONVERTEROUTPUTSTREAM_H_
 
 #include "nsIConverterOutputStream.h"
 #include "nsCOMPtr.h"
 #include "mozilla/Attributes.h"
+#include "mozilla/Encoding.h"
 
-class nsIUnicodeEncoder;
 class nsIOutputStream;
 
 /* ff8780a5-bbb1-4bc5-8ee7-057e7bc5c925 */
 #define NS_CONVERTEROUTPUTSTREAM_CID \
 { 0xff8780a5, 0xbbb1, 0x4bc5, \
   { 0x8e, 0xe7, 0x05, 0x7e, 0x7b, 0xc5, 0xc9, 0x25 } }
 
 class nsConverterOutputStream final : public nsIConverterOutputStream {
@@ -24,13 +24,13 @@ class nsConverterOutputStream final : pu
 
         NS_DECL_ISUPPORTS
         NS_DECL_NSIUNICHAROUTPUTSTREAM
         NS_DECL_NSICONVERTEROUTPUTSTREAM
 
     private:
         ~nsConverterOutputStream();
 
-        nsCOMPtr<nsIUnicodeEncoder> mConverter;
+        mozilla::UniquePtr<mozilla::Encoder> mConverter;
         nsCOMPtr<nsIOutputStream>   mOutStream;
 };
 
 #endif
--- a/intl/uconv/nsIScriptableUConv.idl
+++ b/intl/uconv/nsIScriptableUConv.idl
@@ -63,21 +63,15 @@ interface nsIScriptableUnicodeConverter 
   nsIInputStream convertToInputStream(in AString aString);
 
   /**
    * Current character set.
    *
    * @throw NS_ERROR_UCONV_NOCONV
    *        The requested charset is not supported.
    */
-  attribute string charset;
+  attribute ACString charset;
 
   /**
-   * Internal use
-   *
-   * When this attribute is set, all encodings may be accessed. Alias
-   * resolution is not performed for non-Encoding Standard encodings.
-   * MailNews callers should perform alias resolution first (e.g. using
-   * nsICharsetConverterManager::getCharsetAlias()) and use the result
-   * with this API.
+   * Meaningless
    */
   attribute boolean isInternal;
 };
--- a/intl/uconv/nsITextToSubURI.idl
+++ b/intl/uconv/nsITextToSubURI.idl
@@ -10,43 +10,43 @@
 // {8B042E22-6F87-11d3-B3C8-00805F8A6670}
 #define NS_TEXTTOSUBURI_CID { 0x8b042e22, 0x6f87, 0x11d3, { 0xb3, 0xc8, 0x0, 0x80, 0x5f, 0x8a, 0x66, 0x70 } }
 #define NS_ITEXTTOSUBURI_CONTRACTID "@mozilla.org/intl/texttosuburi;1"
 %}
 
 [scriptable, uuid(8B042E24-6F87-11d3-B3C8-00805F8A6670)]
 interface nsITextToSubURI : nsISupports
 {
-	string ConvertAndEscape(in string charset, in wstring text);
-	wstring UnEscapeAndConvert(in string charset, in string text);
+	ACString ConvertAndEscape(in ACString charset, in AString text);
+	AString UnEscapeAndConvert(in ACString charset, in ACString text);
 
   /**
    * Unescapes the given URI fragment (for UI purpose only)
-   * Note: 
+   * Note:
    * <ul>
-   *  <li> escaping back the result (unescaped string) is not guaranteed to 
+   *  <li> escaping back the result (unescaped string) is not guaranteed to
    *       give the original escaped string
-   *  <li> In case of a conversion error, the URI fragment (escaped) is 
+   *  <li> In case of a conversion error, the URI fragment (escaped) is
    *       assumed to be in UTF-8 and converted to AString (UTF-16)
    *  <li> In case of successful conversion any resulting character listed
    *       in network.IDN.blacklist_chars (except space) is escaped
    *  <li> Always succeeeds (callers don't need to do error checking)
    * </ul>
    *
    * @param aCharset the charset to convert from
    * @param aURIFragment the URI (or URI fragment) to unescape
    * @return Unescaped aURIFragment  converted to unicode
    */
   AString unEscapeURIForUI(in ACString aCharset, in AUTF8String aURIFragment);
 
   /**
-   * Unescapes only non ASCII characters in the given URI fragment 
-   * note: this method assumes the URI as UTF-8 and fallbacks to the given 
-   * charset if the charset is an ASCII superset 
+   * Unescapes only non ASCII characters in the given URI fragment
+   * note: this method assumes the URI as UTF-8 and fallbacks to the given
+   * charset if the charset is an ASCII superset
    *
    * @param aCharset the charset to convert from
    * @param aURIFragment the URI (or URI fragment) to unescape
    * @return Unescaped aURIFragment  converted to unicode
    * @throws NS_ERROR_UCONV_NOCONV when there is no decoder for aCharset
-   *         or error code of nsIUnicodeDecoder in case of conversion failure
+   *         or NS_ERROR_UDEC_ILLEGALINPUT in case of conversion failure
    */
   AString unEscapeNonAsciiURI(in ACString aCharset, in AUTF8String aURIFragment);
 };
--- a/intl/uconv/nsIUTF8ConverterService.idl
+++ b/intl/uconv/nsIUTF8ConverterService.idl
@@ -6,63 +6,63 @@
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 #include "nsISupports.idl"
 
 [scriptable, uuid(249f52a3-2599-4b00-ba40-0481364831a2)]
 interface nsIUTF8ConverterService : nsISupports
 {
   /**
-   * Ensure that |aString| is encoded in UTF-8.  If not, 
+   * Ensure that |aString| is encoded in UTF-8.  If not,
    * convert to UTF-8 assuming it's encoded in |aCharset|
    * and return the converted string in UTF-8.
    *
    * @param aString a string to  ensure its UTF8ness
    * @param aCharset the charset to convert from if |aString| is not in UTF-8
-   * @param aSkipCheck determines whether or not to skip 'ASCIIness' and 
-   *        'UTF8ness' check. Set this to PR_TRUE only if you suspect that 
-   *        aString can be mistaken for ASCII / UTF-8 but is actually NOT 
+   * @param aSkipCheck determines whether or not to skip 'ASCIIness' and
+   *        'UTF8ness' check. Set this to PR_TRUE only if you suspect that
+   *        aString can be mistaken for ASCII / UTF-8 but is actually NOT
    *        in ASCII / UTF-8 so that aString has to go through the conversion.
    *        skipping ASCIIness/UTF8ness check.
    *        The most common case is the input is in 7bit non-ASCII charsets
    *        like ISO-2022-JP, HZ or UTF-7 (in its original form or
    *        a modified form used in IMAP folder names).
    * @param aAllowSubstitution when true, allow the decoder to substitute
    *        invalid input sequences by replacement characters (defaults to
    *        true)
    * @return the converted string in UTF-8.
    * @throws NS_ERROR_UCONV_NOCONV when there is no decoder for aCharset
-   *         or error code of nsIUnicodeDecoder in case of conversion failure
+   *         or NS_ERROR_UDEC_ILLEGALINPUT in case of conversion failure
    */
 
     [optional_argc]
-    AUTF8String convertStringToUTF8(in ACString aString, 
+    AUTF8String convertStringToUTF8(in ACString aString,
                                     in string   aCharset,
                                     in boolean  aSkipCheck,
                                     [optional] in boolean aAllowSubstitution);
 
 /* XXX : To-be-added. convertStringFromUTF8 */
-   
+
   /**
-   * Ensure that |aSpec| (after URL-unescaping it) is encoded in UTF-8.  
-   * If not,  convert it to UTF-8, assuming it's encoded in |aCharset|,  
+   * Ensure that |aSpec| (after URL-unescaping it) is encoded in UTF-8.
+   * If not,  convert it to UTF-8, assuming it's encoded in |aCharset|,
    * and return the result.
    *
-   * <p>Make sure that all characters outside US-ASCII in your input spec 
-   * are url-escaped if  your spec is not in UTF-8 (before url-escaping) 
+   * <p>Make sure that all characters outside US-ASCII in your input spec
+   * are url-escaped if  your spec is not in UTF-8 (before url-escaping)
    * because the presence of non-ASCII characters is <strong>blindly</strong>
    * regarded as an indication that your input spec is in unescaped UTF-8
    * and it will be returned without further processing. No valid spec
-   * going around in Mozilla code would break this assumption. 
+   * going around in Mozilla code would break this assumption.
    *
    * <p>XXX The above may change in the future depending on the usage pattern.
    *
    * @param aSpec an url-escaped URI spec to  ensure its UTF8ness
    * @param aCharset the charset to convert from if |aSpec| is not in UTF-8
    * @return the converted spec in UTF-8.
    * @throws NS_ERROR_UCONV_NOCONV when there is no decoder for aCharset
-   *         or error code of nsIUnicodeDecoder in case of conversion failure
+   *         or NS_ERROR_UDEC_ILLEGALINPUT in case of conversion failure
    */
 
-    AUTF8String convertURISpecToUTF8(in ACString aSpec, 
+    AUTF8String convertURISpecToUTF8(in ACString aSpec,
                                      in string   aCharset);
 };
 
--- a/intl/uconv/nsScriptableUConv.cpp
+++ b/intl/uconv/nsScriptableUConv.cpp
@@ -1,201 +1,219 @@
+
 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 #include "nsString.h"
 #include "nsIScriptableUConv.h"
 #include "nsScriptableUConv.h"
 #include "nsIStringStream.h"
 #include "nsComponentManagerUtils.h"
-#include "nsIUnicodeDecoder.h"
-#include "nsIUnicodeEncoder.h"
-#include "mozilla/dom/EncodingUtils.h"
 
-using mozilla::dom::EncodingUtils;
+using namespace mozilla;
 
 /* Implementation file */
 NS_IMPL_ISUPPORTS(nsScriptableUnicodeConverter, nsIScriptableUnicodeConverter)
 
 nsScriptableUnicodeConverter::nsScriptableUnicodeConverter()
 : mIsInternal(false)
 {
 }
 
 nsScriptableUnicodeConverter::~nsScriptableUnicodeConverter()
 {
 }
 
-nsresult
-nsScriptableUnicodeConverter::ConvertFromUnicodeWithLength(const nsAString& aSrc,
-                                                           int32_t* aOutLen,
-                                                           char **_retval)
-{
-  if (!mEncoder)
-    return NS_ERROR_FAILURE;
-
-  nsresult rv = NS_OK;
-  int32_t inLength = aSrc.Length();
-  const nsAFlatString& flatSrc = PromiseFlatString(aSrc);
-  rv = mEncoder->GetMaxLength(flatSrc.get(), inLength, aOutLen);
-  if (NS_SUCCEEDED(rv)) {
-    *_retval = (char*)malloc(*aOutLen+1);
-    if (!*_retval)
-      return NS_ERROR_OUT_OF_MEMORY;
-
-    rv = mEncoder->Convert(flatSrc.get(), &inLength, *_retval, aOutLen);
-    if (NS_SUCCEEDED(rv))
-    {
-      (*_retval)[*aOutLen] = '\0';
-      return NS_OK;
-    }
-    free(*_retval);
-  }
-  *_retval = nullptr;
-  return NS_ERROR_FAILURE;
-}
-
 NS_IMETHODIMP
 nsScriptableUnicodeConverter::ConvertFromUnicode(const nsAString& aSrc,
                                                  nsACString& _retval)
 {
-  int32_t len;
-  char* str;
-  nsresult rv = ConvertFromUnicodeWithLength(aSrc, &len, &str);
-  if (NS_SUCCEEDED(rv)) {
-    // No Adopt on nsACString :(
-    if (!_retval.Assign(str, len, mozilla::fallible)) {
-      rv = NS_ERROR_OUT_OF_MEMORY;
-    }
-    free(str);
-  }
-  return rv;
-}
-
-nsresult
-nsScriptableUnicodeConverter::FinishWithLength(char **_retval, int32_t* aLength)
-{
   if (!mEncoder)
     return NS_ERROR_FAILURE;
 
-  int32_t finLength = 32;
+  // We can compute the length without replacement, because the
+  // the replacement is only one byte long and a mappable character
+  // would always output something, i.e. at least one byte.
+  // When encoding to ISO-2022-JP, unmappables shouldn't be able
+  // to cause more escape sequences to be emitted than the mappable
+  // worst case where every input character causes an escape into
+  // a different state.
+  CheckedInt<size_t> needed =
+    mEncoder->MaxBufferLengthFromUTF16WithoutReplacement(aSrc.Length());
+  if (!needed.isValid() || needed.value() > UINT32_MAX) {
+    return NS_ERROR_OUT_OF_MEMORY;
+  }
 
-  *_retval = (char *)malloc(finLength);
-  if (!*_retval)
+  if (!_retval.SetLength(needed.value(), fallible)) {
     return NS_ERROR_OUT_OF_MEMORY;
+  }
 
-  nsresult rv = mEncoder->Finish(*_retval, &finLength);
-  if (NS_SUCCEEDED(rv))
-    *aLength = finLength;
-  else
-    free(*_retval);
-
-  return rv;
-
+  auto src = MakeSpan(aSrc);
+  auto dst = AsWritableBytes(MakeSpan(_retval));
+  size_t totalWritten = 0;
+  for (;;) {
+    uint32_t result;
+    size_t read;
+    size_t written;
+    Tie(result, read, written) =
+      mEncoder->EncodeFromUTF16WithoutReplacement(src, dst, false);
+    if (result != kInputEmpty && result != kOutputFull) {
+      MOZ_RELEASE_ASSERT(written < dst.Length(),
+        "Unmappables with one-byte replacement should not exceed mappable worst case.");
+      dst[written++] = '?';
+    }
+    totalWritten += written;
+    if (result == kInputEmpty) {
+      MOZ_ASSERT(totalWritten <= UINT32_MAX);
+      if (!_retval.SetLength(totalWritten, fallible)) {
+        return NS_ERROR_OUT_OF_MEMORY;
+      }
+      return NS_OK;
+    }
+    src = src.From(read);
+    dst = dst.From(written);
+  }
 }
 
 NS_IMETHODIMP
 nsScriptableUnicodeConverter::Finish(nsACString& _retval)
 {
   // The documentation for this method says it should be called after
   // ConvertFromUnicode(). However, our own tests called it after
   // convertFromByteArray(), i.e. when *decoding*.
   // Assuming that there exists extensions that similarly call
   // this at the wrong time, let's deal. In general, it is a design
   // error for this class to handle conversions in both directions.
   if (!mEncoder) {
     _retval.Truncate();
+    mDecoder->Encoding()->NewDecoderWithBOMRemovalInto(*mDecoder);
     return NS_OK;
   }
-  int32_t len;
-  char* str;
-  nsresult rv = FinishWithLength(&str, &len);
-  if (NS_SUCCEEDED(rv)) {
-    // No Adopt on nsACString :(
-    if (!_retval.Assign(str, len, mozilla::fallible)) {
-      rv = NS_ERROR_OUT_OF_MEMORY;
-    }
-    free(str);
-  }
-  return rv;
+  // If we are encoding to ISO-2022-JP, potentially
+  // transition back to the ASCII state. The buffer
+  // needs to be large enough for an additional NCR,
+  // though.
+  _retval.SetLength(13);
+  Span<char16_t> src(nullptr);
+  uint32_t result;
+  size_t read;
+  size_t written;
+  bool hadErrors;
+  Tie(result, read, written, hadErrors) =
+    mEncoder->EncodeFromUTF16(src, _retval, true);
+  Unused << hadErrors;
+  MOZ_ASSERT(!read);
+  MOZ_ASSERT(result == kInputEmpty);
+  _retval.SetLength(written);
+
+  mDecoder->Encoding()->NewDecoderWithBOMRemovalInto(*mDecoder);
+  mEncoder->Encoding()->NewEncoderInto(*mEncoder);
+  return NS_OK;
 }
 
 NS_IMETHODIMP
 nsScriptableUnicodeConverter::ConvertToUnicode(const nsACString& aSrc, nsAString& _retval)
 {
-  nsACString::const_iterator i;
-  aSrc.BeginReading(i);
-  return ConvertFromByteArray(reinterpret_cast<const uint8_t*>(i.get()),
-                              aSrc.Length(),
-                              _retval);
+  return ConvertFromByteArray(
+    reinterpret_cast<const uint8_t*>(aSrc.BeginReading()),
+    aSrc.Length(),
+    _retval);
 }
 
 NS_IMETHODIMP
 nsScriptableUnicodeConverter::ConvertFromByteArray(const uint8_t* aData,
                                                    uint32_t aCount,
                                                    nsAString& _retval)
 {
   if (!mDecoder)
     return NS_ERROR_FAILURE;
 
-  nsresult rv = NS_OK;
-  int32_t inLength = aCount;
-  int32_t outLength;
-  rv = mDecoder->GetMaxLength(reinterpret_cast<const char*>(aData),
-                              inLength, &outLength);
-  if (NS_SUCCEEDED(rv))
-  {
-    char16_t* buf = (char16_t*)malloc((outLength+1) * sizeof(char16_t));
-    if (!buf)
-      return NS_ERROR_OUT_OF_MEMORY;
+  CheckedInt<size_t> needed = mDecoder->MaxUTF16BufferLength(aCount);
+  if (!needed.isValid() || needed.value() > UINT32_MAX) {
+    return NS_ERROR_OUT_OF_MEMORY;
+  }
+
+  if (!_retval.SetLength(needed.value(), fallible)) {
+    return NS_ERROR_OUT_OF_MEMORY;
+  }
 
-    rv = mDecoder->Convert(reinterpret_cast<const char*>(aData),
-                           &inLength, buf, &outLength);
-    if (NS_SUCCEEDED(rv))
-    {
-      buf[outLength] = 0;
-      if (!_retval.Assign(buf, outLength, mozilla::fallible)) {
-        rv = NS_ERROR_OUT_OF_MEMORY;
-      }
+  auto src = MakeSpan(aData, aCount);
+  uint32_t result;
+  size_t read;
+  size_t written;
+  bool hadErrors;
+  // The UTF-8 decoder used to throw regardless of the error behavior.
+  // Simulating the old behavior for compatibility with legacy callers.
+  // If callers want control over the behavior, they should switch to
+  // TextDecoder.
+  if (mDecoder->Encoding() == UTF_8_ENCODING) {
+    Tie(result, read, written) =
+      mDecoder->DecodeToUTF16WithoutReplacement(src, _retval, false);
+    if (result != kInputEmpty) {
+      return NS_ERROR_UDEC_ILLEGALINPUT;
     }
-    free(buf);
-    return rv;
+  } else {
+    Tie(result, read, written, hadErrors) =
+      mDecoder->DecodeToUTF16(src, _retval, false);
   }
-  return NS_ERROR_FAILURE;
-
+  MOZ_ASSERT(result == kInputEmpty);
+  MOZ_ASSERT(read == aCount);
+  MOZ_ASSERT(written <= needed.value());
+  Unused << hadErrors;
+  if (!_retval.SetLength(written, fallible)) {
+    return NS_ERROR_OUT_OF_MEMORY;
+  }
+  return NS_OK;
 }
 
 NS_IMETHODIMP
 nsScriptableUnicodeConverter::ConvertToByteArray(const nsAString& aString,
                                                  uint32_t* aLen,
                                                  uint8_t** _aData)
 {
-  char* data;
-  int32_t len;
-  nsresult rv = ConvertFromUnicodeWithLength(aString, &len, &data);
-  if (NS_FAILED(rv))
-    return rv;
-  nsXPIDLCString str;
-  str.Adopt(data, len); // NOTE: This uses the XPIDLCString as a byte array
+  if (!mEncoder)
+    return NS_ERROR_FAILURE;
+
+  CheckedInt<size_t> needed =
+    mEncoder->MaxBufferLengthFromUTF16WithoutReplacement(aString.Length());
+  if (!needed.isValid() || needed.value() > UINT32_MAX) {
+    return NS_ERROR_OUT_OF_MEMORY;
+  }
 
-  rv = FinishWithLength(&data, &len);
-  if (NS_FAILED(rv))
-    return rv;
-
-  str.Append(data, len);
-  free(data);
-  // NOTE: this being a byte array, it needs no null termination
-  *_aData = reinterpret_cast<uint8_t*>(malloc(str.Length()));
-  if (!*_aData)
+  uint8_t* data = (uint8_t*)malloc(needed.value());
+  if (!data) {
     return NS_ERROR_OUT_OF_MEMORY;
-  memcpy(*_aData, str.get(), str.Length());
-  *aLen = str.Length();
-  return NS_OK;
+  }
+  auto src = MakeSpan(aString);
+  auto dst = MakeSpan(data, needed.value());
+  size_t totalWritten = 0;
+  for (;;) {
+    uint32_t result;
+    size_t read;
+    size_t written;
+    Tie(result, read, written) =
+      mEncoder->EncodeFromUTF16WithoutReplacement(src, dst, true);
+    if (result != kInputEmpty && result != kOutputFull) {
+      // There's always room for one byte in the case of
+      // an unmappable character, because otherwise
+      // we'd have gotten `kOutputFull`.
+      dst[written++] = '?';
+    }
+    totalWritten += written;
+    if (result == kInputEmpty) {
+      *_aData = data;
+      MOZ_ASSERT(totalWritten <= UINT32_MAX);
+      *aLen = totalWritten;
+      return NS_OK;
+    }
+    src = src.From(read);
+    dst = dst.From(written);
+  }
 }
 
 NS_IMETHODIMP
 nsScriptableUnicodeConverter::ConvertToInputStream(const nsAString& aString,
                                                    nsIInputStream** _retval)
 {
   nsresult rv;
   nsCOMPtr<nsIStringInputStream> inputStream =
@@ -215,30 +233,30 @@ nsScriptableUnicodeConverter::ConvertToI
     return rv;
   }
 
   NS_ADDREF(*_retval = inputStream);
   return rv;
 }
 
 NS_IMETHODIMP
-nsScriptableUnicodeConverter::GetCharset(char * *aCharset)
+nsScriptableUnicodeConverter::GetCharset(nsACString& aCharset)
 {
-  *aCharset = ToNewCString(mCharset);
-  if (!*aCharset)
-    return NS_ERROR_OUT_OF_MEMORY;
-
+  if (!mDecoder) {
+    aCharset.Truncate();
+  } else {
+    mDecoder->Encoding()->Name(aCharset);
+  }
   return NS_OK;
 }
 
 NS_IMETHODIMP
-nsScriptableUnicodeConverter::SetCharset(const char * aCharset)
+nsScriptableUnicodeConverter::SetCharset(const nsACString& aCharset)
 {
-  mCharset.Assign(aCharset);
-  return InitConverter();
+  return InitConverter(aCharset);
 }
 
 NS_IMETHODIMP
 nsScriptableUnicodeConverter::GetIsInternal(bool *aIsInternal)
 {
   *aIsInternal = mIsInternal;
   return NS_OK;
 }
@@ -246,75 +264,23 @@ nsScriptableUnicodeConverter::GetIsInter
 NS_IMETHODIMP
 nsScriptableUnicodeConverter::SetIsInternal(const bool aIsInternal)
 {
   mIsInternal = aIsInternal;
   return NS_OK;
 }
 
 nsresult
-nsScriptableUnicodeConverter::InitConverter()
+nsScriptableUnicodeConverter::InitConverter(const nsACString& aCharset)
 {
   mEncoder = nullptr;
   mDecoder = nullptr;
 
-  nsAutoCString encoding;
-  if (mIsInternal) {
-    // For compatibility with legacy extensions, let's try to see if the label
-    // happens to be ASCII-case-insensitively an encoding. This should allow
-    // for things like "utf-7" and "x-Mac-Hebrew".
-    nsAutoCString contractId;
-    nsAutoCString label(mCharset);
-    EncodingUtils::TrimSpaceCharacters(label);
-    // Let's try in lower case if we didn't get an decoder. E.g. x-mac-ce
-    // and x-imap4-modified-utf7 are all lower case.
-    ToLowerCase(label);
-    if (label.EqualsLiteral("replacement")) {
-      // reject "replacement"
-      return NS_ERROR_UCONV_NOCONV;
-    }
-    contractId.AssignLiteral(NS_UNICODEENCODER_CONTRACTID_BASE);
-    contractId.Append(label);
-    mEncoder = do_CreateInstance(contractId.get());
-    contractId.AssignLiteral(NS_UNICODEDECODER_CONTRACTID_BASE);
-    contractId.Append(label);
-    mDecoder = do_CreateInstance(contractId.get());
-    if (!mDecoder) {
-      // The old code seemed to want both a decoder and an encoder. Since some
-      // internal encodings will be decoder-only in the future, let's relax
-      // this. Note that the other methods check mEncoder for null anyway.
-      // Let's try the upper case. E.g. UTF-7 and ISO-2022-CN have upper
-      // case Gecko-canonical names.
-      ToUpperCase(label);
-      contractId.AssignLiteral(NS_UNICODEENCODER_CONTRACTID_BASE);
-      contractId.Append(label);
-      mEncoder = do_CreateInstance(contractId.get());
-      contractId.AssignLiteral(NS_UNICODEDECODER_CONTRACTID_BASE);
-      contractId.Append(label);
-      mDecoder = do_CreateInstance(contractId.get());
-      // If still no decoder, use the normal non-internal case below.
-    }
+  auto encoding = Encoding::ForLabelNoReplacement(aCharset);
+  if (!encoding) {
+    return NS_ERROR_UCONV_NOCONV;
   }
-
-  if (!mDecoder) {
-    if (!EncodingUtils::FindEncodingForLabelNoReplacement(mCharset, encoding)) {
-      return NS_ERROR_UCONV_NOCONV;
-    }
-    mEncoder = EncodingUtils::EncoderForEncoding(encoding);
-    mDecoder = EncodingUtils::DecoderForEncoding(encoding);
+  if (!(encoding == UTF_16LE_ENCODING || encoding == UTF_16BE_ENCODING)) {
+    mEncoder = encoding->NewEncoder();
   }
-
-  // The UTF-8 decoder used to throw regardless of the error behavior.
-  // Simulating the old behavior for compatibility with legacy callers
-  // (including addons). If callers want a control over the behavior,
-  // they should switch to TextDecoder.
-  if (encoding.EqualsLiteral("UTF-8")) {
-    mDecoder->SetInputErrorBehavior(nsIUnicodeDecoder::kOnError_Signal);
-  }
-
-  if (!mEncoder) {
-    return NS_OK;
-  }
-
-  return mEncoder->SetOutputErrorBehavior(nsIUnicodeEncoder::kOnError_Replace,
-                                          nullptr,
-                                          (char16_t)'?');
+  mDecoder = encoding->NewDecoderWithBOMRemoval();
+  return NS_OK;
 }
--- a/intl/uconv/nsScriptableUConv.h
+++ b/intl/uconv/nsScriptableUConv.h
@@ -4,37 +4,34 @@
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 
 #ifndef __nsScriptableUConv_h_
 #define __nsScriptableUConv_h_
 
 #include "nsIScriptableUConv.h"
 #include "nsCOMPtr.h"
-#include "nsIUnicodeDecoder.h"
-#include "nsIUnicodeEncoder.h"
+#include "mozilla/Encoding.h"
 
 class nsScriptableUnicodeConverter : public nsIScriptableUnicodeConverter
 {
 public:
   NS_DECL_ISUPPORTS
   NS_DECL_NSISCRIPTABLEUNICODECONVERTER
 
   nsScriptableUnicodeConverter();
 
 protected:
   virtual ~nsScriptableUnicodeConverter();
 
-  nsCString mCharset;
-  nsCOMPtr<nsIUnicodeEncoder> mEncoder;
-  nsCOMPtr<nsIUnicodeDecoder> mDecoder;
+  mozilla::UniquePtr<mozilla::Encoder> mEncoder;
+  mozilla::UniquePtr<mozilla::Decoder> mDecoder;
   bool mIsInternal;
 
   nsresult FinishWithLength(char **_retval, int32_t* aLength);
   nsresult ConvertFromUnicodeWithLength(const nsAString& aSrc,
                                         int32_t* aOutLen,
                                         char **_retval);
 
-
-  nsresult InitConverter();
+  nsresult InitConverter(const nsACString& aCharset);
 };
 
 #endif
--- a/intl/uconv/nsTextToSubURI.cpp
+++ b/intl/uconv/nsTextToSubURI.cpp
@@ -1,24 +1,22 @@
 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 #include "nsString.h"
-#include "nsIUnicodeEncoder.h"
-#include "nsIUnicodeDecoder.h"
 #include "nsITextToSubURI.h"
 #include "nsEscape.h"
 #include "nsTextToSubURI.h"
 #include "nsCRT.h"
-#include "mozilla/dom/EncodingUtils.h"
+#include "mozilla/Encoding.h"
 #include "mozilla/Preferences.h"
 #include "nsISupportsPrimitives.h"
 
-using mozilla::dom::EncodingUtils;
+using namespace mozilla;
 
 // Fallback value for the pref "network.IDN.blacklist_chars".
 // UnEscapeURIForUI allows unescaped space; other than that, this is
 // the same as the default "network.IDN.blacklist_chars" value.
 static const char16_t sNetworkIDNBlacklistChars[] =
 {
 /*0x0020,*/
           0x00A0, 0x00BC, 0x00BD, 0x00BE, 0x01C3, 0x02D0, 0x0337,
@@ -39,186 +37,103 @@ static const char16_t sNetworkIDNBlackli
 };
 
 nsTextToSubURI::~nsTextToSubURI()
 {
 }
 
 NS_IMPL_ISUPPORTS(nsTextToSubURI, nsITextToSubURI)
 
-NS_IMETHODIMP  nsTextToSubURI::ConvertAndEscape(
-  const char *charset, const char16_t *text, char **_retval) 
+NS_IMETHODIMP
+nsTextToSubURI::ConvertAndEscape(const nsACString& aCharset,
+                                 const nsAString& aText,
+                                 nsACString& aOut)
 {
-  if (!_retval) {
-    return NS_ERROR_NULL_POINTER;
-  }
-  *_retval = nullptr;
-  nsresult rv = NS_OK;
-  
-  if (!charset) {
-    return NS_ERROR_NULL_POINTER;
-  }
-
-  nsDependentCString label(charset);
-  nsAutoCString encoding;
-  if (!EncodingUtils::FindEncodingForLabelNoReplacement(label, encoding)) {
+  auto encoding = Encoding::ForLabelNoReplacement(aCharset);
+  if (!encoding) {
+    aOut.Truncate();
     return NS_ERROR_UCONV_NOCONV;
   }
-  nsCOMPtr<nsIUnicodeEncoder> encoder =
-    EncodingUtils::EncoderForEncoding(encoding);
-  rv = encoder->SetOutputErrorBehavior(nsIUnicodeEncoder::kOnError_Replace, nullptr, (char16_t)'?');
-  if (NS_SUCCEEDED(rv) ) {
-    char buf[256];
-    char *pBuf = buf;
-    int32_t ulen = text ? NS_strlen(text) : 0;
-    int32_t outlen = 0;
-    if (NS_SUCCEEDED(rv = encoder->GetMaxLength(text, ulen, &outlen))) {
-      if (outlen >= 256) {
-        pBuf = (char*)moz_xmalloc(outlen+1);
-      }
-      if (nullptr == pBuf) {
-        outlen = 255;
-        pBuf = buf;
-      }
-      int32_t bufLen = outlen;
-      if (NS_SUCCEEDED(rv = encoder->Convert(text,&ulen, pBuf, &outlen))) {
-        // put termination characters (e.g. ESC(B of ISO-2022-JP) if necessary
-        int32_t finLen = bufLen - outlen;
-        if (finLen > 0) {
-          if (NS_SUCCEEDED(encoder->Finish((char *)(pBuf+outlen), &finLen))) {
-            outlen += finLen;
-          }
-        }
-        *_retval = nsEscape(pBuf, outlen, nullptr, url_XPAlphas);
-        if (nullptr == *_retval) {
-          rv = NS_ERROR_OUT_OF_MEMORY;
-        }
-      }
-    }
-    if (pBuf != buf) {
-      free(pBuf);
-    }
+  nsresult rv;
+  const Encoding* actualEncoding;
+  nsAutoCString intermediate;
+  Tie(rv, actualEncoding) = encoding->Encode(aText, intermediate);
+  Unused << actualEncoding;
+  if (NS_FAILED(rv)) {
+    aOut.Truncate();
+    return rv;
   }
-  
-  return rv;
+  bool ok = NS_Escape(intermediate, aOut, url_XPAlphas);
+  if (!ok) {
+    aOut.Truncate();
+    return NS_ERROR_OUT_OF_MEMORY;
+  }
+  return NS_OK;
 }
 
-NS_IMETHODIMP  nsTextToSubURI::UnEscapeAndConvert(
-  const char *charset, const char *text, char16_t **_retval) 
+NS_IMETHODIMP
+nsTextToSubURI::UnEscapeAndConvert(const nsACString& aCharset,
+                                   const nsACString& aText,
+                                   nsAString& aOut)
 {
-  if(nullptr == _retval)
-    return NS_ERROR_NULL_POINTER;
-  if(nullptr == text) {
-    // set empty string instead of returning error
-    // due to compatibility for old version
-    text = "";
-  }
-  *_retval = nullptr;
-  nsresult rv = NS_OK;
-  
-  if (!charset) {
-    return NS_ERROR_NULL_POINTER;
-  }
-
-
-  // unescape the string, unescape changes the input
-  char *unescaped = NS_strdup(text);
-  if (nullptr == unescaped)
-    return NS_ERROR_OUT_OF_MEMORY;
-  unescaped = nsUnescape(unescaped);
-  NS_ASSERTION(unescaped, "nsUnescape returned null");
-
-  nsDependentCString label(charset);
-  nsAutoCString encoding;
-  if (!EncodingUtils::FindEncodingForLabelNoReplacement(label, encoding)) {
-    free(unescaped);
+  auto encoding = Encoding::ForLabelNoReplacement(aCharset);
+  if (!encoding) {
+    aOut.Truncate();
     return NS_ERROR_UCONV_NOCONV;
   }
-  nsCOMPtr<nsIUnicodeDecoder> decoder =
-    EncodingUtils::DecoderForEncoding(encoding);
-  char16_t *pBuf = nullptr;
-  int32_t len = strlen(unescaped);
-  int32_t outlen = 0;
-  if (NS_SUCCEEDED(rv = decoder->GetMaxLength(unescaped, len, &outlen))) {
-    pBuf = (char16_t *) moz_xmalloc((outlen+1)*sizeof(char16_t));
-    if (nullptr == pBuf) {
-      rv = NS_ERROR_OUT_OF_MEMORY;
-    } else {
-      if (NS_SUCCEEDED(rv = decoder->Convert(unescaped, &len, pBuf, &outlen))) {
-        pBuf[outlen] = 0;
-        *_retval = pBuf;
-      } else {
-        free(pBuf);
-      }
-    }
+  nsAutoCString unescaped(aText);
+  NS_UnescapeURL(unescaped);
+  auto rv = encoding->DecodeWithoutBOMHandling(unescaped, aOut);
+  if (NS_SUCCEEDED(rv)) {
+    return NS_OK;
   }
-  free(unescaped);
-
   return rv;
 }
 
 static bool statefulCharset(const char *charset)
 {
   // HZ, UTF-7 and the CN and KR ISO-2022 variants are no longer in
   // mozilla-central but keeping them here just in case for the benefit of
   // comm-central.
   if (!nsCRT::strncasecmp(charset, "ISO-2022-", sizeof("ISO-2022-")-1) ||
       !nsCRT::strcasecmp(charset, "UTF-7") ||
       !nsCRT::strcasecmp(charset, "HZ-GB-2312"))
     return true;
 
   return false;
 }
 
-nsresult nsTextToSubURI::convertURItoUnicode(const nsAFlatCString &aCharset,
-                                             const nsAFlatCString &aURI, 
-                                             nsAString &_retval)
+nsresult
+nsTextToSubURI::convertURItoUnicode(const nsAFlatCString& aCharset,
+                                    const nsAFlatCString& aURI,
+                                    nsAString& aOut)
 {
   // check for 7bit encoding the data may not be ASCII after we decode
   bool isStatefulCharset = statefulCharset(aCharset.get());
 
   if (!isStatefulCharset) {
     if (IsASCII(aURI)) {
-      CopyASCIItoUTF16(aURI, _retval);
+      CopyASCIItoUTF16(aURI, aOut);
       return NS_OK;
     }
     if (IsUTF8(aURI)) {
-      CopyUTF8toUTF16(aURI, _retval);
+      CopyUTF8toUTF16(aURI, aOut);
       return NS_OK;
     }
   }
 
   // empty charset could indicate UTF-8, but aURI turns out not to be UTF-8.
   NS_ENSURE_FALSE(aCharset.IsEmpty(), NS_ERROR_INVALID_ARG);
 
-  nsAutoCString encoding;
-  if (!EncodingUtils::FindEncodingForLabelNoReplacement(aCharset, encoding)) {
+  auto encoding = Encoding::ForLabelNoReplacement(aCharset);
+  if (!encoding) {
+    aOut.Truncate();
     return NS_ERROR_UCONV_NOCONV;
   }
-  nsCOMPtr<nsIUnicodeDecoder> unicodeDecoder =
-    EncodingUtils::DecoderForEncoding(encoding);
-
-  unicodeDecoder->SetInputErrorBehavior(nsIUnicodeDecoder::kOnError_Signal);
-
-  int32_t srcLen = aURI.Length();
-  int32_t dstLen;
-  nsresult rv = unicodeDecoder->GetMaxLength(aURI.get(), srcLen, &dstLen);
-  NS_ENSURE_SUCCESS(rv, rv);
-
-  char16_t *ustr = (char16_t *) moz_xmalloc(dstLen * sizeof(char16_t));
-  NS_ENSURE_TRUE(ustr, NS_ERROR_OUT_OF_MEMORY);
-
-  rv = unicodeDecoder->Convert(aURI.get(), &srcLen, ustr, &dstLen);
-
-  if (NS_SUCCEEDED(rv))
-    _retval.Assign(ustr, dstLen);
-  
-  free(ustr);
-
-  return rv;
+  return encoding->DecodeWithoutBOMHandlingAndWithoutReplacement(aURI, aOut);
 }
 
 NS_IMETHODIMP  nsTextToSubURI::UnEscapeURIForUI(const nsACString & aCharset, 
                                                 const nsACString &aURIFragment, 
                                                 nsAString &_retval)
 {
   nsAutoCString unescapedSpec;
   // skip control octets (0x00 - 0x1f and 0x7f) when unescaping
--- a/intl/uconv/nsUConvModule.cpp
+++ b/intl/uconv/nsUConvModule.cpp
@@ -1,582 +1,52 @@
 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 #include "mozilla/ModuleUtils.h"
-#include "nsEncoderDecoderUtils.h"
-#include "nsIUnicodeDecoder.h"
-#include "nsIUnicodeEncoder.h"
 
-#include "nsUConvCID.h"
 #include "nsTextToSubURI.h"
 #include "nsUTF8ConverterService.h"
 #include "nsConverterInputStream.h"
 #include "nsConverterOutputStream.h"
 #include "nsScriptableUConv.h"
 #include "nsIOutputStream.h"
 #include "nsITextToSubURI.h"
-
-#include "nsISO88591ToUnicode.h"
-#include "nsCP1252ToUnicode.h"
-#include "nsMacRomanToUnicode.h"
-#include "nsReplacementToUnicode.h"
-#include "nsUTF8ToUnicode.h"
-#include "nsUnicodeToISO88591.h"
-#include "nsUnicodeToCP1252.h"
-#include "nsUnicodeToMacRoman.h"
-#include "nsUnicodeToUTF8.h"
-
-// ucvlatin
-#include "nsUCvLatinCID.h"
-#include "nsISO88592ToUnicode.h"
-#include "nsISO88593ToUnicode.h"
-#include "nsISO88594ToUnicode.h"
-#include "nsISO88595ToUnicode.h"
-#include "nsISO88596ToUnicode.h"
-#include "nsISO88597ToUnicode.h"
-#include "nsISO88598ToUnicode.h"
-#include "nsISO88598IToUnicode.h"
-#include "nsISO885910ToUnicode.h"
-#include "nsISO885913ToUnicode.h"
-#include "nsISO885914ToUnicode.h"
-#include "nsISO885915ToUnicode.h"
-#include "nsISO885916ToUnicode.h"
-#include "nsCP1250ToUnicode.h"
-#include "nsCP1251ToUnicode.h"
-#include "nsCP1253ToUnicode.h"
-#include "nsCP1254ToUnicode.h"
-#include "nsCP1255ToUnicode.h"
-#include "nsCP1256ToUnicode.h"
-#include "nsCP1257ToUnicode.h"
-#include "nsCP1258ToUnicode.h"
-#include "nsCP874ToUnicode.h"
-#include "nsCP866ToUnicode.h"
-#include "nsKOI8RToUnicode.h"
-#include "nsKOI8UToUnicode.h"
-#include "nsMacCEToUnicode.h"
-#include "nsMacGreekToUnicode.h"
-#include "nsMacTurkishToUnicode.h"
-#include "nsMacCroatianToUnicode.h"
-#include "nsMacRomanianToUnicode.h"
-#include "nsMacCyrillicToUnicode.h"
-#include "nsMacIcelandicToUnicode.h"
-#include "nsUTF16ToUnicode.h"
-#include "nsUserDefinedToUnicode.h"
-#include "nsUnicodeToISO88592.h"
-#include "nsUnicodeToISO88593.h"
-#include "nsUnicodeToISO88594.h"
-#include "nsUnicodeToISO88595.h"
-#include "nsUnicodeToISO88596.h"
-#include "nsUnicodeToISO88597.h"
-#include "nsUnicodeToISO88598.h"
-#include "nsUnicodeToISO88598I.h"
-#include "nsUnicodeToISO885910.h"
-#include "nsUnicodeToISO885913.h"
-#include "nsUnicodeToISO885914.h"
-#include "nsUnicodeToISO885915.h"
-#include "nsUnicodeToISO885916.h"
-#include "nsUnicodeToCP1250.h"
-#include "nsUnicodeToCP1251.h"
-#include "nsUnicodeToCP1253.h"
-#include "nsUnicodeToCP1254.h"
-#include "nsUnicodeToCP1255.h"
-#include "nsUnicodeToCP1256.h"
-#include "nsUnicodeToCP1257.h"
-#include "nsUnicodeToCP1258.h"
-#include "nsUnicodeToCP874.h"
-#include "nsUnicodeToCP866.h"
-#include "nsUnicodeToKOI8R.h"
-#include "nsUnicodeToKOI8U.h"
-#include "nsUnicodeToMacCyrillic.h"
-#include "nsUnicodeToUTF16.h"
-#include "nsUnicodeToUserDefined.h"
-#include "nsMacArabicToUnicode.h"
-#include "nsMacDevanagariToUnicode.h"
-#include "nsMacFarsiToUnicode.h"
-#include "nsMacGujaratiToUnicode.h"
-#include "nsMacGurmukhiToUnicode.h"
-#include "nsMacHebrewToUnicode.h"
-
-// ucvja
-#include "nsUCVJACID.h"
-#include "nsUCVJA2CID.h"
-#include "nsUCVJADll.h"
-#include "nsJapaneseToUnicode.h"
-#include "nsUnicodeToSJIS.h"
-#include "nsUnicodeToEUCJP.h"
-#include "nsUnicodeToISO2022JP.h"
-
-// ucvtw
-#include "nsBIG5ToUnicode.h"
-#include "nsUnicodeToBIG5.h"
-
-// ucvko
-#include "nsUCvKOCID.h"
-#include "nsUCvKODll.h"
-#include "nsCP949ToUnicode.h"
-#include "nsUnicodeToCP949.h"
-
-// ucvcn
-#include "nsUCvCnCID.h"
-#include "nsGBKToUnicode.h"
-#include "nsUnicodeToGBK.h"
-#include "gbku.h"
-
-NS_CONVERTER_REGISTRY_START
-NS_UCONV_REG_UNREG("ISO-8859-1", NS_ISO88591TOUNICODE_CID, NS_UNICODETOISO88591_CID)
-NS_UCONV_REG_UNREG("windows-1252", NS_CP1252TOUNICODE_CID, NS_UNICODETOCP1252_CID)
-NS_UCONV_REG_UNREG("macintosh", NS_MACROMANTOUNICODE_CID, NS_UNICODETOMACROMAN_CID)
-NS_UCONV_REG_UNREG("UTF-8", NS_UTF8TOUNICODE_CID, NS_UNICODETOUTF8_CID)
-NS_UCONV_REG_UNREG("replacement", NS_REPLACEMENTTOUNICODE_CID, NS_UNICODETOUTF8_CID)
-
-  // ucvlatin
-NS_UCONV_REG_UNREG("ISO-8859-2", NS_ISO88592TOUNICODE_CID, NS_UNICODETOISO88592_CID)
-NS_UCONV_REG_UNREG("ISO-8859-3", NS_ISO88593TOUNICODE_CID, NS_UNICODETOISO88593_CID)
-NS_UCONV_REG_UNREG("ISO-8859-4", NS_ISO88594TOUNICODE_CID, NS_UNICODETOISO88594_CID)
-NS_UCONV_REG_UNREG("ISO-8859-5", NS_ISO88595TOUNICODE_CID, NS_UNICODETOISO88595_CID)
-NS_UCONV_REG_UNREG("ISO-8859-6", NS_ISO88596TOUNICODE_CID, NS_UNICODETOISO88596_CID)
-NS_UCONV_REG_UNREG("ISO-8859-7", NS_ISO88597TOUNICODE_CID, NS_UNICODETOISO88597_CID)
-NS_UCONV_REG_UNREG("ISO-8859-8", NS_ISO88598TOUNICODE_CID, NS_UNICODETOISO88598_CID)
-NS_UCONV_REG_UNREG("ISO-8859-8-I", NS_ISO88598ITOUNICODE_CID, NS_UNICODETOISO88598I_CID)
-NS_UCONV_REG_UNREG("ISO-8859-10", NS_ISO885910TOUNICODE_CID, NS_UNICODETOISO885910_CID)
-NS_UCONV_REG_UNREG("ISO-8859-13", NS_ISO885913TOUNICODE_CID, NS_UNICODETOISO885913_CID)
-NS_UCONV_REG_UNREG("ISO-8859-14", NS_ISO885914TOUNICODE_CID, NS_UNICODETOISO885914_CID)
-NS_UCONV_REG_UNREG("ISO-8859-15", NS_ISO885915TOUNICODE_CID, NS_UNICODETOISO885915_CID)
-NS_UCONV_REG_UNREG("ISO-8859-16", NS_ISO885916TOUNICODE_CID, NS_UNICODETOISO885916_CID)
-NS_UCONV_REG_UNREG("windows-1250", NS_CP1250TOUNICODE_CID, NS_UNICODETOCP1250_CID)
-NS_UCONV_REG_UNREG("windows-1251", NS_CP1251TOUNICODE_CID, NS_UNICODETOCP1251_CID)
-NS_UCONV_REG_UNREG("windows-1253", NS_CP1253TOUNICODE_CID, NS_UNICODETOCP1253_CID)
-NS_UCONV_REG_UNREG("windows-1254", NS_CP1254TOUNICODE_CID, NS_UNICODETOCP1254_CID)
-NS_UCONV_REG_UNREG("windows-1255", NS_CP1255TOUNICODE_CID, NS_UNICODETOCP1255_CID)
-NS_UCONV_REG_UNREG("windows-1256", NS_CP1256TOUNICODE_CID, NS_UNICODETOCP1256_CID)
-NS_UCONV_REG_UNREG("windows-1257", NS_CP1257TOUNICODE_CID, NS_UNICODETOCP1257_CID)
-NS_UCONV_REG_UNREG("windows-1258", NS_CP1258TOUNICODE_CID, NS_UNICODETOCP1258_CID)
-NS_UCONV_REG_UNREG("windows-874", NS_CP874TOUNICODE_CID, NS_UNICODETOCP874_CID)
-NS_UCONV_REG_UNREG("IBM866", NS_CP866TOUNICODE_CID, NS_UNICODETOCP866_CID)
-NS_UCONV_REG_UNREG("KOI8-R", NS_KOI8RTOUNICODE_CID, NS_UNICODETOKOI8R_CID)
-NS_UCONV_REG_UNREG("KOI8-U", NS_KOI8UTOUNICODE_CID, NS_UNICODETOKOI8U_CID)
-NS_UCONV_REG_UNREG_DECODER("x-mac-ce", NS_MACCETOUNICODE_CID)
-NS_UCONV_REG_UNREG_DECODER("x-mac-greek", NS_MACGREEKTOUNICODE_CID)
-NS_UCONV_REG_UNREG_DECODER("x-mac-turkish", NS_MACTURKISHTOUNICODE_CID)
-NS_UCONV_REG_UNREG_DECODER("x-mac-croatian", NS_MACCROATIANTOUNICODE_CID)
-NS_UCONV_REG_UNREG_DECODER("x-mac-romanian", NS_MACROMANIANTOUNICODE_CID)
-NS_UCONV_REG_UNREG("x-mac-cyrillic", NS_MACCYRILLICTOUNICODE_CID, NS_UNICODETOMACCYRILLIC_CID)
-NS_UCONV_REG_UNREG_DECODER("x-mac-icelandic", NS_MACICELANDICTOUNICODE_CID)
-NS_UCONV_REG_UNREG("UTF-16", NS_UTF16TOUNICODE_CID, NS_UNICODETOUTF16_CID)
-NS_UCONV_REG_UNREG("UTF-16BE", NS_UTF16BETOUNICODE_CID, NS_UNICODETOUTF16BE_CID)
-NS_UCONV_REG_UNREG("UTF-16LE", NS_UTF16LETOUNICODE_CID, NS_UNICODETOUTF16LE_CID)
-NS_UCONV_REG_UNREG("x-user-defined", NS_USERDEFINEDTOUNICODE_CID, NS_UNICODETOUSERDEFINED_CID)
-NS_UCONV_REG_UNREG_DECODER("x-mac-arabic" , NS_MACARABICTOUNICODE_CID)
-NS_UCONV_REG_UNREG_DECODER("x-mac-devanagari" , NS_MACDEVANAGARITOUNICODE_CID)
-NS_UCONV_REG_UNREG_DECODER("x-mac-farsi" , NS_MACFARSITOUNICODE_CID)
-NS_UCONV_REG_UNREG_DECODER("x-mac-gurmukhi" , NS_MACGURMUKHITOUNICODE_CID)
-NS_UCONV_REG_UNREG_DECODER("x-mac-gujarati" , NS_MACGUJARATITOUNICODE_CID)
-NS_UCONV_REG_UNREG_DECODER("x-mac-hebrew" , NS_MACHEBREWTOUNICODE_CID)
-
-    // ucvja
-NS_UCONV_REG_UNREG("Shift_JIS", NS_SJISTOUNICODE_CID, NS_UNICODETOSJIS_CID)
-NS_UCONV_REG_UNREG("ISO-2022-JP", NS_ISO2022JPTOUNICODE_CID, NS_UNICODETOISO2022JP_CID)
-NS_UCONV_REG_UNREG("EUC-JP", NS_EUCJPTOUNICODE_CID, NS_UNICODETOEUCJP_CID)
-
-    // ucvtw
-NS_UCONV_REG_UNREG("Big5", NS_BIG5TOUNICODE_CID, NS_UNICODETOBIG5_CID)
-
-    // ucvko
-NS_UCONV_REG_UNREG("EUC-KR", NS_EUCKRTOUNICODE_CID, NS_UNICODETOEUCKR_CID)
-
-// ucvcn
-NS_UCONV_REG_UNREG("gbk", NS_GBKTOUNICODE_CID, NS_UNICODETOGBK_CID)
-NS_UCONV_REG_UNREG("gb18030", NS_GB18030TOUNICODE_CID, NS_UNICODETOGB18030_CID)
-  
-NS_CONVERTER_REGISTRY_END
-
-NS_GENERIC_FACTORY_CONSTRUCTOR(nsUnicodeToUTF8)
-NS_GENERIC_FACTORY_CONSTRUCTOR(nsUTF8ToUnicode)
-NS_GENERIC_FACTORY_CONSTRUCTOR(nsReplacementToUnicode)
-
-// ucvlatin
-NS_GENERIC_FACTORY_CONSTRUCTOR(nsUTF16ToUnicode)
-NS_GENERIC_FACTORY_CONSTRUCTOR(nsUTF16BEToUnicode)
-NS_GENERIC_FACTORY_CONSTRUCTOR(nsUTF16LEToUnicode)
-NS_GENERIC_FACTORY_CONSTRUCTOR(nsUnicodeToUTF16BE)
-NS_GENERIC_FACTORY_CONSTRUCTOR(nsUnicodeToUTF16LE)
-NS_GENERIC_FACTORY_CONSTRUCTOR(nsUnicodeToUTF16)
-
-// ucvja
-NS_GENERIC_FACTORY_CONSTRUCTOR(nsShiftJISToUnicode)
-NS_GENERIC_FACTORY_CONSTRUCTOR(nsEUCJPToUnicodeV2)
-NS_GENERIC_FACTORY_CONSTRUCTOR(nsISO2022JPToUnicodeV2)
-NS_GENERIC_FACTORY_CONSTRUCTOR(nsUnicodeToISO2022JP)
-
-// ucvtw
-NS_GENERIC_FACTORY_CONSTRUCTOR(nsBIG5ToUnicode)
-NS_GENERIC_FACTORY_CONSTRUCTOR(nsUnicodeToBIG5)
-
-// ucvko
-
-// ucvcn
-NS_GENERIC_FACTORY_CONSTRUCTOR(nsUnicodeToGBK)
-NS_GENERIC_FACTORY_CONSTRUCTOR(nsGB18030ToUnicode)
-NS_GENERIC_FACTORY_CONSTRUCTOR(nsUnicodeToGB18030)
-
-
-//----------------------------------------------------------------------------
-// Global functions and data [declaration]
-
-// ucvja
-const uint16_t g_uf0201Mapping[] = {
-#include "jis0201.uf"
-};
-
-const uint16_t g_uf0201GLMapping[] = {
-#include "jis0201gl.uf"
-};
-
-const uint16_t g_uf0208Mapping[] = {
-#include "jis0208.uf"
-};
-
-const uint16_t g_uf0208extMapping[] = {
-#include "jis0208ext.uf"
-};
-
-const uint16_t g_ASCIIMappingTable[] = {
-  0x0001, 0x0004, 0x0005, 0x0008, 0x0000, 0x0000, 0x007F, 0x0000
-};
-
-// ucvko
-const uint16_t g_utKSC5601Mapping[] = {
-#include "u20kscgl.ut"
-};
-
-const uint16_t g_ufKSC5601Mapping[] = {
-#include "u20kscgl.uf"
-};
-
-const uint16_t g_HangulNullMapping[] ={
-  0x0001, 0x0004, 0x0005, 0x0008, 0x0000, 0xAC00, 0xD7A3, 0xAC00
-};
+#include "nsUConvCID.h"
 
 NS_GENERIC_FACTORY_CONSTRUCTOR(nsTextToSubURI)
 NS_GENERIC_FACTORY_CONSTRUCTOR(nsUTF8ConverterService)
 NS_GENERIC_FACTORY_CONSTRUCTOR(nsConverterInputStream)
 NS_GENERIC_FACTORY_CONSTRUCTOR(nsConverterOutputStream)
 NS_GENERIC_FACTORY_CONSTRUCTOR(nsScriptableUnicodeConverter)
 
 NS_DEFINE_NAMED_CID(NS_TEXTTOSUBURI_CID);
 NS_DEFINE_NAMED_CID(NS_CONVERTERINPUTSTREAM_CID);
 NS_DEFINE_NAMED_CID(NS_CONVERTEROUTPUTSTREAM_CID);
 NS_DEFINE_NAMED_CID(NS_ISCRIPTABLEUNICODECONVERTER_CID);
 NS_DEFINE_NAMED_CID(NS_UTF8CONVERTERSERVICE_CID);
-NS_DEFINE_NAMED_CID(NS_ISO88591TOUNICODE_CID);
-NS_DEFINE_NAMED_CID(NS_CP1252TOUNICODE_CID);
-NS_DEFINE_NAMED_CID(NS_MACROMANTOUNICODE_CID);
-NS_DEFINE_NAMED_CID(NS_UTF8TOUNICODE_CID);
-NS_DEFINE_NAMED_CID(NS_REPLACEMENTTOUNICODE_CID);
-NS_DEFINE_NAMED_CID(NS_UNICODETOISO88591_CID);
-NS_DEFINE_NAMED_CID(NS_UNICODETOCP1252_CID);
-NS_DEFINE_NAMED_CID(NS_UNICODETOMACROMAN_CID);
-NS_DEFINE_NAMED_CID(NS_UNICODETOUTF8_CID);
-NS_DEFINE_NAMED_CID(NS_ISO88592TOUNICODE_CID);
-NS_DEFINE_NAMED_CID(NS_ISO88593TOUNICODE_CID);
-NS_DEFINE_NAMED_CID(NS_ISO88594TOUNICODE_CID);
-NS_DEFINE_NAMED_CID(NS_ISO88595TOUNICODE_CID);
-NS_DEFINE_NAMED_CID(NS_ISO88596TOUNICODE_CID);
-NS_DEFINE_NAMED_CID(NS_ISO88597TOUNICODE_CID);
-NS_DEFINE_NAMED_CID(NS_ISO88598TOUNICODE_CID);
-NS_DEFINE_NAMED_CID(NS_ISO88598ITOUNICODE_CID);
-NS_DEFINE_NAMED_CID(NS_ISO885910TOUNICODE_CID);
-NS_DEFINE_NAMED_CID(NS_ISO885913TOUNICODE_CID);
-NS_DEFINE_NAMED_CID(NS_ISO885914TOUNICODE_CID);
-NS_DEFINE_NAMED_CID(NS_ISO885915TOUNICODE_CID);
-NS_DEFINE_NAMED_CID(NS_ISO885916TOUNICODE_CID);
-NS_DEFINE_NAMED_CID(NS_CP1250TOUNICODE_CID);
-NS_DEFINE_NAMED_CID(NS_CP1251TOUNICODE_CID);
-NS_DEFINE_NAMED_CID(NS_CP1253TOUNICODE_CID);
-NS_DEFINE_NAMED_CID(NS_CP1254TOUNICODE_CID);
-NS_DEFINE_NAMED_CID(NS_CP1255TOUNICODE_CID);
-NS_DEFINE_NAMED_CID(NS_CP1256TOUNICODE_CID);
-NS_DEFINE_NAMED_CID(NS_CP1257TOUNICODE_CID);
-NS_DEFINE_NAMED_CID(NS_CP1258TOUNICODE_CID);
-NS_DEFINE_NAMED_CID(NS_CP874TOUNICODE_CID);
-NS_DEFINE_NAMED_CID(NS_CP866TOUNICODE_CID);
-NS_DEFINE_NAMED_CID(NS_KOI8RTOUNICODE_CID);
-NS_DEFINE_NAMED_CID(NS_KOI8UTOUNICODE_CID);
-NS_DEFINE_NAMED_CID(NS_MACCETOUNICODE_CID);
-NS_DEFINE_NAMED_CID(NS_MACGREEKTOUNICODE_CID);
-NS_DEFINE_NAMED_CID(NS_MACTURKISHTOUNICODE_CID);
-NS_DEFINE_NAMED_CID(NS_MACCROATIANTOUNICODE_CID);
-NS_DEFINE_NAMED_CID(NS_MACROMANIANTOUNICODE_CID);
-NS_DEFINE_NAMED_CID(NS_MACCYRILLICTOUNICODE_CID);
-NS_DEFINE_NAMED_CID(NS_MACICELANDICTOUNICODE_CID);
-NS_DEFINE_NAMED_CID(NS_UTF16TOUNICODE_CID);
-NS_DEFINE_NAMED_CID(NS_UTF16BETOUNICODE_CID);
-NS_DEFINE_NAMED_CID(NS_UTF16LETOUNICODE_CID);
-NS_DEFINE_NAMED_CID(NS_USERDEFINEDTOUNICODE_CID);
-NS_DEFINE_NAMED_CID(NS_MACARABICTOUNICODE_CID);
-NS_DEFINE_NAMED_CID(NS_MACDEVANAGARITOUNICODE_CID);
-NS_DEFINE_NAMED_CID(NS_MACFARSITOUNICODE_CID);
-NS_DEFINE_NAMED_CID(NS_MACGURMUKHITOUNICODE_CID);
-NS_DEFINE_NAMED_CID(NS_MACGUJARATITOUNICODE_CID);
-NS_DEFINE_NAMED_CID(NS_MACHEBREWTOUNICODE_CID);
-NS_DEFINE_NAMED_CID(NS_UNICODETOISO88592_CID);
-NS_DEFINE_NAMED_CID(NS_UNICODETOISO88593_CID);
-NS_DEFINE_NAMED_CID(NS_UNICODETOISO88594_CID);
-NS_DEFINE_NAMED_CID(NS_UNICODETOISO88595_CID);
-NS_DEFINE_NAMED_CID(NS_UNICODETOISO88596_CID);
-NS_DEFINE_NAMED_CID(NS_UNICODETOISO88597_CID);
-NS_DEFINE_NAMED_CID(NS_UNICODETOISO88598_CID);
-NS_DEFINE_NAMED_CID(NS_UNICODETOISO88598I_CID);
-NS_DEFINE_NAMED_CID(NS_UNICODETOISO885910_CID);
-NS_DEFINE_NAMED_CID(NS_UNICODETOISO885913_CID);
-NS_DEFINE_NAMED_CID(NS_UNICODETOISO885914_CID);
-NS_DEFINE_NAMED_CID(NS_UNICODETOISO885915_CID);
-NS_DEFINE_NAMED_CID(NS_UNICODETOISO885916_CID);
-NS_DEFINE_NAMED_CID(NS_UNICODETOCP1250_CID);
-NS_DEFINE_NAMED_CID(NS_UNICODETOCP1251_CID);
-NS_DEFINE_NAMED_CID(NS_UNICODETOCP1253_CID);
-NS_DEFINE_NAMED_CID(NS_UNICODETOCP1254_CID);
-NS_DEFINE_NAMED_CID(NS_UNICODETOCP1255_CID);
-NS_DEFINE_NAMED_CID(NS_UNICODETOCP1256_CID);
-NS_DEFINE_NAMED_CID(NS_UNICODETOCP1257_CID);
-NS_DEFINE_NAMED_CID(NS_UNICODETOCP1258_CID);
-NS_DEFINE_NAMED_CID(NS_UNICODETOCP874_CID);
-NS_DEFINE_NAMED_CID(NS_UNICODETOCP866_CID);
-NS_DEFINE_NAMED_CID(NS_UNICODETOKOI8R_CID);
-NS_DEFINE_NAMED_CID(NS_UNICODETOKOI8U_CID);
-NS_DEFINE_NAMED_CID(NS_UNICODETOMACCYRILLIC_CID);
-NS_DEFINE_NAMED_CID(NS_UNICODETOUTF16BE_CID);
-NS_DEFINE_NAMED_CID(NS_UNICODETOUTF16LE_CID);
-NS_DEFINE_NAMED_CID(NS_UNICODETOUTF16_CID);
-NS_DEFINE_NAMED_CID(NS_UNICODETOUSERDEFINED_CID);
-NS_DEFINE_NAMED_CID(NS_SJISTOUNICODE_CID);
-NS_DEFINE_NAMED_CID(NS_EUCJPTOUNICODE_CID);
-NS_DEFINE_NAMED_CID( NS_ISO2022JPTOUNICODE_CID);
-NS_DEFINE_NAMED_CID(NS_UNICODETOSJIS_CID);
-NS_DEFINE_NAMED_CID(NS_UNICODETOEUCJP_CID);
-NS_DEFINE_NAMED_CID(NS_UNICODETOISO2022JP_CID);
-NS_DEFINE_NAMED_CID(NS_UNICODETOBIG5_CID);
-NS_DEFINE_NAMED_CID(NS_BIG5TOUNICODE_CID);
-NS_DEFINE_NAMED_CID(NS_EUCKRTOUNICODE_CID);
-NS_DEFINE_NAMED_CID(NS_UNICODETOEUCKR_CID);
-NS_DEFINE_NAMED_CID(NS_GBKTOUNICODE_CID);
-NS_DEFINE_NAMED_CID(NS_UNICODETOGBK_CID);
-NS_DEFINE_NAMED_CID(NS_GB18030TOUNICODE_CID);
-NS_DEFINE_NAMED_CID(NS_UNICODETOGB18030_CID);
 
 static const mozilla::Module::CIDEntry kUConvCIDs[] = {
   { &kNS_TEXTTOSUBURI_CID, false, nullptr, nsTextToSubURIConstructor },
   { &kNS_CONVERTERINPUTSTREAM_CID, false, nullptr, nsConverterInputStreamConstructor },
   { &kNS_CONVERTEROUTPUTSTREAM_CID, false, nullptr, nsConverterOutputStreamConstructor },
   { &kNS_ISCRIPTABLEUNICODECONVERTER_CID, false, nullptr, nsScriptableUnicodeConverterConstructor },
   { &kNS_UTF8CONVERTERSERVICE_CID, false, nullptr, nsUTF8ConverterServiceConstructor },
-  { &kNS_ISO88591TOUNICODE_CID, false, nullptr, nsCP1252ToUnicodeConstructor },
-  { &kNS_CP1252TOUNICODE_CID, false, nullptr, nsCP1252ToUnicodeConstructor },
-  { &kNS_MACROMANTOUNICODE_CID, false, nullptr, nsMacRomanToUnicodeConstructor },
-  { &kNS_REPLACEMENTTOUNICODE_CID, false, nullptr, nsReplacementToUnicodeConstructor },
-  { &kNS_UTF8TOUNICODE_CID, false, nullptr, nsUTF8ToUnicodeConstructor },
-  { &kNS_UNICODETOISO88591_CID, false, nullptr, nsUnicodeToISO88591Constructor },
-  { &kNS_UNICODETOCP1252_CID, false, nullptr, nsUnicodeToCP1252Constructor },
-  { &kNS_UNICODETOMACROMAN_CID, false, nullptr, nsUnicodeToMacRomanConstructor },
-  { &kNS_UNICODETOUTF8_CID, false, nullptr, nsUnicodeToUTF8Constructor },
-  { &kNS_ISO88592TOUNICODE_CID, false, nullptr, nsISO88592ToUnicodeConstructor },
-  { &kNS_ISO88593TOUNICODE_CID, false, nullptr, nsISO88593ToUnicodeConstructor },
-  { &kNS_ISO88594TOUNICODE_CID, false, nullptr, nsISO88594ToUnicodeConstructor },
-  { &kNS_ISO88595TOUNICODE_CID, false, nullptr, nsISO88595ToUnicodeConstructor },
-  { &kNS_ISO88596TOUNICODE_CID, false, nullptr, nsISO88596ToUnicodeConstructor },
-  { &kNS_ISO88597TOUNICODE_CID, false, nullptr, nsISO88597ToUnicodeConstructor },
-  { &kNS_ISO88598TOUNICODE_CID, false, nullptr, nsISO88598ToUnicodeConstructor },
-  { &kNS_ISO88598ITOUNICODE_CID, false, nullptr, nsISO88598IToUnicodeConstructor },
-  { &kNS_ISO885910TOUNICODE_CID, false, nullptr, nsISO885910ToUnicodeConstructor },
-  { &kNS_ISO885913TOUNICODE_CID, false, nullptr, nsISO885913ToUnicodeConstructor },
-  { &kNS_ISO885914TOUNICODE_CID, false, nullptr, nsISO885914ToUnicodeConstructor },
-  { &kNS_ISO885915TOUNICODE_CID, false, nullptr, nsISO885915ToUnicodeConstructor },
-  { &kNS_ISO885916TOUNICODE_CID, false, nullptr, nsISO885916ToUnicodeConstructor },
-  { &kNS_CP1250TOUNICODE_CID, false, nullptr, nsCP1250ToUnicodeConstructor },
-  { &kNS_CP1251TOUNICODE_CID, false, nullptr, nsCP1251ToUnicodeConstructor },
-  { &kNS_CP1253TOUNICODE_CID, false, nullptr, nsCP1253ToUnicodeConstructor },
-  { &kNS_CP1254TOUNICODE_CID, false, nullptr, nsCP1254ToUnicodeConstructor },
-  { &kNS_CP1255TOUNICODE_CID, false, nullptr, nsCP1255ToUnicodeConstructor },
-  { &kNS_CP1256TOUNICODE_CID, false, nullptr, nsCP1256ToUnicodeConstructor },
-  { &kNS_CP1257TOUNICODE_CID, false, nullptr, nsCP1257ToUnicodeConstructor },
-  { &kNS_CP1258TOUNICODE_CID, false, nullptr, nsCP1258ToUnicodeConstructor },
-  { &kNS_CP874TOUNICODE_CID, false, nullptr, nsCP874ToUnicodeConstructor },
-  { &kNS_CP866TOUNICODE_CID, false, nullptr, nsCP866ToUnicodeConstructor },
-  { &kNS_KOI8RTOUNICODE_CID, false, nullptr, nsKOI8RToUnicodeConstructor },
-  { &kNS_KOI8UTOUNICODE_CID, false, nullptr, nsKOI8UToUnicodeConstructor },
-  { &kNS_MACCETOUNICODE_CID, false, nullptr, nsMacCEToUnicodeConstructor },
-  { &kNS_MACGREEKTOUNICODE_CID, false, nullptr, nsMacGreekToUnicodeConstructor },
-  { &kNS_MACTURKISHTOUNICODE_CID, false, nullptr, nsMacTurkishToUnicodeConstructor },
-  { &kNS_MACCROATIANTOUNICODE_CID, false, nullptr, nsMacCroatianToUnicodeConstructor },
-  { &kNS_MACROMANIANTOUNICODE_CID, false, nullptr, nsMacRomanianToUnicodeConstructor },
-  { &kNS_MACCYRILLICTOUNICODE_CID, false, nullptr, nsMacCyrillicToUnicodeConstructor },
-  { &kNS_MACICELANDICTOUNICODE_CID, false, nullptr, nsMacIcelandicToUnicodeConstructor },
-  { &kNS_UTF16TOUNICODE_CID, false, nullptr, nsUTF16ToUnicodeConstructor },
-  { &kNS_UTF16BETOUNICODE_CID, false, nullptr, nsUTF16BEToUnicodeConstructor },
-  { &kNS_UTF16LETOUNICODE_CID, false, nullptr, nsUTF16LEToUnicodeConstructor },
-  { &kNS_USERDEFINEDTOUNICODE_CID, false, nullptr, nsUserDefinedToUnicodeConstructor },
-  { &kNS_MACARABICTOUNICODE_CID, false, nullptr, nsMacArabicToUnicodeConstructor },
-  { &kNS_MACDEVANAGARITOUNICODE_CID, false, nullptr, nsMacDevanagariToUnicodeConstructor },
-  { &kNS_MACFARSITOUNICODE_CID, false, nullptr, nsMacFarsiToUnicodeConstructor },
-  { &kNS_MACGURMUKHITOUNICODE_CID, false, nullptr, nsMacGurmukhiToUnicodeConstructor },
-  { &kNS_MACGUJARATITOUNICODE_CID, false, nullptr, nsMacGujaratiToUnicodeConstructor },
-  { &kNS_MACHEBREWTOUNICODE_CID, false, nullptr, nsMacHebrewToUnicodeConstructor },
-  { &kNS_UNICODETOISO88592_CID, false, nullptr, nsUnicodeToISO88592Constructor },
-  { &kNS_UNICODETOISO88593_CID, false, nullptr, nsUnicodeToISO88593Constructor },
-  { &kNS_UNICODETOISO88594_CID, false, nullptr, nsUnicodeToISO88594Constructor },
-  { &kNS_UNICODETOISO88595_CID, false, nullptr, nsUnicodeToISO88595Constructor },
-  { &kNS_UNICODETOISO88596_CID, false, nullptr, nsUnicodeToISO88596Constructor },
-  { &kNS_UNICODETOISO88597_CID, false, nullptr, nsUnicodeToISO88597Constructor },
-  { &kNS_UNICODETOISO88598_CID, false, nullptr, nsUnicodeToISO88598Constructor },
-  { &kNS_UNICODETOISO88598I_CID, false, nullptr, nsUnicodeToISO88598IConstructor },
-  { &kNS_UNICODETOISO885910_CID, false, nullptr, nsUnicodeToISO885910Constructor },
-  { &kNS_UNICODETOISO885913_CID, false, nullptr, nsUnicodeToISO885913Constructor },
-  { &kNS_UNICODETOISO885914_CID, false, nullptr, nsUnicodeToISO885914Constructor },
-  { &kNS_UNICODETOISO885915_CID, false, nullptr, nsUnicodeToISO885915Constructor },
-  { &kNS_UNICODETOISO885916_CID, false, nullptr, nsUnicodeToISO885916Constructor },
-  { &kNS_UNICODETOCP1250_CID, false, nullptr, nsUnicodeToCP1250Constructor },
-  { &kNS_UNICODETOCP1251_CID, false, nullptr, nsUnicodeToCP1251Constructor },
-  { &kNS_UNICODETOCP1253_CID, false, nullptr, nsUnicodeToCP1253Constructor },
-  { &kNS_UNICODETOCP1254_CID, false, nullptr, nsUnicodeToCP1254Constructor },
-  { &kNS_UNICODETOCP1255_CID, false, nullptr, nsUnicodeToCP1255Constructor },
-  { &kNS_UNICODETOCP1256_CID, false, nullptr, nsUnicodeToCP1256Constructor },
-  { &kNS_UNICODETOCP1257_CID, false, nullptr, nsUnicodeToCP1257Constructor },
-  { &kNS_UNICODETOCP1258_CID, false, nullptr, nsUnicodeToCP1258Constructor },
-  { &kNS_UNICODETOCP874_CID, false, nullptr, nsUnicodeToCP874Constructor },
-  { &kNS_UNICODETOCP866_CID, false, nullptr, nsUnicodeToCP866Constructor },
-  { &kNS_UNICODETOKOI8R_CID, false, nullptr, nsUnicodeToKOI8RConstructor },
-  { &kNS_UNICODETOKOI8U_CID, false, nullptr, nsUnicodeToKOI8UConstructor },
-  { &kNS_UNICODETOMACCYRILLIC_CID, false, nullptr, nsUnicodeToMacCyrillicConstructor },
-  { &kNS_UNICODETOUTF16BE_CID, false, nullptr, nsUnicodeToUTF16BEConstructor },
-  { &kNS_UNICODETOUTF16LE_CID, false, nullptr, nsUnicodeToUTF16LEConstructor },
-  { &kNS_UNICODETOUTF16_CID, false, nullptr, nsUnicodeToUTF16Constructor },
-  { &kNS_UNICODETOUSERDEFINED_CID, false, nullptr, nsUnicodeToUserDefinedConstructor },
-  { &kNS_SJISTOUNICODE_CID, false, nullptr, nsShiftJISToUnicodeConstructor },
-  { &kNS_EUCJPTOUNICODE_CID, false, nullptr, nsEUCJPToUnicodeV2Constructor },
-  { &kNS_ISO2022JPTOUNICODE_CID, false, nullptr, nsISO2022JPToUnicodeV2Constructor },
-  { &kNS_UNICODETOSJIS_CID, false, nullptr, nsUnicodeToSJISConstructor },
-  { &kNS_UNICODETOEUCJP_CID, false, nullptr, nsUnicodeToEUCJPConstructor },
-  { &kNS_UNICODETOISO2022JP_CID, false, nullptr, nsUnicodeToISO2022JPConstructor },
-  { &kNS_UNICODETOBIG5_CID, false, nullptr, nsUnicodeToBIG5Constructor },
-  { &kNS_BIG5TOUNICODE_CID, false, nullptr, nsBIG5ToUnicodeConstructor },
-  { &kNS_EUCKRTOUNICODE_CID, false, nullptr, nsCP949ToUnicodeConstructor },
-  { &kNS_UNICODETOEUCKR_CID, false, nullptr, nsUnicodeToCP949Constructor },
-  { &kNS_GBKTOUNICODE_CID, false, nullptr, nsGB18030ToUnicodeConstructor },
-  { &kNS_UNICODETOGBK_CID, false, nullptr, nsUnicodeToGBKConstructor },
-  { &kNS_GB18030TOUNICODE_CID, false, nullptr, nsGB18030ToUnicodeConstructor },
-  { &kNS_UNICODETOGB18030_CID, false, nullptr, nsUnicodeToGB18030Constructor },
   { nullptr },
 };
 
 static const mozilla::Module::ContractIDEntry kUConvContracts[] = {
   { NS_ITEXTTOSUBURI_CONTRACTID, &kNS_TEXTTOSUBURI_CID },
   { NS_CONVERTERINPUTSTREAM_CONTRACTID, &kNS_CONVERTERINPUTSTREAM_CID },
   { "@mozilla.org/intl/converter-output-stream;1", &kNS_CONVERTEROUTPUTSTREAM_CID },
   { NS_ISCRIPTABLEUNICODECONVERTER_CONTRACTID, &kNS_ISCRIPTABLEUNICODECONVERTER_CID },
   { NS_UTF8CONVERTERSERVICE_CONTRACTID, &kNS_UTF8CONVERTERSERVICE_CID },
-  { NS_ISO88591TOUNICODE_CONTRACTID, &kNS_ISO88591TOUNICODE_CID },
-  { NS_CP1252TOUNICODE_CONTRACTID, &kNS_CP1252TOUNICODE_CID },
-  { NS_MACROMANTOUNICODE_CONTRACTID, &kNS_MACROMANTOUNICODE_CID },
-  { NS_REPLACEMENTTOUNICODE_CONTRACTID, &kNS_REPLACEMENTTOUNICODE_CID },
-  { NS_UTF8TOUNICODE_CONTRACTID, &kNS_UTF8TOUNICODE_CID },
-  { NS_UNICODETOISO88591_CONTRACTID, &kNS_UNICODETOISO88591_CID },
-  { NS_UNICODETOCP1252_CONTRACTID, &kNS_UNICODETOCP1252_CID },
-  { NS_UNICODETOMACROMAN_CONTRACTID, &kNS_UNICODETOMACROMAN_CID },
-  { NS_UNICODETOUTF8_CONTRACTID, &kNS_UNICODETOUTF8_CID },
-  { NS_UNICODEDECODER_CONTRACTID_BASE "ISO-8859-2", &kNS_ISO88592TOUNICODE_CID },
-  { NS_UNICODEDECODER_CONTRACTID_BASE "ISO-8859-3", &kNS_ISO88593TOUNICODE_CID },
-  { NS_UNICODEDECODER_CONTRACTID_BASE "ISO-8859-4", &kNS_ISO88594TOUNICODE_CID },
-  { NS_UNICODEDECODER_CONTRACTID_BASE "ISO-8859-5", &kNS_ISO88595TOUNICODE_CID },
-  { NS_UNICODEDECODER_CONTRACTID_BASE "ISO-8859-6", &kNS_ISO88596TOUNICODE_CID },
-  { NS_UNICODEDECODER_CONTRACTID_BASE "ISO-8859-7", &kNS_ISO88597TOUNICODE_CID },
-  { NS_UNICODEDECODER_CONTRACTID_BASE "ISO-8859-8", &kNS_ISO88598TOUNICODE_CID },
-  { NS_UNICODEDECODER_CONTRACTID_BASE "ISO-8859-8-I", &kNS_ISO88598ITOUNICODE_CID },
-  { NS_UNICODEDECODER_CONTRACTID_BASE "ISO-8859-10", &kNS_ISO885910TOUNICODE_CID },
-  { NS_UNICODEDECODER_CONTRACTID_BASE "ISO-8859-13", &kNS_ISO885913TOUNICODE_CID },
-  { NS_UNICODEDECODER_CONTRACTID_BASE "ISO-8859-14", &kNS_ISO885914TOUNICODE_CID },
-  { NS_UNICODEDECODER_CONTRACTID_BASE "ISO-8859-15", &kNS_ISO885915TOUNICODE_CID },
-  { NS_UNICODEDECODER_CONTRACTID_BASE "ISO-8859-16", &kNS_ISO885916TOUNICODE_CID },
-  { NS_UNICODEDECODER_CONTRACTID_BASE "windows-1250", &kNS_CP1250TOUNICODE_CID },
-  { NS_UNICODEDECODER_CONTRACTID_BASE "windows-1251", &kNS_CP1251TOUNICODE_CID },
-  { NS_UNICODEDECODER_CONTRACTID_BASE "windows-1253", &kNS_CP1253TOUNICODE_CID },
-  { NS_UNICODEDECODER_CONTRACTID_BASE "windows-1254", &kNS_CP1254TOUNICODE_CID },
-  { NS_UNICODEDECODER_CONTRACTID_BASE "windows-1255", &kNS_CP1255TOUNICODE_CID },
-  { NS_UNICODEDECODER_CONTRACTID_BASE "windows-1256", &kNS_CP1256TOUNICODE_CID },
-  { NS_UNICODEDECODER_CONTRACTID_BASE "windows-1257", &kNS_CP1257TOUNICODE_CID },
-  { NS_UNICODEDECODER_CONTRACTID_BASE "windows-1258", &kNS_CP1258TOUNICODE_CID },
-  { NS_UNICODEDECODER_CONTRACTID_BASE "windows-874", &kNS_CP874TOUNICODE_CID },
-  { NS_UNICODEDECODER_CONTRACTID_BASE "IBM866", &kNS_CP866TOUNICODE_CID },
-  { NS_UNICODEDECODER_CONTRACTID_BASE "KOI8-R", &kNS_KOI8RTOUNICODE_CID },
-  { NS_UNICODEDECODER_CONTRACTID_BASE "KOI8-U", &kNS_KOI8UTOUNICODE_CID },
-  { NS_UNICODEDECODER_CONTRACTID_BASE "x-mac-ce", &kNS_MACCETOUNICODE_CID },
-  { NS_UNICODEDECODER_CONTRACTID_BASE "x-mac-greek", &kNS_MACGREEKTOUNICODE_CID },
-  { NS_UNICODEDECODER_CONTRACTID_BASE "x-mac-turkish", &kNS_MACTURKISHTOUNICODE_CID },
-  { NS_UNICODEDECODER_CONTRACTID_BASE "x-mac-croatian", &kNS_MACCROATIANTOUNICODE_CID },
-  { NS_UNICODEDECODER_CONTRACTID_BASE "x-mac-romanian", &kNS_MACROMANIANTOUNICODE_CID },
-  { NS_UNICODEDECODER_CONTRACTID_BASE "x-mac-cyrillic", &kNS_MACCYRILLICTOUNICODE_CID },
-  { NS_UNICODEDECODER_CONTRACTID_BASE "x-mac-icelandic", &kNS_MACICELANDICTOUNICODE_CID },
-  { NS_UNICODEDECODER_CONTRACTID_BASE "UTF-16", &kNS_UTF16TOUNICODE_CID },
-  { NS_UNICODEDECODER_CONTRACTID_BASE "UTF-16BE", &kNS_UTF16BETOUNICODE_CID },
-  { NS_UNICODEDECODER_CONTRACTID_BASE "UTF-16LE", &kNS_UTF16LETOUNICODE_CID },
-  { NS_UNICODEDECODER_CONTRACTID_BASE "x-user-defined", &kNS_USERDEFINEDTOUNICODE_CID },
-  { NS_UNICODEDECODER_CONTRACTID_BASE "x-mac-arabic", &kNS_MACARABICTOUNICODE_CID },
-  { NS_UNICODEDECODER_CONTRACTID_BASE "x-mac-devanagari", &kNS_MACDEVANAGARITOUNICODE_CID },
-  { NS_UNICODEDECODER_CONTRACTID_BASE "x-mac-farsi", &kNS_MACFARSITOUNICODE_CID },
-  { NS_UNICODEDECODER_CONTRACTID_BASE "x-mac-gurmukhi", &kNS_MACGURMUKHITOUNICODE_CID },
-  { NS_UNICODEDECODER_CONTRACTID_BASE "x-mac-gujarati", &kNS_MACGUJARATITOUNICODE_CID },
-  { NS_UNICODEDECODER_CONTRACTID_BASE "x-mac-hebrew", &kNS_MACHEBREWTOUNICODE_CID },
-  { NS_UNICODEENCODER_CONTRACTID_BASE "ISO-8859-2", &kNS_UNICODETOISO88592_CID },
-  { NS_UNICODEENCODER_CONTRACTID_BASE "ISO-8859-3", &kNS_UNICODETOISO88593_CID },
-  { NS_UNICODEENCODER_CONTRACTID_BASE "ISO-8859-4", &kNS_UNICODETOISO88594_CID },
-  { NS_UNICODEENCODER_CONTRACTID_BASE "ISO-8859-5", &kNS_UNICODETOISO88595_CID },
-  { NS_UNICODEENCODER_CONTRACTID_BASE "ISO-8859-6", &kNS_UNICODETOISO88596_CID },
-  { NS_UNICODEENCODER_CONTRACTID_BASE "ISO-8859-7", &kNS_UNICODETOISO88597_CID },
-  { NS_UNICODEENCODER_CONTRACTID_BASE "ISO-8859-8", &kNS_UNICODETOISO88598_CID },
-  { NS_UNICODEENCODER_CONTRACTID_BASE "ISO-8859-8-I", &kNS_UNICODETOISO88598I_CID },
-  { NS_UNICODEENCODER_CONTRACTID_BASE "ISO-8859-10", &kNS_UNICODETOISO885910_CID },
-  { NS_UNICODEENCODER_CONTRACTID_BASE "ISO-8859-13", &kNS_UNICODETOISO885913_CID },
-  { NS_UNICODEENCODER_CONTRACTID_BASE "ISO-8859-14", &kNS_UNICODETOISO885914_CID },
-  { NS_UNICODEENCODER_CONTRACTID_BASE "ISO-8859-15", &kNS_UNICODETOISO885915_CID },
-  { NS_UNICODEENCODER_CONTRACTID_BASE "ISO-8859-16", &kNS_UNICODETOISO885916_CID },
-  { NS_UNICODEENCODER_CONTRACTID_BASE "windows-1250", &kNS_UNICODETOCP1250_CID },
-  { NS_UNICODEENCODER_CONTRACTID_BASE "windows-1251", &kNS_UNICODETOCP1251_CID },
-  { NS_UNICODEENCODER_CONTRACTID_BASE "windows-1253", &kNS_UNICODETOCP1253_CID },
-  { NS_UNICODEENCODER_CONTRACTID_BASE "windows-1254", &kNS_UNICODETOCP1254_CID },
-  { NS_UNICODEENCODER_CONTRACTID_BASE "windows-1255", &kNS_UNICODETOCP1255_CID },
-  { NS_UNICODEENCODER_CONTRACTID_BASE "windows-1256", &kNS_UNICODETOCP1256_CID },
-  { NS_UNICODEENCODER_CONTRACTID_BASE "windows-1257", &kNS_UNICODETOCP1257_CID },
-  { NS_UNICODEENCODER_CONTRACTID_BASE "windows-1258", &kNS_UNICODETOCP1258_CID },
-  { NS_UNICODEENCODER_CONTRACTID_BASE "windows-874", &kNS_UNICODETOCP874_CID },
-  { NS_UNICODEENCODER_CONTRACTID_BASE "IBM866", &kNS_UNICODETOCP866_CID },
-  { NS_UNICODEENCODER_CONTRACTID_BASE "KOI8-R", &kNS_UNICODETOKOI8R_CID },
-  { NS_UNICODEENCODER_CONTRACTID_BASE "KOI8-U", &kNS_UNICODETOKOI8U_CID },
-  { NS_UNICODEENCODER_CONTRACTID_BASE "x-mac-cyrillic", &kNS_UNICODETOMACCYRILLIC_CID },
-  { NS_UNICODEENCODER_CONTRACTID_BASE "UTF-16BE", &kNS_UNICODETOUTF16BE_CID },
-  { NS_UNICODEENCODER_CONTRACTID_BASE "UTF-16LE", &kNS_UNICODETOUTF16LE_CID },
-  { NS_UNICODEENCODER_CONTRACTID_BASE "UTF-16", &kNS_UNICODETOUTF16_CID },
-  { NS_UNICODEENCODER_CONTRACTID_BASE "x-user-defined", &kNS_UNICODETOUSERDEFINED_CID },
-  { NS_UNICODEDECODER_CONTRACTID_BASE "Shift_JIS", &kNS_SJISTOUNICODE_CID },
-  { NS_UNICODEDECODER_CONTRACTID_BASE "EUC-JP", &kNS_EUCJPTOUNICODE_CID },
-  { NS_UNICODEDECODER_CONTRACTID_BASE "ISO-2022-JP", &kNS_ISO2022JPTOUNICODE_CID },
-  { NS_UNICODEENCODER_CONTRACTID_BASE "Shift_JIS", &kNS_UNICODETOSJIS_CID },
-  { NS_UNICODEENCODER_CONTRACTID_BASE "EUC-JP", &kNS_UNICODETOEUCJP_CID },
-  { NS_UNICODEENCODER_CONTRACTID_BASE "ISO-2022-JP", &kNS_UNICODETOISO2022JP_CID },
-  { NS_UNICODEENCODER_CONTRACTID_BASE "Big5", &kNS_UNICODETOBIG5_CID },
-  { NS_UNICODEDECODER_CONTRACTID_BASE "Big5", &kNS_BIG5TOUNICODE_CID },
-  { NS_UNICODEDECODER_CONTRACTID_BASE "EUC-KR", &kNS_EUCKRTOUNICODE_CID },
-  { NS_UNICODEENCODER_CONTRACTID_BASE "EUC-KR", &kNS_UNICODETOEUCKR_CID },
-  { NS_UNICODEDECODER_CONTRACTID_BASE "gbk", &kNS_GBKTOUNICODE_CID },
-  { NS_UNICODEENCODER_CONTRACTID_BASE "gbk", &kNS_UNICODETOGBK_CID },
-  { NS_UNICODEDECODER_CONTRACTID_BASE "gb18030", &kNS_GB18030TOUNICODE_CID },
-  { NS_UNICODEENCODER_CONTRACTID_BASE "gb18030", &kNS_UNICODETOGB18030_CID },
   { nullptr }
 };
 
 static const mozilla::Module kUConvModule = {
   mozilla::Module::kVersion,
   kUConvCIDs,
   kUConvContracts,
-  kUConvCategories
 };
 
 NSMODULE_DEFN(nsUConvModule) = &kUConvModule;
--- a/intl/uconv/nsUTF8ConverterService.cpp
+++ b/intl/uconv/nsUTF8ConverterService.cpp
@@ -1,73 +1,60 @@
 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim:expandtab:shiftwidth=2:tabstop=4: 
+/* vim:expandtab:shiftwidth=2:tabstop=4:
  */
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 #include "nsString.h"
 #include "nsUTF8ConverterService.h"
 #include "nsEscape.h"
-#include "nsIUnicodeDecoder.h"
-#include "mozilla/dom/EncodingUtils.h"
-#include "mozilla/UniquePtr.h"
+#include "mozilla/Encoding.h"
 
-using mozilla::dom::EncodingUtils;
+using namespace mozilla;
 
 NS_IMPL_ISUPPORTS(nsUTF8ConverterService, nsIUTF8ConverterService)
 
-static nsresult 
-ToUTF8(const nsACString &aString, const char *aCharset,
-       bool aAllowSubstitution, nsACString &aResult)
+static nsresult
+ToUTF8(const nsACString& aString,
+       const char* aCharset,
+       bool aAllowSubstitution,
+       nsACString& aResult)
 {
-  nsresult rv;
   if (!aCharset || !*aCharset)
     return NS_ERROR_INVALID_ARG;
 
-  nsDependentCString label(aCharset);
-  nsAutoCString encoding;
-  if (!EncodingUtils::FindEncodingForLabelNoReplacement(label, encoding)) {
+  auto encoding = Encoding::ForLabelNoReplacement(MakeStringSpan(aCharset));
+  if (!encoding) {
     return NS_ERROR_UCONV_NOCONV;
   }
-  nsCOMPtr<nsIUnicodeDecoder> unicodeDecoder =
-    EncodingUtils::DecoderForEncoding(encoding);
-
-  if (!aAllowSubstitution)
-    unicodeDecoder->SetInputErrorBehavior(nsIUnicodeDecoder::kOnError_Signal);
-
-  int32_t srcLen = aString.Length();
-  int32_t dstLen;
-  const nsAFlatCString& inStr = PromiseFlatCString(aString);
-  rv = unicodeDecoder->GetMaxLength(inStr.get(), srcLen, &dstLen);
-  NS_ENSURE_SUCCESS(rv, rv);
-
-  auto ustr = mozilla::MakeUnique<char16_t[]>(dstLen);
-  NS_ENSURE_TRUE(ustr, NS_ERROR_OUT_OF_MEMORY);
-
-  rv = unicodeDecoder->Convert(inStr.get(), &srcLen, ustr.get(), &dstLen);
-  if (NS_SUCCEEDED(rv)){
-    CopyUTF16toUTF8(Substring(ustr.get(), ustr.get() + dstLen), aResult);
+  if (aAllowSubstitution) {
+    nsresult rv = encoding->DecodeWithoutBOMHandling(aString, aResult);
+    if (NS_SUCCEEDED(rv)) {
+      return NS_OK;
+    }
+    return rv;
   }
-  return rv;
+  return encoding->DecodeWithoutBOMHandlingAndWithoutReplacement(aString,
+                                                                 aResult);
 }
 
-NS_IMETHODIMP  
-nsUTF8ConverterService::ConvertStringToUTF8(const nsACString &aString, 
-                                            const char *aCharset, 
-                                            bool aSkipCheck, 
+NS_IMETHODIMP
+nsUTF8ConverterService::ConvertStringToUTF8(const nsACString& aString,
+                                            const char* aCharset,
+                                            bool aSkipCheck,
                                             bool aAllowSubstitution,
                                             uint8_t aOptionalArgc,
-                                            nsACString &aUTF8String)
+                                            nsACString& aUTF8String)
 {
   bool allowSubstitution = (aOptionalArgc == 1) ? aAllowSubstitution : true;
 
   // return if ASCII only or valid UTF-8 providing that the ASCII/UTF-8
   // check is requested. It may not be asked for if a caller suspects
-  // that the input is in non-ASCII 7bit charset (ISO-2022-xx, HZ) or 
+  // that the input is in non-ASCII 7bit charset (ISO-2022-xx, HZ) or
   // it's in a charset other than UTF-8 that can be mistaken for UTF-8.
   if (!aSkipCheck && (IsASCII(aString) || IsUTF8(aString))) {
     aUTF8String = aString;
     return NS_OK;
   }
 
   aUTF8String.Truncate();
 
@@ -80,35 +67,37 @@ nsUTF8ConverterService::ConvertStringToU
   if (aSkipCheck && NS_FAILED(rv) && IsUTF8(aString)) {
     aUTF8String = aString;
     return NS_OK;
   }
 
   return rv;
 }
 
-NS_IMETHODIMP  
-nsUTF8ConverterService::ConvertURISpecToUTF8(const nsACString &aSpec, 
-                                             const char *aCharset, 
-                                             nsACString &aUTF8Spec)
+NS_IMETHODIMP
+nsUTF8ConverterService::ConvertURISpecToUTF8(const nsACString& aSpec,
+                                             const char* aCharset,
+                                             nsACString& aUTF8Spec)
 {
   // assume UTF-8 if the spec contains unescaped non-ASCII characters.
   // No valid spec in Mozilla would break this assumption.
   if (!IsASCII(aSpec)) {
     aUTF8Spec = aSpec;
     return NS_OK;
   }
 
   aUTF8Spec.Truncate();
 
-  nsAutoCString unescapedSpec; 
-  // NS_UnescapeURL does not fill up unescapedSpec unless there's at least 
+  nsAutoCString unescapedSpec;
+  // NS_UnescapeURL does not fill up unescapedSpec unless there's at least
   // one character to unescape.
-  bool written = NS_UnescapeURL(PromiseFlatCString(aSpec).get(), aSpec.Length(), 
-                                  esc_OnlyNonASCII, unescapedSpec);
+  bool written = NS_UnescapeURL(PromiseFlatCString(aSpec).get(),
+                                aSpec.Length(),
+                                esc_OnlyNonASCII,
+                                unescapedSpec);
 
   if (!written) {
     aUTF8Spec = aSpec;
     return NS_OK;
   }
   // return if ASCII only or escaped UTF-8
   if (IsASCII(unescapedSpec) || IsUTF8(unescapedSpec)) {
     aUTF8Spec = unescapedSpec;
--- a/intl/uconv/tests/moz.build
+++ b/intl/uconv/tests/moz.build
@@ -1,25 +1,10 @@
 # -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 XPCSHELL_TESTS_MANIFESTS += ['unit/xpcshell.ini']
 
-# Tests disabled because they dont work in libxul builds.
-#MOZILLA_INTERNAL_API = True
-#
-#CPP_SOURCES += [
-#    'TestUConv.cpp',
-#    'nsconv.cpp',
-#]
-#
-#if CONFIG['OS_ARCH'] == 'WINNT':
-#    CPP_SOURCES += [
-#        'convperf.cpp',
-#    ]
-#
-#SIMPLE_PROGRAMS += [source.replace('.cpp', CONFIG['BIN_SUFFIX']), CPP_SOURCES]
-
 MOCHITEST_MANIFESTS += ['mochitest.ini']
 
deleted file mode 100644
--- a/intl/uconv/tests/unit/hangulTestStrings.js
+++ /dev/null
@@ -1,760 +0,0 @@
-/*
- * Expected results for EUC-KR 8 byte decomposed hangul:
- * If all the following conditions are fulfilled:
- *  * octet0 == 0xa4
- *  * octet1 == 0xd4
- *  * octet2 == 0xa4
- *  * octet3 in the range 0xa1 - 0xbe (mapped to a Hangul Jamo in the range
- *  *                                  U+1100 - U+1112)
- *  * octet4 == 0xa4
- *  * octet5 in the range 0xbf - 0xd3 (mapped to a Hangul Jamo in the range
- *                                     U+1161 - U+1175)
- *  * octet6 == 0xa4
- *  * octet7 in the range 0xa1 - 0xbe or 0xd4 (mapped to a Hangul Jamo in the
- *                                             range U+11A7 - U+11C2)
- * the result is a Hangul syllable in the range U+AC00 - U+D7A3 computed by the
- *  formula below: ($LIndex * VCOUNT + $VIndex) * TCOUNT + $TIndex + SBASE
- *
- * If all the conditions are not fulfilled, the input is converted as 4
- *  ordinary CP949 double byte sequences. E.g. the first sequence below:
- * 0xa4 d4 a4 a0 a4 be a4 a0 ==> U+3164 U+CA46 U+314E U+CA46
- */
-const expectedStrings = [
-" row a0_be_: \u3164\uca46\u314e\uca46 \u3164\uca46\u314e\u3131 \u3164\uca46\u314e\u3132 \u3164\uca46\u314e\u3133 \u3164\uca46\u314e\u3134 \u3164\uca46\u314e\u3135 \u3164\uca46\u314e\u3136 \u3164\uca46\u314e\u3137 \u3164\uca46\u314e\u3138 \u3164\uca46\u314e\u3139 \u3164\uca46\u314e\u313a \u3164\uca46\u314e\u313b \u3164\uca46\u314e\u313c \u3164\uca46\u314e\u313d \u3164\uca46\u314e\u313e \u3164\uca46\u314e\u313f \u3164\uca46\u314e\u3140 \u3164\uca46\u314e\u3141 \u3164\uca46\u314e\u3142 \u3164\uca46\u314e\u3143 \u3164\uca46\u314e\u3144 \u3164\uca46\u314e\u3145 \u3164\uca46\u314e\u3146 \u3164\uca46\u314e\u3147 \u3164\uca46\u314e\u3148 \u3164\uca46\u314e\u3149 \u3164\uca46\u314e\u314a \u3164\uca46\u314e\u314b \u3164\uca46\u314e\u314c \u3164\uca46\u314e\u314d \u3164\uca46\u314e\u314e \u3164\uca46\u314e\u314f \u3164\uca46\u314e\u3164 ",
-" row a0_bf_: \u3164\uca46\u314f\uca46 \u3164\uca46\u314f\u3131 \u3164\uca46\u314f\u3132 \u3164\uca46\u314f\u3133 \u3164\uca46\u314f\u3134 \u3164\uca46\u314f\u3135 \u3164\uca46\u314f\u3136 \u3164\uca46\u314f\u3137 \u3164\uca46\u314f\u3138 \u3164\uca46\u314f\u3139 \u3164\uca46\u314f\u313a \u3164\uca46\u314f\u313b \u3164\uca46\u314f\u313c \u3164\uca46\u314f\u313d \u3164\uca46\u314f\u313e \u3164\uca46\u314f\u313f \u3164\uca46\u314f\u3140 \u3164\uca46\u314f\u3141 \u3164\uca46\u314f\u3142 \u3164\uca46\u314f\u3143 \u3164\uca46\u314f\u3144 \u3164\uca46\u314f\u3145 \u3164\uca46\u314f\u3146 \u3164\uca46\u314f\u3147 \u3164\uca46\u314f\u3148 \u3164\uca46\u314f\u3149 \u3164\uca46\u314f\u314a \u3164\uca46\u314f\u314b \u3164\uca46\u314f\u314c \u3164\uca46\u314f\u314d \u3164\uca46\u314f\u314e \u3164\uca46\u314f\u314f \u3164\uca46\u314f\u3164 ",
-" row a0_c0_: \u3164\uca46\u3150\uca46 \u3164\uca46\u3150\u3131 \u3164\uca46\u3150\u3132 \u3164\uca46\u3150\u3133 \u3164\uca46\u3150\u3134 \u3164\uca46\u3150\u3135 \u3164\uca46\u3150\u3136 \u3164\uca46\u3150\u3137 \u3164\uca46\u3150\u3138 \u3164\uca46\u3150\u3139 \u3164\uca46\u3150\u313a \u3164\uca46\u3150\u313b \u3164\uca46\u3150\u313c \u3164\uca46\u3150\u313d \u3164\uca46\u3150\u313e \u3164\uca46\u3150\u313f \u3164\uca46\u3150\u3140 \u3164\uca46\u3150\u3141 \u3164\uca46\u3150\u3142 \u3164\uca46\u3150\u3143 \u3164\uca46\u3150\u3144 \u3164\uca46\u3150\u3145 \u3164\uca46\u3150\u3146 \u3164\uca46\u3150\u3147 \u3164\uca46\u3150\u3148 \u3164\uca46\u3150\u3149 \u3164\uca46\u3150\u314a \u3164\uca46\u3150\u314b \u3164\uca46\u3150\u314c \u3164\uca46\u3150\u314d \u3164\uca46\u3150\u314e \u3164\uca46\u3150\u314f \u3164\uca46\u3150\u3164 ",
-" row a0_c1_: \u3164\uca46\u3151\uca46 \u3164\uca46\u3151\u3131 \u3164\uca46\u3151\u3132 \u3164\uca46\u3151\u3133 \u3164\uca46\u3151\u3134 \u3164\uca46\u3151\u3135 \u3164\uca46\u3151\u3136 \u3164\uca46\u3151\u3137 \u3164\uca46\u3151\u3138 \u3164\uca46\u3151\u3139 \u3164\uca46\u3151\u313a \u3164\uca46\u3151\u313b \u3164\uca46\u3151\u313c \u3164\uca46\u3151\u313d \u3164\uca46\u3151\u313e \u3164\uca46\u3151\u313f \u3164\uca46\u3151\u3140 \u3164\uca46\u3151\u3141 \u3164\uca46\u3151\u3142 \u3164\uca46\u3151\u3143 \u3164\uca46\u3151\u3144 \u3164\uca46\u3151\u3145 \u3164\uca46\u3151\u3146 \u3164\uca46\u3151\u3147 \u3164\uca46\u3151\u3148 \u3164\uca46\u3151\u3149 \u3164\uca46\u3151\u314a \u3164\uca46\u3151\u314b \u3164\uca46\u3151\u314c \u3164\uca46\u3151\u314d \u3164\uca46\u3151\u314e \u3164\uca46\u3151\u314f \u3164\uca46\u3151\u3164 ",
-" row a0_c2_: \u3164\uca46\u3152\uca46 \u3164\uca46\u3152\u3131 \u3164\uca46\u3152\u3132 \u3164\uca46\u3152\u3133 \u3164\uca46\u3152\u3134 \u3164\uca46\u3152\u3135 \u3164\uca46\u3152\u3136 \u3164\uca46\u3152\u3137 \u3164\uca46\u3152\u3138 \u3164\uca46\u3152\u3139 \u3164\uca46\u3152\u313a \u3164\uca46\u3152\u313b \u3164\uca46\u3152\u313c \u3164\uca46\u3152\u313d \u3164\uca46\u3152\u313e \u3164\uca46\u3152\u313f \u3164\uca46\u3152\u3140 \u3164\uca46\u3152\u3141 \u3164\uca46\u3152\u3142 \u3164\uca46\u3152\u3143 \u3164\uca46\u3152\u3144 \u3164\uca46\u3152\u3145 \u3164\uca46\u3152\u3146 \u3164\uca46\u3152\u3147 \u3164\uca46\u3152\u3148 \u3164\uca46\u3152\u3149 \u3164\uca46\u3152\u314a \u3164\uca46\u3152\u314b \u3164\uca46\u3152\u314c \u3164\uca46\u3152\u314d \u3164\uca46\u3152\u314e \u3164\uca46\u3152\u314f \u3164\uca46\u3152\u3164 ",
-" row a0_c3_: \u3164\uca46\u3153\uca46 \u3164\uca46\u3153\u3131 \u3164\uca46\u3153\u3132 \u3164\uca46\u3153\u3133 \u3164\uca46\u3153\u3134 \u3164\uca46\u3153\u3135 \u3164\uca46\u3153\u3136 \u3164\uca46\u3153\u3137 \u3164\uca46\u3153\u3138 \u3164\uca46\u3153\u3139 \u3164\uca46\u3153\u313a \u3164\uca46\u3153\u313b \u3164\uca46\u3153\u313c \u3164\uca46\u3153\u313d \u3164\uca46\u3153\u313e \u3164\uca46\u3153\u313f \u3164\uca46\u3153\u3140 \u3164\uca46\u3153\u3141 \u3164\uca46\u3153\u3142 \u3164\uca46\u3153\u3143 \u3164\uca46\u3153\u3144 \u3164\uca46\u3153\u3145 \u3164\uca46\u3153\u3146 \u3164\uca46\u3153\u3147 \u3164\uca46\u3153\u3148 \u3164\uca46\u3153\u3149 \u3164\uca46\u3153\u314a \u3164\uca46\u3153\u314b \u3164\uca46\u3153\u314c \u3164\uca46\u3153\u314d \u3164\uca46\u3153\u314e \u3164\uca46\u3153\u314f \u3164\uca46\u3153\u3164 ",
-" row a0_c4_: \u3164\uca46\u3154\uca46 \u3164\uca46\u3154\u3131 \u3164\uca46\u3154\u3132 \u3164\uca46\u3154\u3133 \u3164\uca46\u3154\u3134 \u3164\uca46\u3154\u3135 \u3164\uca46\u3154\u3136 \u3164\uca46\u3154\u3137 \u3164\uca46\u3154\u3138 \u3164\uca46\u3154\u3139 \u3164\uca46\u3154\u313a \u3164\uca46\u3154\u313b \u3164\uca46\u3154\u313c \u3164\uca46\u3154\u313d \u3164\uca46\u3154\u313e \u3164\uca46\u3154\u313f \u3164\uca46\u3154\u3140 \u3164\uca46\u3154\u3141 \u3164\uca46\u3154\u3142 \u3164\uca46\u3154\u3143 \u3164\uca46\u3154\u3144 \u3164\uca46\u3154\u3145 \u3164\uca46\u3154\u3146 \u3164\uca46\u3154\u3147 \u3164\uca46\u3154\u3148 \u3164\uca46\u3154\u3149 \u3164\uca46\u3154\u314a \u3164\uca46\u3154\u314b \u3164\uca46\u3154\u314c \u3164\uca46\u3154\u314d \u3164\uca46\u3154\u314e \u3164\uca46\u3154\u314f \u3164\uca46\u3154\u3164 ",
-" row a0_c5_: \u3164\uca46\u3155\uca46 \u3164\uca46\u3155\u3131 \u3164\uca46\u3155\u3132 \u3164\uca46\u3155\u3133 \u3164\uca46\u3155\u3134 \u3164\uca46\u3155\u3135 \u3164\uca46\u3155\u3136 \u3164\uca46\u3155\u3137 \u3164\uca46\u3155\u3138 \u3164\uca46\u3155\u3139 \u3164\uca46\u3155\u313a \u3164\uca46\u3155\u313b \u3164\uca46\u3155\u313c \u3164\uca46\u3155\u313d \u3164\uca46\u3155\u313e \u3164\uca46\u3155\u313f \u3164\uca46\u3155\u3140 \u3164\uca46\u3155\u3141 \u3164\uca46\u3155\u3142 \u3164\uca46\u3155\u3143 \u3164\uca46\u3155\u3144 \u3164\uca46\u3155\u3145 \u3164\uca46\u3155\u3146 \u3164\uca46\u3155\u3147 \u3164\uca46\u3155\u3148 \u3164\uca46\u3155\u3149 \u3164\uca46\u3155\u314a \u3164\uca46\u3155\u314b \u3164\uca46\u3155\u314c \u3164\uca46\u3155\u314d \u3164\uca46\u3155\u314e \u3164\uca46\u3155\u314f \u3164\uca46\u3155\u3164 ",
-" row a0_c6_: \u3164\uca46\u3156\uca46 \u3164\uca46\u3156\u3131 \u3164\uca46\u3156\u3132 \u3164\uca46\u3156\u3133 \u3164\uca46\u3156\u3134 \u3164\uca46\u3156\u3135 \u3164\uca46\u3156\u3136 \u3164\uca46\u3156\u3137 \u3164\uca46\u3156\u3138 \u3164\uca46\u3156\u3139 \u3164\uca46\u3156\u313a \u3164\uca46\u3156\u313b \u3164\uca46\u3156\u313c \u3164\uca46\u3156\u313d \u3164\uca46\u3156\u313e \u3164\uca46\u3156\u313f \u3164\uca46\u3156\u3140 \u3164\uca46\u3156\u3141 \u3164\uca46\u3156\u3142 \u3164\uca46\u3156\u3143 \u3164\uca46\u3156\u3144 \u3164\uca46\u3156\u3145 \u3164\uca46\u3156\u3146 \u3164\uca46\u3156\u3147 \u3164\uca46\u3156\u3148 \u3164\uca46\u3156\u3149 \u3164\uca46\u3156\u314a \u3164\uca46\u3156\u314b \u3164\uca46\u3156\u314c \u3164\uca46\u3156\u314d \u3164\uca46\u3156\u314e \u3164\uca46\u3156\u314f \u3164\uca46\u3156\u3164 ",
-" row a0_c7_: \u3164\uca46\u3157\uca46 \u3164\uca46\u3157\u3131 \u3164\uca46\u3157\u3132 \u3164\uca46\u3157\u3133 \u3164\uca46\u3157\u3134 \u3164\uca46\u3157\u3135 \u3164\uca46\u3157\u3136 \u3164\uca46\u3157\u3137 \u3164\uca46\u3157\u3138 \u3164\uca46\u3157\u3139 \u3164\uca46\u3157\u313a \u3164\uca46\u3157\u313b \u3164\uca46\u3157\u313c \u3164\uca46\u3157\u313d \u3164\uca46\u3157\u313e \u3164\uca46\u3157\u313f \u3164\uca46\u3157\u3140 \u3164\uca46\u3157\u3141 \u3164\uca46\u3157\u3142 \u3164\uca46\u3157\u3143 \u3164\uca46\u3157\u3144 \u3164\uca46\u3157\u3145 \u3164\uca46\u3157\u3146 \u3164\uca46\u3157\u3147 \u3164\uca46\u3157\u3148 \u3164\uca46\u3157\u3149 \u3164\uca46\u3157\u314a \u3164\uca46\u3157\u314b \u3164\uca46\u3157\u314c \u3164\uca46\u3157\u314d \u3164\uca46\u3157\u314e \u3164\uca46\u3157\u314f \u3164\uca46\u3157\u3164 ",
-" row a0_c8_: \u3164\uca46\u3158\uca46 \u3164\uca46\u3158\u3131 \u3164\uca46\u3158\u3132 \u3164\uca46\u3158\u3133 \u3164\uca46\u3158\u3134 \u3164\uca46\u3158\u3135 \u3164\uca46\u3158\u3136 \u3164\uca46\u3158\u3137 \u3164\uca46\u3158\u3138 \u3164\uca46\u3158\u3139 \u3164\uca46\u3158\u313a \u3164\uca46\u3158\u313b \u3164\uca46\u3158\u313c \u3164\uca46\u3158\u313d \u3164\uca46\u3158\u313e \u3164\uca46\u3158\u313f \u3164\uca46\u3158\u3140 \u3164\uca46\u3158\u3141 \u3164\uca46\u3158\u3142 \u3164\uca46\u3158\u3143 \u3164\uca46\u3158\u3144 \u3164\uca46\u3158\u3145 \u3164\uca46\u3158\u3146 \u3164\uca46\u3158\u3147 \u3164\uca46\u3158\u3148 \u3164\uca46\u3158\u3149 \u3164\uca46\u3158\u314a \u3164\uca46\u3158\u314b \u3164\uca46\u3158\u314c \u3164\uca46\u3158\u314d \u3164\uca46\u3158\u314e \u3164\uca46\u3158\u314f \u3164\uca46\u3158\u3164 ",
-" row a0_c9_: \u3164\uca46\u3159\uca46 \u3164\uca46\u3159\u3131 \u3164\uca46\u3159\u3132 \u3164\uca46\u3159\u3133 \u3164\uca46\u3159\u3134 \u3164\uca46\u3159\u3135 \u3164\uca46\u3159\u3136 \u3164\uca46\u3159\u3137 \u3164\uca46\u3159\u3138 \u3164\uca46\u3159\u3139 \u3164\uca46\u3159\u313a \u3164\uca46\u3159\u313b \u3164\uca46\u3159\u313c \u3164\uca46\u3159\u313d \u3164\uca46\u3159\u313e \u3164\uca46\u3159\u313f \u3164\uca46\u3159\u3140 \u3164\uca46\u3159\u3141 \u3164\uca46\u3159\u3142 \u3164\uca46\u3159\u3143 \u3164\uca46\u3159\u3144 \u3164\uca46\u3159\u3145 \u3164\uca46\u3159\u3146 \u3164\uca46\u3159\u3147 \u3164\uca46\u3159\u3148 \u3164\uca46\u3159\u3149 \u3164\uca46\u3159\u314a \u3164\uca46\u3159\u314b \u3164\uca46\u3159\u314c \u3164\uca46\u3159\u314d \u3164\uca46\u3159\u314e \u3164\uca46\u3159\u314f \u3164\uca46\u3159\u3164 ",
-" row a0_ca_: \u3164\uca46\u315a\uca46 \u3164\uca46\u315a\u3131 \u3164\uca46\u315a\u3132 \u3164\uca46\u315a\u3133 \u3164\uca46\u315a\u3134 \u3164\uca46\u315a\u3135 \u3164\uca46\u315a\u3136 \u3164\uca46\u315a\u3137 \u3164\uca46\u315a\u3138 \u3164\uca46\u315a\u3139 \u3164\uca46\u315a\u313a \u3164\uca46\u315a\u313b \u3164\uca46\u315a\u313c \u3164\uca46\u315a\u313d \u3164\uca46\u315a\u313e \u3164\uca46\u315a\u313f \u3164\uca46\u315a\u3140 \u3164\uca46\u315a\u3141 \u3164\uca46\u315a\u3142 \u3164\uca46\u315a\u3143 \u3164\uca46\u315a\u3144 \u3164\uca46\u315a\u3145 \u3164\uca46\u315a\u3146 \u3164\uca46\u315a\u3147 \u3164\uca46\u315a\u3148 \u3164\uca46\u315a\u3149 \u3164\uca46\u315a\u314a \u3164\uca46\u315a\u314b \u3164\uca46\u315a\u314c \u3164\uca46\u315a\u314d \u3164\uca46\u315a\u314e \u3164\uca46\u315a\u314f \u3164\uca46\u315a\u3164 ",
-" row a0_cb_: \u3164\uca46\u315b\uca46 \u3164\uca46\u315b\u3131 \u3164\uca46\u315b\u3132 \u3164\uca46\u315b\u3133 \u3164\uca46\u315b\u3134 \u3164\uca46\u315b\u3135 \u3164\uca46\u315b\u3136 \u3164\uca46\u315b\u3137 \u3164\uca46\u315b\u3138 \u3164\uca46\u315b\u3139 \u3164\uca46\u315b\u313a \u3164\uca46\u315b\u313b \u3164\uca46\u315b\u313c \u3164\uca46\u315b\u313d \u3164\uca46\u315b\u313e \u3164\uca46\u315b\u313f \u3164\uca46\u315b\u3140 \u3164\uca46\u315b\u3141 \u3164\uca46\u315b\u3142 \u3164\uca46\u315b\u3143 \u3164\uca46\u315b\u3144 \u3164\uca46\u315b\u3145 \u3164\uca46\u315b\u3146 \u3164\uca46\u315b\u3147 \u3164\uca46\u315b\u3148 \u3164\uca46\u315b\u3149 \u3164\uca46\u315b\u314a \u3164\uca46\u315b\u314b \u3164\uca46\u315b\u314c \u3164\uca46\u315b\u314d \u3164\uca46\u315b\u314e \u3164\uca46\u315b\u314f \u3164\uca46\u315b\u3164 ",
-" row a0_cc_: \u3164\uca46\u315c\uca46 \u3164\uca46\u315c\u3131 \u3164\uca46\u315c\u3132 \u3164\uca46\u315c\u3133 \u3164\uca46\u315c\u3134 \u3164\uca46\u315c\u3135 \u3164\uca46\u315c\u3136 \u3164\uca46\u315c\u3137 \u3164\uca46\u315c\u3138 \u3164\uca46\u315c\u3139 \u3164\uca46\u315c\u313a \u3164\uca46\u315c\u313b \u3164\uca46\u315c\u313c \u3164\uca46\u315c\u313d \u3164\uca46\u315c\u313e \u3164\uca46\u315c\u313f \u3164\uca46\u315c\u3140 \u3164\uca46\u315c\u3141 \u3164\uca46\u315c\u3142 \u3164\uca46\u315c\u3143 \u3164\uca46\u315c\u3144 \u3164\uca46\u315c\u3145 \u3164\uca46\u315c\u3146 \u3164\uca46\u315c\u3147 \u3164\uca46\u315c\u3148 \u3164\uca46\u315c\u3149 \u3164\uca46\u315c\u314a \u3164\uca46\u315c\u314b \u3164\uca46\u315c\u314c \u3164\uca46\u315c\u314d \u3164\uca46\u315c\u314e \u3164\uca46\u315c\u314f \u3164\uca46\u315c\u3164 ",
-" row a0_cd_: \u3164\uca46\u315d\uca46 \u3164\uca46\u315d\u3131 \u3164\uca46\u315d\u3132 \u3164\uca46\u315d\u3133 \u3164\uca46\u315d\u3134 \u3164\uca46\u315d\u3135 \u3164\uca46\u315d\u3136 \u3164\uca46\u315d\u3137 \u3164\uca46\u315d\u3138 \u3164\uca46\u315d\u3139 \u3164\uca46\u315d\u313a \u3164\uca46\u315d\u313b \u3164\uca46\u315d\u313c \u3164\uca46\u315d\u313d \u3164\uca46\u315d\u313e \u3164\uca46\u315d\u313f \u3164\uca46\u315d\u3140 \u3164\uca46\u315d\u3141 \u3164\uca46\u315d\u3142 \u3164\uca46\u315d\u3143 \u3164\uca46\u315d\u3144 \u3164\uca46\u315d\u3145 \u3164\uca46\u315d\u3146 \u3164\uca46\u315d\u3147 \u3164\uca46\u315d\u3148 \u3164\uca46\u315d\u3149 \u3164\uca46\u315d\u314a \u3164\uca46\u315d\u314b \u3164\uca46\u315d\u314c \u3164\uca46\u315d\u314d \u3164\uca46\u315d\u314e \u3164\uca46\u315d\u314f \u3164\uca46\u315d\u3164 ",
-" row a0_ce_: \u3164\uca46\u315e\uca46 \u3164\uca46\u315e\u3131 \u3164\uca46\u315e\u3132 \u3164\uca46\u315e\u3133 \u3164\uca46\u315e\u3134 \u3164\uca46\u315e\u3135 \u3164\uca46\u315e\u3136 \u3164\uca46\u315e\u3137 \u3164\uca46\u315e\u3138 \u3164\uca46\u315e\u3139 \u3164\uca46\u315e\u313a \u3164\uca46\u315e\u313b \u3164\uca46\u315e\u313c \u3164\uca46\u315e\u313d \u3164\uca46\u315e\u313e \u3164\uca46\u315e\u313f \u3164\uca46\u315e\u3140 \u3164\uca46\u315e\u3141 \u3164\uca46\u315e\u3142 \u3164\uca46\u315e\u3143 \u3164\uca46\u315e\u3144 \u3164\uca46\u315e\u3145 \u3164\uca46\u315e\u3146 \u3164\uca46\u315e\u3147 \u3164\uca46\u315e\u3148 \u3164\uca46\u315e\u3149 \u3164\uca46\u315e\u314a \u3164\uca46\u315e\u314b \u3164\uca46\u315e\u314c \u3164\uca46\u315e\u314d \u3164\uca46\u315e\u314e \u3164\uca46\u315e\u314f \u3164\uca46\u315e\u3164 ",
-" row a0_cf_: \u3164\uca46\u315f\uca46 \u3164\uca46\u315f\u3131 \u3164\uca46\u315f\u3132 \u3164\uca46\u315f\u3133 \u3164\uca46\u315f\u3134 \u3164\uca46\u315f\u3135 \u3164\uca46\u315f\u3136 \u3164\uca46\u315f\u3137 \u3164\uca46\u315f\u3138 \u3164\uca46\u315f\u3139 \u3164\uca46\u315f\u313a \u3164\uca46\u315f\u313b \u3164\uca46\u315f\u313c \u3164\uca46\u315f\u313d \u3164\uca46\u315f\u313e \u3164\uca46\u315f\u313f \u3164\uca46\u315f\u3140 \u3164\uca46\u315f\u3141 \u3164\uca46\u315f\u3142 \u3164\uca46\u315f\u3143 \u3164\uca46\u315f\u3144 \u3164\uca46\u315f\u3145 \u3164\uca46\u315f\u3146 \u3164\uca46\u315f\u3147 \u3164\uca46\u315f\u3148 \u3164\uca46\u315f\u3149 \u3164\uca46\u315f\u314a \u3164\uca46\u315f\u314b \u3164\uca46\u315f\u314c \u3164\uca46\u315f\u314d \u3164\uca46\u315f\u314e \u3164\uca46\u315f\u314f \u3164\uca46\u315f\u3164 ",
-" row a0_d0_: \u3164\uca46\u3160\uca46 \u3164\uca46\u3160\u3131 \u3164\uca46\u3160\u3132 \u3164\uca46\u3160\u3133 \u3164\uca46\u3160\u3134 \u3164\uca46\u3160\u3135 \u3164\uca46\u3160\u3136 \u3164\uca46\u3160\u3137 \u3164\uca46\u3160\u3138 \u3164\uca46\u3160\u3139 \u3164\uca46\u3160\u313a \u3164\uca46\u3160\u313b \u3164\uca46\u3160\u313c \u3164\uca46\u3160\u313d \u3164\uca46\u3160\u313e \u3164\uca46\u3160\u313f \u3164\uca46\u3160\u3140 \u3164\uca46\u3160\u3141 \u3164\uca46\u3160\u3142 \u3164\uca46\u3160\u3143 \u3164\uca46\u3160\u3144 \u3164\uca46\u3160\u3145 \u3164\uca46\u3160\u3146 \u3164\uca46\u3160\u3147 \u3164\uca46\u3160\u3148 \u3164\uca46\u3160\u3149 \u3164\uca46\u3160\u314a \u3164\uca46\u3160\u314b \u3164\uca46\u3160\u314c \u3164\uca46\u3160\u314d \u3164\uca46\u3160\u314e \u3164\uca46\u3160\u314f \u3164\uca46\u3160\u3164 ",
-" row a0_d1_: \u3164\uca46\u3161\uca46 \u3164\uca46\u3161\u3131 \u3164\uca46\u3161\u3132 \u3164\uca46\u3161\u3133 \u3164\uca46\u3161\u3134 \u3164\uca46\u3161\u3135 \u3164\uca46\u3161\u3136 \u3164\uca46\u3161\u3137 \u3164\uca46\u3161\u3138 \u3164\uca46\u3161\u3139 \u3164\uca46\u3161\u313a \u3164\uca46\u3161\u313b \u3164\uca46\u3161\u313c \u3164\uca46\u3161\u313d \u3164\uca46\u3161\u313e \u3164\uca46\u3161\u313f \u3164\uca46\u3161\u3140 \u3164\uca46\u3161\u3141 \u3164\uca46\u3161\u3142 \u3164\uca46\u3161\u3143 \u3164\uca46\u3161\u3144 \u3164\uca46\u3161\u3145 \u3164\uca46\u3161\u3146 \u3164\uca46\u3161\u3147 \u3164\uca46\u3161\u3148 \u3164\uca46\u3161\u3149 \u3164\uca46\u3161\u314a \u3164\uca46\u3161\u314b \u3164\uca46\u3161\u314c \u3164\uca46\u3161\u314d \u3164\uca46\u3161\u314e \u3164\uca46\u3161\u314f \u3164\uca46\u3161\u3164 ",
-" row a0_d2_: \u3164\uca46\u3162\uca46 \u3164\uca46\u3162\u3131 \u3164\uca46\u3162\u3132 \u3164\uca46\u3162\u3133 \u3164\uca46\u3162\u3134 \u3164\uca46\u3162\u3135 \u3164\uca46\u3162\u3136 \u3164\uca46\u3162\u3137 \u3164\uca46\u3162\u3138 \u3164\uca46\u3162\u3139 \u3164\uca46\u3162\u313a \u3164\uca46\u3162\u313b \u3164\uca46\u3162\u313c \u3164\uca46\u3162\u313d \u3164\uca46\u3162\u313e \u3164\uca46\u3162\u313f \u3164\uca46\u3162\u3140 \u3164\uca46\u3162\u3141 \u3164\uca46\u3162\u3142 \u3164\uca46\u3162\u3143 \u3164\uca46\u3162\u3144 \u3164\uca46\u3162\u3145 \u3164\uca46\u3162\u3146 \u3164\uca46\u3162\u3147 \u3164\uca46\u3162\u3148 \u3164\uca46\u3162\u3149 \u3164\uca46\u3162\u314a \u3164\uca46\u3162\u314b \u3164\uca46\u3162\u314c \u3164\uca46\u3162\u314d \u3164\uca46\u3162\u314e \u3164\uca46\u3162\u314f \u3164\uca46\u3162\u3164 ",
-" row a0_d3_: \u3164\uca46\u3163\uca46 \u3164\uca46\u3163\u3131 \u3164\uca46\u3163\u3132 \u3164\uca46\u3163\u3133 \u3164\uca46\u3163\u3134 \u3164\uca46\u3163\u3135 \u3164\uca46\u3163\u3136 \u3164\uca46\u3163\u3137 \u3164\uca46\u3163\u3138 \u3164\uca46\u3163\u3139 \u3164\uca46\u3163\u313a \u3164\uca46\u3163\u313b \u3164\uca46\u3163\u313c \u3164\uca46\u3163\u313d \u3164\uca46\u3163\u313e \u3164\uca46\u3163\u313f \u3164\uca46\u3163\u3140 \u3164\uca46\u3163\u3141 \u3164\uca46\u3163\u3142 \u3164\uca46\u3163\u3143 \u3164\uca46\u3163\u3144 \u3164\uca46\u3163\u3145 \u3164\uca46\u3163\u3146 \u3164\uca46\u3163\u3147 \u3164\uca46\u3163\u3148 \u3164\uca46\u3163\u3149 \u3164\uca46\u3163\u314a \u3164\uca46\u3163\u314b \u3164\uca46\u3163\u314c \u3164\uca46\u3163\u314d \u3164\uca46\u3163\u314e \u3164\uca46\u3163\u314f \u3164\uca46\u3163\u3164 ",
-" row a0_d4_: \u3164\uca46\u3164\uca46 \u3164\uca46\u3164\u3131 \u3164\uca46\u3164\u3132 \u3164\uca46\u3164\u3133 \u3164\uca46\u3164\u3134 \u3164\uca46\u3164\u3135 \u3164\uca46\u3164\u3136 \u3164\uca46\u3164\u3137 \u3164\uca46\u3164\u3138 \u3164\uca46\u3164\u3139 \u3164\uca46\u3164\u313a \u3164\uca46\u3164\u313b \u3164\uca46\u3164\u313c \u3164\uca46\u3164\u313d \u3164\uca46\u3164\u313e \u3164\uca46\u3164\u313f \u3164\uca46\u3164\u3140 \u3164\uca46\u3164\u3141 \u3164\uca46\u3164\u3142 \u3164\uca46\u3164\u3143 \u3164\uca46\u3164\u3144 \u3164\uca46\u3164\u3145 \u3164\uca46\u3164\u3146 \u3164\uca46\u3164\u3147 \u3164\uca46\u3164\u3148 \u3164\uca46\u3164\u3149 \u3164\uca46\u3164\u314a \u3164\uca46\u3164\u314b \u3164\uca46\u3164\u314c \u3164\uca46\u3164\u314d \u3164\uca46\u3164\u314e \u3164\uca46\u3164\u314f \u3164\uca46\u3164\u3164 ",
-" row a1_be_: \u3164\u3131\u314e\uca46 \u3164\u3131\u314e\u3131 \u3164\u3131\u314e\u3132 \u3164\u3131\u314e\u3133 \u3164\u3131\u314e\u3134 \u3164\u3131\u314e\u3135 \u3164\u3131\u314e\u3136 \u3164\u3131\u314e\u3137 \u3164\u3131\u314e\u3138 \u3164\u3131\u314e\u3139 \u3164\u3131\u314e\u313a \u3164\u3131\u314e\u313b \u3164\u3131\u314e\u313c \u3164\u3131\u314e\u313d \u3164\u3131\u314e\u313e \u3164\u3131\u314e\u313f \u3164\u3131\u314e\u3140 \u3164\u3131\u314e\u3141 \u3164\u3131\u314e\u3142 \u3164\u3131\u314e\u3143 \u3164\u3131\u314e\u3144 \u3164\u3131\u314e\u3145 \u3164\u3131\u314e\u3146 \u3164\u3131\u314e\u3147 \u3164\u3131\u314e\u3148 \u3164\u3131\u314e\u3149 \u3164\u3131\u314e\u314a \u3164\u3131\u314e\u314b \u3164\u3131\u314e\u314c \u3164\u3131\u314e\u314d \u3164\u3131\u314e\u314e \u3164\u3131\u314e\u314f \u3164\u3131\u314e\u3164 ",
-" row a1_bf_: \u3164\u3131\u314f\uca46 \uac01 \uac02 \uac03 \uac04 \uac05 \uac06 \uac07 \u3164\u3131\u314f\u3138 \uac08 \uac09 \uac0a \uac0b \uac0c \uac0d \uac0e \uac0f \uac10 \uac11 \u3164\u3131\u314f\u3143 \uac12 \uac13 \uac14 \uac15 \uac16 \u3164\u3131\u314f\u3149 \uac17 \uac18 \uac19 \uac1a \uac1b \u3164\u3131\u314f\u314f \uac00 ",
-" row a1_c0_: \u3164\u3131\u3150\uca46 \uac1d \uac1e \uac1f \uac20 \uac21 \uac22 \uac23 \u3164\u3131\u3150\u3138 \uac24 \uac25 \uac26 \uac27 \uac28 \uac29 \uac2a \uac2b \uac2c \uac2d \u3164\u3131\u3150\u3143 \uac2e \uac2f \uac30 \uac31 \uac32 \u3164\u3131\u3150\u3149 \uac33 \uac34 \uac35 \uac36 \uac37 \u3164\u3131\u3150\u314f \uac1c ",
-" row a1_c1_: \u3164\u3131\u3151\uca46 \uac39 \uac3a \uac3b \uac3c \uac3d \uac3e \uac3f \u3164\u3131\u3151\u3138 \uac40 \uac41 \uac42 \uac43 \uac44 \uac45 \uac46 \uac47 \uac48 \uac49 \u3164\u3131\u3151\u3143 \uac4a \uac4b \uac4c \uac4d \uac4e \u3164\u3131\u3151\u3149 \uac4f \uac50 \uac51 \uac52 \uac53 \u3164\u3131\u3151\u314f \uac38 ",
-" row a1_c2_: \u3164\u3131\u3152\uca46 \uac55 \uac56 \uac57 \uac58 \uac59 \uac5a \uac5b \u3164\u3131\u3152\u3138 \uac5c \uac5d \uac5e \uac5f \uac60 \uac61 \uac62 \uac63 \uac64 \uac65 \u3164\u3131\u3152\u3143 \uac66 \uac67 \uac68 \uac69 \uac6a \u3164\u3131\u3152\u3149 \uac6b \uac6c \uac6d \uac6e \uac6f \u3164\u3131\u3152\u314f \uac54 ",
-" row a1_c3_: \u3164\u3131\u3153\uca46 \uac71 \uac72 \uac73 \uac74 \uac75 \uac76 \uac77 \u3164\u3131\u3153\u3138 \uac78 \uac79 \uac7a \uac7b \uac7c \uac7d \uac7e \uac7f \uac80 \uac81 \u3164\u3131\u3153\u3143 \uac82 \uac83 \uac84 \uac85 \uac86 \u3164\u3131\u3153\u3149 \uac87 \uac88 \uac89 \uac8a \uac8b \u3164\u3131\u3153\u314f \uac70 ",
-" row a1_c4_: \u3164\u3131\u3154\uca46 \uac8d \uac8e \uac8f \uac90 \uac91 \uac92 \uac93 \u3164\u3131\u3154\u3138 \uac94 \uac95 \uac96 \uac97 \uac98 \uac99 \uac9a \uac9b \uac9c \uac9d \u3164\u3131\u3154\u3143 \uac9e \uac9f \uaca0 \uaca1 \uaca2 \u3164\u3131\u3154\u3149 \uaca3 \uaca4 \uaca5 \uaca6 \uaca7 \u3164\u3131\u3154\u314f \uac8c ",
-" row a1_c5_: \u3164\u3131\u3155\uca46 \uaca9 \uacaa \uacab \uacac \uacad \uacae \uacaf \u3164\u3131\u3155\u3138 \uacb0 \uacb1 \uacb2 \uacb3 \uacb4 \uacb5 \uacb6 \uacb7 \uacb8 \uacb9 \u3164\u3131\u3155\u3143 \uacba \uacbb \uacbc \uacbd \uacbe \u3164\u3131\u3155\u3149 \uacbf \uacc0 \uacc1 \uacc2 \uacc3 \u3164\u3131\u3155\u314f \uaca8 ",
-" row a1_c6_: \u3164\u3131\u3156\uca46 \uacc5 \uacc6 \uacc7 \uacc8 \uacc9 \uacca \uaccb \u3164\u3131\u3156\u3138 \uaccc \uaccd \uacce \uaccf \uacd0 \uacd1 \uacd2 \uacd3 \uacd4 \uacd5 \u3164\u3131\u3156\u3143 \uacd6 \uacd7 \uacd8 \uacd9 \uacda \u3164\u3131\u3156\u3149 \uacdb \uacdc \uacdd \uacde \uacdf \u3164\u3131\u3156\u314f \uacc4 ",
-" row a1_c7_: \u3164\u3131\u3157\uca46 \uace1 \uace2 \uace3 \uace4 \uace5 \uace6 \uace7 \u3164\u3131\u3157\u3138 \uace8 \uace9 \uacea \uaceb \uacec \uaced \uacee \uacef \uacf0 \uacf1 \u3164\u3131\u3157\u3143 \uacf2 \uacf3 \uacf4 \uacf5 \uacf6 \u3164\u3131\u3157\u3149 \uacf7 \uacf8 \uacf9 \uacfa \uacfb \u3164\u3131\u3157\u314f \uace0 ",
-" row a1_c8_: \u3164\u3131\u3158\uca46 \uacfd \uacfe \uacff \uad00 \uad01 \uad02 \uad03 \u3164\u3131\u3158\u3138 \uad04 \uad05 \uad06 \uad07 \uad08 \uad09 \uad0a \uad0b \uad0c \uad0d \u3164\u3131\u3158\u3143 \uad0e \uad0f \uad10 \uad11 \uad12 \u3164\u3131\u3158\u3149 \uad13 \uad14 \uad15 \uad16 \uad17 \u3164\u3131\u3158\u314f \uacfc ",
-" row a1_c9_: \u3164\u3131\u3159\uca46 \uad19 \uad1a \uad1b \uad1c \uad1d \uad1e \uad1f \u3164\u3131\u3159\u3138 \uad20 \uad21 \uad22 \uad23 \uad24 \uad25 \uad26 \uad27 \uad28 \uad29 \u3164\u3131\u3159\u3143 \uad2a \uad2b \uad2c \uad2d \uad2e \u3164\u3131\u3159\u3149 \uad2f \uad30 \uad31 \uad32 \uad33 \u3164\u3131\u3159\u314f \uad18 ",
-" row a1_ca_: \u3164\u3131\u315a\uca46 \uad35 \uad36 \uad37 \uad38 \uad39 \uad3a \uad3b \u3164\u3131\u315a\u3138 \uad3c \uad3d \uad3e \uad3f \uad40 \uad41 \uad42 \uad43 \uad44 \uad45 \u3164\u3131\u315a\u3143 \uad46 \uad47 \uad48 \uad49 \uad4a \u3164\u3131\u315a\u3149 \uad4b \uad4c \uad4d \uad4e \uad4f \u3164\u3131\u315a\u314f \uad34 ",
-" row a1_cb_: \u3164\u3131\u315b\uca46 \uad51 \uad52 \uad53 \uad54 \uad55 \uad56 \uad57 \u3164\u3131\u315b\u3138 \uad58 \uad59 \uad5a \uad5b \uad5c \uad5d \uad5e \uad5f \uad60 \uad61 \u3164\u3131\u315b\u3143 \uad62 \uad63 \uad64 \uad65 \uad66 \u3164\u3131\u315b\u3149 \uad67 \uad68 \uad69 \uad6a \uad6b \u3164\u3131\u315b\u314f \uad50 ",
-" row a1_cc_: \u3164\u3131\u315c\uca46 \uad6d \uad6e \uad6f \uad70 \uad71 \uad72 \uad73 \u3164\u3131\u315c\u3138 \uad74 \uad75 \uad76 \uad77 \uad78 \uad79 \uad7a \uad7b \uad7c \uad7d \u3164\u3131\u315c\u3143 \uad7e \uad7f \uad80 \uad81 \uad82 \u3164\u3131\u315c\u3149 \uad83 \uad84 \uad85 \uad86 \uad87 \u3164\u3131\u315c\u314f \uad6c ",
-" row a1_cd_: \u3164\u3131\u315d\uca46 \uad89 \uad8a \uad8b \uad8c \uad8d \uad8e \uad8f \u3164\u3131\u315d\u3138 \uad90 \uad91 \uad92 \uad93 \uad94 \uad95 \uad96 \uad97 \uad98 \uad99 \u3164\u3131\u315d\u3143 \uad9a \uad9b \uad9c \uad9d \uad9e \u3164\u3131\u315d\u3149 \uad9f \uada0 \uada1 \uada2 \uada3 \u3164\u3131\u315d\u314f \uad88 ",
-" row a1_ce_: \u3164\u3131\u315e\uca46 \uada5 \uada6 \uada7 \uada8 \uada9 \uadaa \uadab \u3164\u3131\u315e\u3138 \uadac \uadad \uadae \uadaf \uadb0 \uadb1 \uadb2 \uadb3 \uadb4 \uadb5 \u3164\u3131\u315e\u3143 \uadb6 \uadb7 \uadb8 \uadb9 \uadba \u3164\u3131\u315e\u3149 \uadbb \uadbc \uadbd \uadbe \uadbf \u3164\u3131\u315e\u314f \uada4 ",
-" row a1_cf_: \u3164\u3131\u315f\uca46 \uadc1 \uadc2 \uadc3 \uadc4 \uadc5 \uadc6 \uadc7 \u3164\u3131\u315f\u3138 \uadc8 \uadc9 \uadca \uadcb \uadcc \uadcd \uadce \uadcf \uadd0 \uadd1 \u3164\u3131\u315f\u3143 \uadd2 \uadd3 \uadd4 \uadd5 \uadd6 \u3164\u3131\u315f\u3149 \uadd7 \uadd8 \uadd9 \uadda \uaddb \u3164\u3131\u315f\u314f \uadc0 ",
-" row a1_d0_: \u3164\u3131\u3160\uca46 \uaddd \uadde \uaddf \uade0 \uade1 \uade2 \uade3 \u3164\u3131\u3160\u3138 \uade4 \uade5 \uade6 \uade7 \uade8 \uade9 \uadea \uadeb \uadec \uaded \u3164\u3131\u3160\u3143 \uadee \uadef \uadf0 \uadf1 \uadf2 \u3164\u3131\u3160\u3149 \uadf3 \uadf4 \uadf5 \uadf6 \uadf7 \u3164\u3131\u3160\u314f \uaddc ",
-" row a1_d1_: \u3164\u3131\u3161\uca46 \uadf9 \uadfa \uadfb \uadfc \uadfd \uadfe \uadff \u3164\u3131\u3161\u3138 \uae00 \uae01 \uae02 \uae03 \uae04 \uae05 \uae06 \uae07 \uae08 \uae09 \u3164\u3131\u3161\u3143 \uae0a \uae0b \uae0c \uae0d \uae0e \u3164\u3131\u3161\u3149 \uae0f \uae10 \uae11 \uae12 \uae13 \u3164\u3131\u3161\u314f \uadf8 ",
-" row a1_d2_: \u3164\u3131\u3162\uca46 \uae15 \uae16 \uae17 \uae18 \uae19 \uae1a \uae1b \u3164\u3131\u3162\u3138 \uae1c \uae1d \uae1e \uae1f \uae20 \uae21 \uae22 \uae23 \uae24 \uae25 \u3164\u3131\u3162\u3143 \uae26 \uae27 \uae28 \uae29 \uae2a \u3164\u3131\u3162\u3149 \uae2b \uae2c \uae2d \uae2e \uae2f \u3164\u3131\u3162\u314f \uae14 ",
-" row a1_d3_: \u3164\u3131\u3163\uca46 \uae31 \uae32 \uae33 \uae34 \uae35 \uae36 \uae37 \u3164\u3131\u3163\u3138 \uae38 \uae39 \uae3a \uae3b \uae3c \uae3d \uae3e \uae3f \uae40 \uae41 \u3164\u3131\u3163\u3143 \uae42 \uae43 \uae44 \uae45 \uae46 \u3164\u3131\u3163\u3149 \uae47 \uae48 \uae49 \uae4a \uae4b \u3164\u3131\u3163\u314f \uae30 ",
-" row a1_d4_: \u3164\u3131\u3164\uca46 \u3164\u3131\u3164\u3131 \u3164\u3131\u3164\u3132 \u3164\u3131\u3164\u3133 \u3164\u3131\u3164\u3134 \u3164\u3131\u3164\u3135 \u3164\u3131\u3164\u3136 \u3164\u3131\u3164\u3137 \u3164\u3131\u3164\u3138 \u3164\u3131\u3164\u3139 \u3164\u3131\u3164\u313a \u3164\u3131\u3164\u313b \u3164\u3131\u3164\u313c \u3164\u3131\u3164\u313d \u3164\u3131\u3164\u313e \u3164\u3131\u3164\u313f \u3164\u3131\u3164\u3140 \u3164\u3131\u3164\u3141 \u3164\u3131\u3164\u3142 \u3164\u3131\u3164\u3143 \u3164\u3131\u3164\u3144 \u3164\u3131\u3164\u3145 \u3164\u3131\u3164\u3146 \u3164\u3131\u3164\u3147 \u3164\u3131\u3164\u3148 \u3164\u3131\u3164\u3149 \u3164\u3131\u3164\u314a \u3164\u3131\u3164\u314b \u3164\u3131\u3164\u314c \u3164\u3131\u3164\u314d \u3164\u3131\u3164\u314e \u3164\u3131\u3164\u314f \u3164\u3131\u3164\u3164 ",
-" row a2_be_: \u3164\u3132\u314e\uca46 \u3164\u3132\u314e\u3131 \u3164\u3132\u314e\u3132 \u3164\u3132\u314e\u3133 \u3164\u3132\u314e\u3134 \u3164\u3132\u314e\u3135 \u3164\u3132\u314e\u3136 \u3164\u3132\u314e\u3137 \u3164\u3132\u314e\u3138 \u3164\u3132\u314e\u3139 \u3164\u3132\u314e\u313a \u3164\u3132\u314e\u313b \u3164\u3132\u314e\u313c \u3164\u3132\u314e\u313d \u3164\u3132\u314e\u313e \u3164\u3132\u314e\u313f \u3164\u3132\u314e\u3140 \u3164\u3132\u314e\u3141 \u3164\u3132\u314e\u3142 \u3164\u3132\u314e\u3143 \u3164\u3132\u314e\u3144 \u3164\u3132\u314e\u3145 \u3164\u3132\u314e\u3146 \u3164\u3132\u314e\u3147 \u3164\u3132\u314e\u3148 \u3164\u3132\u314e\u3149 \u3164\u3132\u314e\u314a \u3164\u3132\u314e\u314b \u3164\u3132\u314e\u314c \u3164\u3132\u314e\u314d \u3164\u3132\u314e\u314e \u3164\u3132\u314e\u314f \u3164\u3132\u314e\u3164 ",
-" row a2_bf_: \u3164\u3132\u314f\uca46 \uae4d \uae4e \uae4f \uae50 \uae51 \uae52 \uae53 \u3164\u3132\u314f\u3138 \uae54 \uae55 \uae56 \uae57 \uae58 \uae59 \uae5a \uae5b \uae5c \uae5d \u3164\u3132\u314f\u3143 \uae5e \uae5f \uae60 \uae61 \uae62 \u3164\u3132\u314f\u3149 \uae63 \uae64 \uae65 \uae66 \uae67 \u3164\u3132\u314f\u314f \uae4c ",
-" row a2_c0_: \u3164\u3132\u3150\uca46 \uae69 \uae6a \uae6b \uae6c \uae6d \uae6e \uae6f \u3164\u3132\u3150\u3138 \uae70 \uae71 \uae72 \uae73 \uae74 \uae75 \uae76 \uae77 \uae78 \uae79 \u3164\u3132\u3150\u3143 \uae7a \uae7b \uae7c \uae7d \uae7e \u3164\u3132\u3150\u3149 \uae7f \uae80 \uae81 \uae82 \uae83 \u3164\u3132\u3150\u314f \uae68 ",
-" row a2_c1_: \u3164\u3132\u3151\uca46 \uae85 \uae86 \uae87 \uae88 \uae89 \uae8a \uae8b \u3164\u3132\u3151\u3138 \uae8c \uae8d \uae8e \uae8f \uae90 \uae91 \uae92 \uae93 \uae94 \uae95 \u3164\u3132\u3151\u3143 \uae96 \uae97 \uae98 \uae99 \uae9a \u3164\u3132\u3151\u3149 \uae9b \uae9c \uae9d \uae9e \uae9f \u3164\u3132\u3151\u314f \uae84 ",
-" row a2_c2_: \u3164\u3132\u3152\uca46 \uaea1 \uaea2 \uaea3 \uaea4 \uaea5 \uaea6 \uaea7 \u3164\u3132\u3152\u3138 \uaea8 \uaea9 \uaeaa \uaeab \uaeac \uaead \uaeae \uaeaf \uaeb0 \uaeb1 \u3164\u3132\u3152\u3143 \uaeb2 \uaeb3 \uaeb4 \uaeb5 \uaeb6 \u3164\u3132\u3152\u3149 \uaeb7 \uaeb8 \uaeb9 \uaeba \uaebb \u3164\u3132\u3152\u314f \uaea0 ",
-" row a2_c3_: \u3164\u3132\u3153\uca46 \uaebd \uaebe \uaebf \uaec0 \uaec1 \uaec2 \uaec3 \u3164\u3132\u3153\u3138 \uaec4 \uaec5 \uaec6 \uaec7 \uaec8 \uaec9 \uaeca \uaecb \uaecc \uaecd \u3164\u3132\u3153\u3143 \uaece \uaecf \uaed0 \uaed1 \uaed2 \u3164\u3132\u3153\u3149 \uaed3 \uaed4 \uaed5 \uaed6 \uaed7 \u3164\u3132\u3153\u314f \uaebc ",
-" row a2_c4_: \u3164\u3132\u3154\uca46 \uaed9 \uaeda \uaedb \uaedc \uaedd \uaede \uaedf \u3164\u3132\u3154\u3138 \uaee0 \uaee1 \uaee2 \uaee3 \uaee4 \uaee5 \uaee6 \uaee7 \uaee8 \uaee9 \u3164\u3132\u3154\u3143 \uaeea \uaeeb \uaeec \uaeed \uaeee \u3164\u3132\u3154\u3149 \uaeef \uaef0 \uaef1 \uaef2 \uaef3 \u3164\u3132\u3154\u314f \uaed8 ",
-" row a2_c5_: \u3164\u3132\u3155\uca46 \uaef5 \uaef6 \uaef7 \uaef8 \uaef9 \uaefa \uaefb \u3164\u3132\u3155\u3138 \uaefc \uaefd \uaefe \uaeff \uaf00 \uaf01 \uaf02 \uaf03 \uaf04 \uaf05 \u3164\u3132\u3155\u3143 \uaf06 \uaf07 \uaf08 \uaf09 \uaf0a \u3164\u3132\u3155\u3149 \uaf0b \uaf0c \uaf0d \uaf0e \uaf0f \u3164\u3132\u3155\u314f \uaef4 ",
-" row a2_c6_: \u3164\u3132\u3156\uca46 \uaf11 \uaf12 \uaf13 \uaf14 \uaf15 \uaf16 \uaf17 \u3164\u3132\u3156\u3138 \uaf18 \uaf19 \uaf1a \uaf1b \uaf1c \uaf1d \uaf1e \uaf1f \uaf20 \uaf21 \u3164\u3132\u3156\u3143 \uaf22 \uaf23 \uaf24 \uaf25 \uaf26 \u3164\u3132\u3156\u3149 \uaf27 \uaf28 \uaf29 \uaf2a \uaf2b \u3164\u3132\u3156\u314f \uaf10 ",
-" row a2_c7_: \u3164\u3132\u3157\uca46 \uaf2d \uaf2e \uaf2f \uaf30 \uaf31 \uaf32 \uaf33 \u3164\u3132\u3157\u3138 \uaf34 \uaf35 \uaf36 \uaf37 \uaf38 \uaf39 \uaf3a \uaf3b \uaf3c \uaf3d \u3164\u3132\u3157\u3143 \uaf3e \uaf3f \uaf40 \uaf41 \uaf42 \u3164\u3132\u3157\u3149 \uaf43 \uaf44 \uaf45 \uaf46 \uaf47 \u3164\u3132\u3157\u314f \uaf2c ",
-" row a2_c8_: \u3164\u3132\u3158\uca46 \uaf49 \uaf4a \uaf4b \uaf4c \uaf4d \uaf4e \uaf4f \u3164\u3132\u3158\u3138 \uaf50 \uaf51 \uaf52 \uaf53 \uaf54 \uaf55 \uaf56 \uaf57 \uaf58 \uaf59 \u3164\u3132\u3158\u3143 \uaf5a \uaf5b \uaf5c \uaf5d \uaf5e \u3164\u3132\u3158\u3149 \uaf5f \uaf60 \uaf61 \uaf62 \uaf63 \u3164\u3132\u3158\u314f \uaf48 ",
-" row a2_c9_: \u3164\u3132\u3159\uca46 \uaf65 \uaf66 \uaf67 \uaf68 \uaf69 \uaf6a \uaf6b \u3164\u3132\u3159\u3138 \uaf6c \uaf6d \uaf6e \uaf6f \uaf70 \uaf71 \uaf72 \uaf73 \uaf74 \uaf75 \u3164\u3132\u3159\u3143 \uaf76 \uaf77 \uaf78 \uaf79 \uaf7a \u3164\u3132\u3159\u3149 \uaf7b \uaf7c \uaf7d \uaf7e \uaf7f \u3164\u3132\u3159\u314f \uaf64 ",
-" row a2_ca_: \u3164\u3132\u315a\uca46 \uaf81 \uaf82 \uaf83 \uaf84 \uaf85 \uaf86 \uaf87 \u3164\u3132\u315a\u3138 \uaf88 \uaf89 \uaf8a \uaf8b \uaf8c \uaf8d \uaf8e \uaf8f \uaf90 \uaf91 \u3164\u3132\u315a\u3143 \uaf92 \uaf93 \uaf94 \uaf95 \uaf96 \u3164\u3132\u315a\u3149 \uaf97 \uaf98 \uaf99 \uaf9a \uaf9b \u3164\u3132\u315a\u314f \uaf80 ",
-" row a2_cb_: \u3164\u3132\u315b\uca46 \uaf9d \uaf9e \uaf9f \uafa0 \uafa1 \uafa2 \uafa3 \u3164\u3132\u315b\u3138 \uafa4 \uafa5 \uafa6 \uafa7 \uafa8 \uafa9 \uafaa \uafab \uafac \uafad \u3164\u3132\u315b\u3143 \uafae \uafaf \uafb0 \uafb1 \uafb2 \u3164\u3132\u315b\u3149 \uafb3 \uafb4 \uafb5 \uafb6 \uafb7 \u3164\u3132\u315b\u314f \uaf9c ",
-" row a2_cc_: \u3164\u3132\u315c\uca46 \uafb9 \uafba \uafbb \uafbc \uafbd \uafbe \uafbf \u3164\u3132\u315c\u3138 \uafc0 \uafc1 \uafc2 \uafc3 \uafc4 \uafc5 \uafc6 \uafc7 \uafc8 \uafc9 \u3164\u3132\u315c\u3143 \uafca \uafcb \uafcc \uafcd \uafce \u3164\u3132\u315c\u3149 \uafcf \uafd0 \uafd1 \uafd2 \uafd3 \u3164\u3132\u315c\u314f \uafb8 ",
-" row a2_cd_: \u3164\u3132\u315d\uca46 \uafd5 \uafd6 \uafd7 \uafd8 \uafd9 \uafda \uafdb \u3164\u3132\u315d\u3138 \uafdc \uafdd \uafde \uafdf \uafe0 \uafe1 \uafe2 \uafe3 \uafe4 \uafe5 \u3164\u3132\u315d\u3143 \uafe6 \uafe7 \uafe8 \uafe9 \uafea \u3164\u3132\u315d\u3149 \uafeb \uafec \uafed \uafee \uafef \u3164\u3132\u315d\u314f \uafd4 ",
-" row a2_ce_: \u3164\u3132\u315e\uca46 \uaff1 \uaff2 \uaff3 \uaff4 \uaff5 \uaff6 \uaff7 \u3164\u3132\u315e\u3138 \uaff8 \uaff9 \uaffa \uaffb \uaffc \uaffd \uaffe \uafff \ub000 \ub001 \u3164\u3132\u315e\u3143 \ub002 \ub003 \ub004 \ub005 \ub006 \u3164\u3132\u315e\u3149 \ub007 \ub008 \ub009 \ub00a \ub00b \u3164\u3132\u315e\u314f \uaff0 ",
-" row a2_cf_: \u3164\u3132\u315f\uca46 \ub00d \ub00e \ub00f \ub010 \ub011 \ub012 \ub013 \u3164\u3132\u315f\u3138 \ub014 \ub015 \ub016 \ub017 \ub018 \ub019 \ub01a \ub01b \ub01c \ub01d \u3164\u3132\u315f\u3143 \ub01e \ub01f \ub020 \ub021 \ub022 \u3164\u3132\u315f\u3149 \ub023 \ub024 \ub025 \ub026 \ub027 \u3164\u3132\u315f\u314f \ub00c ",
-" row a2_d0_: \u3164\u3132\u3160\uca46 \ub029 \ub02a \ub02b \ub02c \ub02d \ub02e \ub02f \u3164\u3132\u3160\u3138 \ub030 \ub031 \ub032 \ub033 \ub034 \ub035 \ub036 \ub037 \ub038 \ub039 \u3164\u3132\u3160\u3143 \ub03a \ub03b \ub03c \ub03d \ub03e \u3164\u3132\u3160\u3149 \ub03f \ub040 \ub041 \ub042 \ub043 \u3164\u3132\u3160\u314f \ub028 ",
-" row a2_d1_: \u3164\u3132\u3161\uca46 \ub045 \ub046 \ub047 \ub048 \ub049 \ub04a \ub04b \u3164\u3132\u3161\u3138 \ub04c \ub04d \ub04e \ub04f \ub050 \ub051 \ub052 \ub053 \ub054 \ub055 \u3164\u3132\u3161\u3143 \ub056 \ub057 \ub058 \ub059 \ub05a \u3164\u3132\u3161\u3149 \ub05b \ub05c \ub05d \ub05e \ub05f \u3164\u3132\u3161\u314f \ub044 ",
-" row a2_d2_: \u3164\u3132\u3162\uca46 \ub061 \ub062 \ub063 \ub064 \ub065 \ub066 \ub067 \u3164\u3132\u3162\u3138 \ub068 \ub069 \ub06a \ub06b \ub06c \ub06d \ub06e \ub06f \ub070 \ub071 \u3164\u3132\u3162\u3143 \ub072 \ub073 \ub074 \ub075 \ub076 \u3164\u3132\u3162\u3149 \ub077 \ub078 \ub079 \ub07a \ub07b \u3164\u3132\u3162\u314f \ub060 ",
-" row a2_d3_: \u3164\u3132\u3163\uca46 \ub07d \ub07e \ub07f \ub080 \ub081 \ub082 \ub083 \u3164\u3132\u3163\u3138 \ub084 \ub085 \ub086 \ub087 \ub088 \ub089 \ub08a \ub08b \ub08c \ub08d \u3164\u3132\u3163\u3143 \ub08e \ub08f \ub090 \ub091 \ub092 \u3164\u3132\u3163\u3149 \ub093 \ub094 \ub095 \ub096 \ub097 \u3164\u3132\u3163\u314f \ub07c ",
-" row a2_d4_: \u3164\u3132\u3164\uca46 \u3164\u3132\u3164\u3131 \u3164\u3132\u3164\u3132 \u3164\u3132\u3164\u3133 \u3164\u3132\u3164\u3134 \u3164\u3132\u3164\u3135 \u3164\u3132\u3164\u3136 \u3164\u3132\u3164\u3137 \u3164\u3132\u3164\u3138 \u3164\u3132\u3164\u3139 \u3164\u3132\u3164\u313a \u3164\u3132\u3164\u313b \u3164\u3132\u3164\u313c \u3164\u3132\u3164\u313d \u3164\u3132\u3164\u313e \u3164\u3132\u3164\u313f \u3164\u3132\u3164\u3140 \u3164\u3132\u3164\u3141 \u3164\u3132\u3164\u3142 \u3164\u3132\u3164\u3143 \u3164\u3132\u3164\u3144 \u3164\u3132\u3164\u3145 \u3164\u3132\u3164\u3146 \u3164\u3132\u3164\u3147 \u3164\u3132\u3164\u3148 \u3164\u3132\u3164\u3149 \u3164\u3132\u3164\u314a \u3164\u3132\u3164\u314b \u3164\u3132\u3164\u314c \u3164\u3132\u3164\u314d \u3164\u3132\u3164\u314e \u3164\u3132\u3164\u314f \u3164\u3132\u3164\u3164 ",
-" row a3_be_: \u3164\u3133\u314e\uca46 \u3164\u3133\u314e\u3131 \u3164\u3133\u314e\u3132 \u3164\u3133\u314e\u3133 \u3164\u3133\u314e\u3134 \u3164\u3133\u314e\u3135 \u3164\u3133\u314e\u3136 \u3164\u3133\u314e\u3137 \u3164\u3133\u314e\u3138 \u3164\u3133\u314e\u3139 \u3164\u3133\u314e\u313a \u3164\u3133\u314e\u313b \u3164\u3133\u314e\u313c \u3164\u3133\u314e\u313d \u3164\u3133\u314e\u313e \u3164\u3133\u314e\u313f \u3164\u3133\u314e\u3140 \u3164\u3133\u314e\u3141 \u3164\u3133\u314e\u3142 \u3164\u3133\u314e\u3143 \u3164\u3133\u314e\u3144 \u3164\u3133\u314e\u3145 \u3164\u3133\u314e\u3146 \u3164\u3133\u314e\u3147 \u3164\u3133\u314e\u3148 \u3164\u3133\u314e\u3149 \u3164\u3133\u314e\u314a \u3164\u3133\u314e\u314b \u3164\u3133\u314e\u314c \u3164\u3133\u314e\u314d \u3164\u3133\u314e\u314e \u3164\u3133\u314e\u314f \u3164\u3133\u314e\u3164 ",
-" row a3_bf_: \u3164\u3133\u314f\uca46 \u3164\u3133\u314f\u3131 \u3164\u3133\u314f\u3132 \u3164\u3133\u314f\u3133 \u3164\u3133\u314f\u3134 \u3164\u3133\u314f\u3135 \u3164\u3133\u314f\u3136 \u3164\u3133\u314f\u3137 \u3164\u3133\u314f\u3138 \u3164\u3133\u314f\u3139 \u3164\u3133\u314f\u313a \u3164\u3133\u314f\u313b \u3164\u3133\u314f\u313c \u3164\u3133\u314f\u313d \u3164\u3133\u314f\u313e \u3164\u3133\u314f\u313f \u3164\u3133\u314f\u3140 \u3164\u3133\u314f\u3141 \u3164\u3133\u314f\u3142 \u3164\u3133\u314f\u3143 \u3164\u3133\u314f\u3144 \u3164\u3133\u314f\u3145 \u3164\u3133\u314f\u3146 \u3164\u3133\u314f\u3147 \u3164\u3133\u314f\u3148 \u3164\u3133\u314f\u3149 \u3164\u3133\u314f\u314a \u3164\u3133\u314f\u314b \u3164\u3133\u314f\u314c \u3164\u3133\u314f\u314d \u3164\u3133\u314f\u314e \u3164\u3133\u314f\u314f \u3164\u3133\u314f\u3164 ",
-" row a3_c0_: \u3164\u3133\u3150\uca46 \u3164\u3133\u3150\u3131 \u3164\u3133\u3150\u3132 \u3164\u3133\u3150\u3133 \u3164\u3133\u3150\u3134 \u3164\u3133\u3150\u3135 \u3164\u3133\u3150\u3136 \u3164\u3133\u3150\u3137 \u3164\u3133\u3150\u3138 \u3164\u3133\u3150\u3139 \u3164\u3133\u3150\u313a \u3164\u3133\u3150\u313b \u3164\u3133\u3150\u313c \u3164\u3133\u3150\u313d \u3164\u3133\u3150\u313e \u3164\u3133\u3150\u313f \u3164\u3133\u3150\u3140 \u3164\u3133\u3150\u3141 \u3164\u3133\u3150\u3142 \u3164\u3133\u3150\u3143 \u3164\u3133\u3150\u3144 \u3164\u3133\u3150\u3145 \u3164\u3133\u3150\u3146 \u3164\u3133\u3150\u3147 \u3164\u3133\u3150\u3148 \u3164\u3133\u3150\u3149 \u3164\u3133\u3150\u314a \u3164\u3133\u3150\u314b \u3164\u3133\u3150\u314c \u3164\u3133\u3150\u314d \u3164\u3133\u3150\u314e \u3164\u3133\u3150\u314f \u3164\u3133\u3150\u3164 ",
-" row a3_c1_: \u3164\u3133\u3151\uca46 \u3164\u3133\u3151\u3131 \u3164\u3133\u3151\u3132 \u3164\u3133\u3151\u3133 \u3164\u3133\u3151\u3134 \u3164\u3133\u3151\u3135 \u3164\u3133\u3151\u3136 \u3164\u3133\u3151\u3137 \u3164\u3133\u3151\u3138 \u3164\u3133\u3151\u3139 \u3164\u3133\u3151\u313a \u3164\u3133\u3151\u313b \u3164\u3133\u3151\u313c \u3164\u3133\u3151\u313d \u3164\u3133\u3151\u313e \u3164\u3133\u3151\u313f \u3164\u3133\u3151\u3140 \u3164\u3133\u3151\u3141 \u3164\u3133\u3151\u3142 \u3164\u3133\u3151\u3143 \u3164\u3133\u3151\u3144 \u3164\u3133\u3151\u3145 \u3164\u3133\u3151\u3146 \u3164\u3133\u3151\u3147 \u3164\u3133\u3151\u3148 \u3164\u3133\u3151\u3149 \u3164\u3133\u3151\u314a \u3164\u3133\u3151\u314b \u3164\u3133\u3151\u314c \u3164\u3133\u3151\u314d \u3164\u3133\u3151\u314e \u3164\u3133\u3151\u314f \u3164\u3133\u3151\u3164 ",
-" row a3_c2_: \u3164\u3133\u3152\uca46 \u3164\u3133\u3152\u3131 \u3164\u3133\u3152\u3132 \u3164\u3133\u3152\u3133 \u3164\u3133\u3152\u3134 \u3164\u3133\u3152\u3135 \u3164\u3133\u3152\u3136 \u3164\u3133\u3152\u3137 \u3164\u3133\u3152\u3138 \u3164\u3133\u3152\u3139 \u3164\u3133\u3152\u313a \u3164\u3133\u3152\u313b \u3164\u3133\u3152\u313c \u3164\u3133\u3152\u313d \u3164\u3133\u3152\u313e \u3164\u3133\u3152\u313f \u3164\u3133\u3152\u3140 \u3164\u3133\u3152\u3141 \u3164\u3133\u3152\u3142 \u3164\u3133\u3152\u3143 \u3164\u3133\u3152\u3144 \u3164\u3133\u3152\u3145 \u3164\u3133\u3152\u3146 \u3164\u3133\u3152\u3147 \u3164\u3133\u3152\u3148 \u3164\u3133\u3152\u3149 \u3164\u3133\u3152\u314a \u3164\u3133\u3152\u314b \u3164\u3133\u3152\u314c \u3164\u3133\u3152\u314d \u3164\u3133\u3152\u314e \u3164\u3133\u3152\u314f \u3164\u3133\u3152\u3164 ",
-" row a3_c3_: \u3164\u3133\u3153\uca46 \u3164\u3133\u3153\u3131 \u3164\u3133\u3153\u3132 \u3164\u3133\u3153\u3133 \u3164\u3133\u3153\u3134 \u3164\u3133\u3153\u3135 \u3164\u3133\u3153\u3136 \u3164\u3133\u3153\u3137 \u3164\u3133\u3153\u3138 \u3164\u3133\u3153\u3139 \u3164\u3133\u3153\u313a \u3164\u3133\u3153\u313b \u3164\u3133\u3153\u313c \u3164\u3133\u3153\u313d \u3164\u3133\u3153\u313e \u3164\u3133\u3153\u313f \u3164\u3133\u3153\u3140 \u3164\u3133\u3153\u3141 \u3164\u3133\u3153\u3142 \u3164\u3133\u3153\u3143 \u3164\u3133\u3153\u3144 \u3164\u3133\u3153\u3145 \u3164\u3133\u3153\u3146 \u3164\u3133\u3153\u3147 \u3164\u3133\u3153\u3148 \u3164\u3133\u3153\u3149 \u3164\u3133\u3153\u314a \u3164\u3133\u3153\u314b \u3164\u3133\u3153\u314c \u3164\u3133\u3153\u314d \u3164\u3133\u3153\u314e \u3164\u3133\u3153\u314f \u3164\u3133\u3153\u3164 ",
-" row a3_c4_: \u3164\u3133\u3154\uca46 \u3164\u3133\u3154\u3131 \u3164\u3133\u3154\u3132 \u3164\u3133\u3154\u3133 \u3164\u3133\u3154\u3134 \u3164\u3133\u3154\u3135 \u3164\u3133\u3154\u3136 \u3164\u3133\u3154\u3137 \u3164\u3133\u3154\u3138 \u3164\u3133\u3154\u3139 \u3164\u3133\u3154\u313a \u3164\u3133\u3154\u313b \u3164\u3133\u3154\u313c \u3164\u3133\u3154\u313d \u3164\u3133\u3154\u313e \u3164\u3133\u3154\u313f \u3164\u3133\u3154\u3140 \u3164\u3133\u3154\u3141 \u3164\u3133\u3154\u3142 \u3164\u3133\u3154\u3143 \u3164\u3133\u3154\u3144 \u3164\u3133\u3154\u3145 \u3164\u3133\u3154\u3146 \u3164\u3133\u3154\u3147 \u3164\u3133\u3154\u3148 \u3164\u3133\u3154\u3149 \u3164\u3133\u3154\u314a \u3164\u3133\u3154\u314b \u3164\u3133\u3154\u314c \u3164\u3133\u3154\u314d \u3164\u3133\u3154\u314e \u3164\u3133\u3154\u314f \u3164\u3133\u3154\u3164 ",
-" row a3_c5_: \u3164\u3133\u3155\uca46 \u3164\u3133\u3155\u3131 \u3164\u3133\u3155\u3132 \u3164\u3133\u3155\u3133 \u3164\u3133\u3155\u3134 \u3164\u3133\u3155\u3135 \u3164\u3133\u3155\u3136 \u3164\u3133\u3155\u3137 \u3164\u3133\u3155\u3138 \u3164\u3133\u3155\u3139 \u3164\u3133\u3155\u313a \u3164\u3133\u3155\u313b \u3164\u3133\u3155\u313c \u3164\u3133\u3155\u313d \u3164\u3133\u3155\u313e \u3164\u3133\u3155\u313f \u3164\u3133\u3155\u3140 \u3164\u3133\u3155\u3141 \u3164\u3133\u3155\u3142 \u3164\u3133\u3155\u3143 \u3164\u3133\u3155\u3144 \u3164\u3133\u3155\u3145 \u3164\u3133\u3155\u3146 \u3164\u3133\u3155\u3147 \u3164\u3133\u3155\u3148 \u3164\u3133\u3155\u3149 \u3164\u3133\u3155\u314a \u3164\u3133\u3155\u314b \u3164\u3133\u3155\u314c \u3164\u3133\u3155\u314d \u3164\u3133\u3155\u314e \u3164\u3133\u3155\u314f \u3164\u3133\u3155\u3164 ",
-" row a3_c6_: \u3164\u3133\u3156\uca46 \u3164\u3133\u3156\u3131 \u3164\u3133\u3156\u3132 \u3164\u3133\u3156\u3133 \u3164\u3133\u3156\u3134 \u3164\u3133\u3156\u3135 \u3164\u3133\u3156\u3136 \u3164\u3133\u3156\u3137 \u3164\u3133\u3156\u3138 \u3164\u3133\u3156\u3139 \u3164\u3133\u3156\u313a \u3164\u3133\u3156\u313b \u3164\u3133\u3156\u313c \u3164\u3133\u3156\u313d \u3164\u3133\u3156\u313e \u3164\u3133\u3156\u313f \u3164\u3133\u3156\u3140 \u3164\u3133\u3156\u3141 \u3164\u3133\u3156\u3142 \u3164\u3133\u3156\u3143 \u3164\u3133\u3156\u3144 \u3164\u3133\u3156\u3145 \u3164\u3133\u3156\u3146 \u3164\u3133\u3156\u3147 \u3164\u3133\u3156\u3148 \u3164\u3133\u3156\u3149 \u3164\u3133\u3156\u314a \u3164\u3133\u3156\u314b \u3164\u3133\u3156\u314c \u3164\u3133\u3156\u314d \u3164\u3133\u3156\u314e \u3164\u3133\u3156\u314f \u3164\u3133\u3156\u3164 ",
-" row a3_c7_: \u3164\u3133\u3157\uca46 \u3164\u3133\u3157\u3131 \u3164\u3133\u3157\u3132 \u3164\u3133\u3157\u3133 \u3164\u3133\u3157\u3134 \u3164\u3133\u3157\u3135 \u3164\u3133\u3157\u3136 \u3164\u3133\u3157\u3137 \u3164\u3133\u3157\u3138 \u3164\u3133\u3157\u3139 \u3164\u3133\u3157\u313a \u3164\u3133\u3157\u313b \u3164\u3133\u3157\u313c \u3164\u3133\u3157\u313d \u3164\u3133\u3157\u313e \u3164\u3133\u3157\u313f \u3164\u3133\u3157\u3140 \u3164\u3133\u3157\u3141 \u3164\u3133\u3157\u3142 \u3164\u3133\u3157\u3143 \u3164\u3133\u3157\u3144 \u3164\u3133\u3157\u3145 \u3164\u3133\u3157\u3146 \u3164\u3133\u3157\u3147 \u3164\u3133\u3157\u3148 \u3164\u3133\u3157\u3149 \u3164\u3133\u3157\u314a \u3164\u3133\u3157\u314b \u3164\u3133\u3157\u314c \u3164\u3133\u3157\u314d \u3164\u3133\u3157\u314e \u3164\u3133\u3157\u314f \u3164\u3133\u3157\u3164 ",
-" row a3_c8_: \u3164\u3133\u3158\uca46 \u3164\u3133\u3158\u3131 \u3164\u3133\u3158\u3132 \u3164\u3133\u3158\u3133 \u3164\u3133\u3158\u3134 \u3164\u3133\u3158\u3135 \u3164\u3133\u3158\u3136 \u3164\u3133\u3158\u3137 \u3164\u3133\u3158\u3138 \u3164\u3133\u3158\u3139 \u3164\u3133\u3158\u313a \u3164\u3133\u3158\u313b \u3164\u3133\u3158\u313c \u3164\u3133\u3158\u313d \u3164\u3133\u3158\u313e \u3164\u3133\u3158\u313f \u3164\u3133\u3158\u3140 \u3164\u3133\u3158\u3141 \u3164\u3133\u3158\u3142 \u3164\u3133\u3158\u3143 \u3164\u3133\u3158\u3144 \u3164\u3133\u3158\u3145 \u3164\u3133\u3158\u3146 \u3164\u3133\u3158\u3147 \u3164\u3133\u3158\u3148 \u3164\u3133\u3158\u3149 \u3164\u3133\u3158\u314a \u3164\u3133\u3158\u314b \u3164\u3133\u3158\u314c \u3164\u3133\u3158\u314d \u3164\u3133\u3158\u314e \u3164\u3133\u3158\u314f \u3164\u3133\u3158\u3164 ",
-" row a3_c9_: \u3164\u3133\u3159\uca46 \u3164\u3133\u3159\u3131 \u3164\u3133\u3159\u3132 \u3164\u3133\u3159\u3133 \u3164\u3133\u3159\u3134 \u3164\u3133\u3159\u3135 \u3164\u3133\u3159\u3136 \u3164\u3133\u3159\u3137 \u3164\u3133\u3159\u3138 \u3164\u3133\u3159\u3139 \u3164\u3133\u3159\u313a \u3164\u3133\u3159\u313b \u3164\u3133\u3159\u313c \u3164\u3133\u3159\u313d \u3164\u3133\u3159\u313e \u3164\u3133\u3159\u313f \u3164\u3133\u3159\u3140 \u3164\u3133\u3159\u3141 \u3164\u3133\u3159\u3142 \u3164\u3133\u3159\u3143 \u3164\u3133\u3159\u3144 \u3164\u3133\u3159\u3145 \u3164\u3133\u3159\u3146 \u3164\u3133\u3159\u3147 \u3164\u3133\u3159\u3148 \u3164\u3133\u3159\u3149 \u3164\u3133\u3159\u314a \u3164\u3133\u3159\u314b \u3164\u3133\u3159\u314c \u3164\u3133\u3159\u314d \u3164\u3133\u3159\u314e \u3164\u3133\u3159\u314f \u3164\u3133\u3159\u3164 ",
-" row a3_ca_: \u3164\u3133\u315a\uca46 \u3164\u3133\u315a\u3131 \u3164\u3133\u315a\u3132 \u3164\u3133\u315a\u3133 \u3164\u3133\u315a\u3134 \u3164\u3133\u315a\u3135 \u3164\u3133\u315a\u3136 \u3164\u3133\u315a\u3137 \u3164\u3133\u315a\u3138 \u3164\u3133\u315a\u3139 \u3164\u3133\u315a\u313a \u3164\u3133\u315a\u313b \u3164\u3133\u315a\u313c \u3164\u3133\u315a\u313d \u3164\u3133\u315a\u313e \u3164\u3133\u315a\u313f \u3164\u3133\u315a\u3140 \u3164\u3133\u315a\u3141 \u3164\u3133\u315a\u3142 \u3164\u3133\u315a\u3143 \u3164\u3133\u315a\u3144 \u3164\u3133\u315a\u3145 \u3164\u3133\u315a\u3146 \u3164\u3133\u315a\u3147 \u3164\u3133\u315a\u3148 \u3164\u3133\u315a\u3149 \u3164\u3133\u315a\u314a \u3164\u3133\u315a\u314b \u3164\u3133\u315a\u314c \u3164\u3133\u315a\u314d \u3164\u3133\u315a\u314e \u3164\u3133\u315a\u314f \u3164\u3133\u315a\u3164 ",
-" row a3_cb_: \u3164\u3133\u315b\uca46 \u3164\u3133\u315b\u3131 \u3164\u3133\u315b\u3132 \u3164\u3133\u315b\u3133 \u3164\u3133\u315b\u3134 \u3164\u3133\u315b\u3135 \u3164\u3133\u315b\u3136 \u3164\u3133\u315b\u3137 \u3164\u3133\u315b\u3138 \u3164\u3133\u315b\u3139 \u3164\u3133\u315b\u313a \u3164\u3133\u315b\u313b \u3164\u3133\u315b\u313c \u3164\u3133\u315b\u313d \u3164\u3133\u315b\u313e \u3164\u3133\u315b\u313f \u3164\u3133\u315b\u3140 \u3164\u3133\u315b\u3141 \u3164\u3133\u315b\u3142 \u3164\u3133\u315b\u3143 \u3164\u3133\u315b\u3144 \u3164\u3133\u315b\u3145 \u3164\u3133\u315b\u3146 \u3164\u3133\u315b\u3147 \u3164\u3133\u315b\u3148 \u3164\u3133\u315b\u3149 \u3164\u3133\u315b\u314a \u3164\u3133\u315b\u314b \u3164\u3133\u315b\u314c \u3164\u3133\u315b\u314d \u3164\u3133\u315b\u314e \u3164\u3133\u315b\u314f \u3164\u3133\u315b\u3164 ",
-" row a3_cc_: \u3164\u3133\u315c\uca46 \u3164\u3133\u315c\u3131 \u3164\u3133\u315c\u3132 \u3164\u3133\u315c\u3133 \u3164\u3133\u315c\u3134 \u3164\u3133\u315c\u3135 \u3164\u3133\u315c\u3136 \u3164\u3133\u315c\u3137 \u3164\u3133\u315c\u3138 \u3164\u3133\u315c\u3139 \u3164\u3133\u315c\u313a \u3164\u3133\u315c\u313b \u3164\u3133\u315c\u313c \u3164\u3133\u315c\u313d \u3164\u3133\u315c\u313e \u3164\u3133\u315c\u313f \u3164\u3133\u315c\u3140 \u3164\u3133\u315c\u3141 \u3164\u3133\u315c\u3142 \u3164\u3133\u315c\u3143 \u3164\u3133\u315c\u3144 \u3164\u3133\u315c\u3145 \u3164\u3133\u315c\u3146 \u3164\u3133\u315c\u3147 \u3164\u3133\u315c\u3148 \u3164\u3133\u315c\u3149 \u3164\u3133\u315c\u314a \u3164\u3133\u315c\u314b \u3164\u3133\u315c\u314c \u3164\u3133\u315c\u314d \u3164\u3133\u315c\u314e \u3164\u3133\u315c\u314f \u3164\u3133\u315c\u3164 ",
-" row a3_cd_: \u3164\u3133\u315d\uca46 \u3164\u3133\u315d\u3131 \u3164\u3133\u315d\u3132 \u3164\u3133\u315d\u3133 \u3164\u3133\u315d\u3134 \u3164\u3133\u315d\u3135 \u3164\u3133\u315d\u3136 \u3164\u3133\u315d\u3137 \u3164\u3133\u315d\u3138 \u3164\u3133\u315d\u3139 \u3164\u3133\u315d\u313a \u3164\u3133\u315d\u313b \u3164\u3133\u315d\u313c \u3164\u3133\u315d\u313d \u3164\u3133\u315d\u313e \u3164\u3133\u315d\u313f \u3164\u3133\u315d\u3140 \u3164\u3133\u315d\u3141 \u3164\u3133\u315d\u3142 \u3164\u3133\u315d\u3143 \u3164\u3133\u315d\u3144 \u3164\u3133\u315d\u3145 \u3164\u3133\u315d\u3146 \u3164\u3133\u315d\u3147 \u3164\u3133\u315d\u3148 \u3164\u3133\u315d\u3149 \u3164\u3133\u315d\u314a \u3164\u3133\u315d\u314b \u3164\u3133\u315d\u314c \u3164\u3133\u315d\u314d \u3164\u3133\u315d\u314e \u3164\u3133\u315d\u314f \u3164\u3133\u315d\u3164 ",
-" row a3_ce_: \u3164\u3133\u315e\uca46 \u3164\u3133\u315e\u3131 \u3164\u3133\u315e\u3132 \u3164\u3133\u315e\u3133 \u3164\u3133\u315e\u3134 \u3164\u3133\u315e\u3135 \u3164\u3133\u315e\u3136 \u3164\u3133\u315e\u3137 \u3164\u3133\u315e\u3138 \u3164\u3133\u315e\u3139 \u3164\u3133\u315e\u313a \u3164\u3133\u315e\u313b \u3164\u3133\u315e\u313c \u3164\u3133\u315e\u313d \u3164\u3133\u315e\u313e \u3164\u3133\u315e\u313f \u3164\u3133\u315e\u3140 \u3164\u3133\u315e\u3141 \u3164\u3133\u315e\u3142 \u3164\u3133\u315e\u3143 \u3164\u3133\u315e\u3144 \u3164\u3133\u315e\u3145 \u3164\u3133\u315e\u3146 \u3164\u3133\u315e\u3147 \u3164\u3133\u315e\u3148 \u3164\u3133\u315e\u3149 \u3164\u3133\u315e\u314a \u3164\u3133\u315e\u314b \u3164\u3133\u315e\u314c \u3164\u3133\u315e\u314d \u3164\u3133\u315e\u314e \u3164\u3133\u315e\u314f \u3164\u3133\u315e\u3164 ",
-" row a3_cf_: \u3164\u3133\u315f\uca46 \u3164\u3133\u315f\u3131 \u3164\u3133\u315f\u3132 \u3164\u3133\u315f\u3133 \u3164\u3133\u315f\u3134 \u3164\u3133\u315f\u3135 \u3164\u3133\u315f\u3136 \u3164\u3133\u315f\u3137 \u3164\u3133\u315f\u3138 \u3164\u3133\u315f\u3139 \u3164\u3133\u315f\u313a \u3164\u3133\u315f\u313b \u3164\u3133\u315f\u313c \u3164\u3133\u315f\u313d \u3164\u3133\u315f\u313e \u3164\u3133\u315f\u313f \u3164\u3133\u315f\u3140 \u3164\u3133\u315f\u3141 \u3164\u3133\u315f\u3142 \u3164\u3133\u315f\u3143 \u3164\u3133\u315f\u3144 \u3164\u3133\u315f\u3145 \u3164\u3133\u315f\u3146 \u3164\u3133\u315f\u3147 \u3164\u3133\u315f\u3148 \u3164\u3133\u315f\u3149 \u3164\u3133\u315f\u314a \u3164\u3133\u315f\u314b \u3164\u3133\u315f\u314c \u3164\u3133\u315f\u314d \u3164\u3133\u315f\u314e \u3164\u3133\u315f\u314f \u3164\u3133\u315f\u3164 ",
-" row a3_d0_: \u3164\u3133\u3160\uca46 \u3164\u3133\u3160\u3131 \u3164\u3133\u3160\u3132 \u3164\u3133\u3160\u3133 \u3164\u3133\u3160\u3134 \u3164\u3133\u3160\u3135 \u3164\u3133\u3160\u3136 \u3164\u3133\u3160\u3137 \u3164\u3133\u3160\u3138 \u3164\u3133\u3160\u3139 \u3164\u3133\u3160\u313a \u3164\u3133\u3160\u313b \u3164\u3133\u3160\u313c \u3164\u3133\u3160\u313d \u3164\u3133\u3160\u313e \u3164\u3133\u3160\u313f \u3164\u3133\u3160\u3140 \u3164\u3133\u3160\u3141 \u3164\u3133\u3160\u3142 \u3164\u3133\u3160\u3143 \u3164\u3133\u3160\u3144 \u3164\u3133\u3160\u3145 \u3164\u3133\u3160\u3146 \u3164\u3133\u3160\u3147 \u3164\u3133\u3160\u3148 \u3164\u3133\u3160\u3149 \u3164\u3133\u3160\u314a \u3164\u3133\u3160\u314b \u3164\u3133\u3160\u314c \u3164\u3133\u3160\u314d \u3164\u3133\u3160\u314e \u3164\u3133\u3160\u314f \u3164\u3133\u3160\u3164 ",
-" row a3_d1_: \u3164\u3133\u3161\uca46 \u3164\u3133\u3161\u3131 \u3164\u3133\u3161\u3132 \u3164\u3133\u3161\u3133 \u3164\u3133\u3161\u3134 \u3164\u3133\u3161\u3135 \u3164\u3133\u3161\u3136 \u3164\u3133\u3161\u3137 \u3164\u3133\u3161\u3138 \u3164\u3133\u3161\u3139 \u3164\u3133\u3161\u313a \u3164\u3133\u3161\u313b \u3164\u3133\u3161\u313c \u3164\u3133\u3161\u313d \u3164\u3133\u3161\u313e \u3164\u3133\u3161\u313f \u3164\u3133\u3161\u3140 \u3164\u3133\u3161\u3141 \u3164\u3133\u3161\u3142 \u3164\u3133\u3161\u3143 \u3164\u3133\u3161\u3144 \u3164\u3133\u3161\u3145 \u3164\u3133\u3161\u3146 \u3164\u3133\u3161\u3147 \u3164\u3133\u3161\u3148 \u3164\u3133\u3161\u3149 \u3164\u3133\u3161\u314a \u3164\u3133\u3161\u314b \u3164\u3133\u3161\u314c \u3164\u3133\u3161\u314d \u3164\u3133\u3161\u314e \u3164\u3133\u3161\u314f \u3164\u3133\u3161\u3164 ",
-" row a3_d2_: \u3164\u3133\u3162\uca46 \u3164\u3133\u3162\u3131 \u3164\u3133\u3162\u3132 \u3164\u3133\u3162\u3133 \u3164\u3133\u3162\u3134 \u3164\u3133\u3162\u3135 \u3164\u3133\u3162\u3136 \u3164\u3133\u3162\u3137 \u3164\u3133\u3162\u3138 \u3164\u3133\u3162\u3139 \u3164\u3133\u3162\u313a \u3164\u3133\u3162\u313b \u3164\u3133\u3162\u313c \u3164\u3133\u3162\u313d \u3164\u3133\u3162\u313e \u3164\u3133\u3162\u313f \u3164\u3133\u3162\u3140 \u3164\u3133\u3162\u3141 \u3164\u3133\u3162\u3142 \u3164\u3133\u3162\u3143 \u3164\u3133\u3162\u3144 \u3164\u3133\u3162\u3145 \u3164\u3133\u3162\u3146 \u3164\u3133\u3162\u3147 \u3164\u3133\u3162\u3148 \u3164\u3133\u3162\u3149 \u3164\u3133\u3162\u314a \u3164\u3133\u3162\u314b \u3164\u3133\u3162\u314c \u3164\u3133\u3162\u314d \u3164\u3133\u3162\u314e \u3164\u3133\u3162\u314f \u3164\u3133\u3162\u3164 ",
-" row a3_d3_: \u3164\u3133\u3163\uca46 \u3164\u3133\u3163\u3131 \u3164\u3133\u3163\u3132 \u3164\u3133\u3163\u3133 \u3164\u3133\u3163\u3134 \u3164\u3133\u3163\u3135 \u3164\u3133\u3163\u3136 \u3164\u3133\u3163\u3137 \u3164\u3133\u3163\u3138 \u3164\u3133\u3163\u3139 \u3164\u3133\u3163\u313a \u3164\u3133\u3163\u313b \u3164\u3133\u3163\u313c \u3164\u3133\u3163\u313d \u3164\u3133\u3163\u313e \u3164\u3133\u3163\u313f \u3164\u3133\u3163\u3140 \u3164\u3133\u3163\u3141 \u3164\u3133\u3163\u3142 \u3164\u3133\u3163\u3143 \u3164\u3133\u3163\u3144 \u3164\u3133\u3163\u3145 \u3164\u3133\u3163\u3146 \u3164\u3133\u3163\u3147 \u3164\u3133\u3163\u3148 \u3164\u3133\u3163\u3149 \u3164\u3133\u3163\u314a \u3164\u3133\u3163\u314b \u3164\u3133\u3163\u314c \u3164\u3133\u3163\u314d \u3164\u3133\u3163\u314e \u3164\u3133\u3163\u314f \u3164\u3133\u3163\u3164 ",
-" row a3_d4_: \u3164\u3133\u3164\uca46 \u3164\u3133\u3164\u3131 \u3164\u3133\u3164\u3132 \u3164\u3133\u3164\u3133 \u3164\u3133\u3164\u3134 \u3164\u3133\u3164\u3135 \u3164\u3133\u3164\u3136 \u3164\u3133\u3164\u3137 \u3164\u3133\u3164\u3138 \u3164\u3133\u3164\u3139 \u3164\u3133\u3164\u313a \u3164\u3133\u3164\u313b \u3164\u3133\u3164\u313c \u3164\u3133\u3164\u313d \u3164\u3133\u3164\u313e \u3164\u3133\u3164\u313f \u3164\u3133\u3164\u3140 \u3164\u3133\u3164\u3141 \u3164\u3133\u3164\u3142 \u3164\u3133\u3164\u3143 \u3164\u3133\u3164\u3144 \u3164\u3133\u3164\u3145 \u3164\u3133\u3164\u3146 \u3164\u3133\u3164\u3147 \u3164\u3133\u3164\u3148 \u3164\u3133\u3164\u3149 \u3164\u3133\u3164\u314a \u3164\u3133\u3164\u314b \u3164\u3133\u3164\u314c \u3164\u3133\u3164\u314d \u3164\u3133\u3164\u314e \u3164\u3133\u3164\u314f \u3164\u3133\u3164\u3164 ",
-" row a4_be_: \u3164\u3134\u314e\uca46 \u3164\u3134\u314e\u3131 \u3164\u3134\u314e\u3132 \u3164\u3134\u314e\u3133 \u3164\u3134\u314e\u3134 \u3164\u3134\u314e\u3135 \u3164\u3134\u314e\u3136 \u3164\u3134\u314e\u3137 \u3164\u3134\u314e\u3138 \u3164\u3134\u314e\u3139 \u3164\u3134\u314e\u313a \u3164\u3134\u314e\u313b \u3164\u3134\u314e\u313c \u3164\u3134\u314e\u313d \u3164\u3134\u314e\u313e \u3164\u3134\u314e\u313f \u3164\u3134\u314e\u3140 \u3164\u3134\u314e\u3141 \u3164\u3134\u314e\u3142 \u3164\u3134\u314e\u3143 \u3164\u3134\u314e\u3144 \u3164\u3134\u314e\u3145 \u3164\u3134\u314e\u3146 \u3164\u3134\u314e\u3147 \u3164\u3134\u314e\u3148 \u3164\u3134\u314e\u3149 \u3164\u3134\u314e\u314a \u3164\u3134\u314e\u314b \u3164\u3134\u314e\u314c \u3164\u3134\u314e\u314d \u3164\u3134\u314e\u314e \u3164\u3134\u314e\u314f \u3164\u3134\u314e\u3164 ",
-" row a4_bf_: \u3164\u3134\u314f\uca46 \ub099 \ub09a \ub09b \ub09c \ub09d \ub09e \ub09f \u3164\u3134\u314f\u3138 \ub0a0 \ub0a1 \ub0a2 \ub0a3 \ub0a4 \ub0a5 \ub0a6 \ub0a7 \ub0a8 \ub0a9 \u3164\u3134\u314f\u3143 \ub0aa \ub0ab \ub0ac \ub0ad \ub0ae \u3164\u3134\u314f\u3149 \ub0af \ub0b0 \ub0b1 \ub0b2 \ub0b3 \u3164\u3134\u314f\u314f \ub098 ",
-" row a4_c0_: \u3164\u3134\u3150\uca46 \ub0b5 \ub0b6 \ub0b7 \ub0b8 \ub0b9 \ub0ba \ub0bb \u3164\u3134\u3150\u3138 \ub0bc \ub0bd \ub0be \ub0bf \ub0c0 \ub0c1 \ub0c2 \ub0c3 \ub0c4 \ub0c5 \u3164\u3134\u3150\u3143 \ub0c6 \ub0c7 \ub0c8 \ub0c9 \ub0ca \u3164\u3134\u3150\u3149 \ub0cb \ub0cc \ub0cd \ub0ce \ub0cf \u3164\u3134\u3150\u314f \ub0b4 ",
-" row a4_c1_: \u3164\u3134\u3151\uca46 \ub0d1 \ub0d2 \ub0d3 \ub0d4 \ub0d5 \ub0d6 \ub0d7 \u3164\u3134\u3151\u3138 \ub0d8 \ub0d9 \ub0da \ub0db \ub0dc \ub0dd \ub0de \ub0df \ub0e0 \ub0e1 \u3164\u3134\u3151\u3143 \ub0e2 \ub0e3 \ub0e4 \ub0e5 \ub0e6 \u3164\u3134\u3151\u3149 \ub0e7 \ub0e8 \ub0e9 \ub0ea \ub0eb \u3164\u3134\u3151\u314f \ub0d0 ",
-" row a4_c2_: \u3164\u3134\u3152\uca46 \ub0ed \ub0ee \ub0ef \ub0f0 \ub0f1 \ub0f2 \ub0f3 \u3164\u3134\u3152\u3138 \ub0f4 \ub0f5 \ub0f6 \ub0f7 \ub0f8 \ub0f9 \ub0fa \ub0fb \ub0fc \ub0fd \u3164\u3134\u3152\u3143 \ub0fe \ub0ff \ub100 \ub101 \ub102 \u3164\u3134\u3152\u3149 \ub103 \ub104 \ub105 \ub106 \ub107 \u3164\u3134\u3152\u314f \ub0ec ",
-" row a4_c3_: \u3164\u3134\u3153\uca46 \ub109 \ub10a \ub10b \ub10c \ub10d \ub10e \ub10f \u3164\u3134\u3153\u3138 \ub110 \ub111 \ub112 \ub113 \ub114 \ub115 \ub116 \ub117 \ub118 \ub119 \u3164\u3134\u3153\u3143 \ub11a \ub11b \ub11c \ub11d \ub11e \u3164\u3134\u3153\u3149 \ub11f \ub120 \ub121 \ub122 \ub123 \u3164\u3134\u3153\u314f \ub108 ",
-" row a4_c4_: \u3164\u3134\u3154\uca46 \ub125 \ub126 \ub127 \ub128 \ub129 \ub12a \ub12b \u3164\u3134\u3154\u3138 \ub12c \ub12d \ub12e \ub12f \ub130 \ub131 \ub132 \ub133 \ub134 \ub135 \u3164\u3134\u3154\u3143 \ub136 \ub137 \ub138 \ub139 \ub13a \u3164\u3134\u3154\u3149 \ub13b \ub13c \ub13d \ub13e \ub13f \u3164\u3134\u3154\u314f \ub124 ",
-" row a4_c5_: \u3164\u3134\u3155\uca46 \ub141 \ub142 \ub143 \ub144 \ub145 \ub146 \ub147 \u3164\u3134\u3155\u3138 \ub148 \ub149 \ub14a \ub14b \ub14c \ub14d \ub14e \ub14f \ub150 \ub151 \u3164\u3134\u3155\u3143 \ub152 \ub153 \ub154 \ub155 \ub156 \u3164\u3134\u3155\u3149 \ub157 \ub158 \ub159 \ub15a \ub15b \u3164\u3134\u3155\u314f \ub140 ",
-" row a4_c6_: \u3164\u3134\u3156\uca46 \ub15d \ub15e \ub15f \ub160 \ub161 \ub162 \ub163 \u3164\u3134\u3156\u3138 \ub164 \ub165 \ub166 \ub167 \ub168 \ub169 \ub16a \ub16b \ub16c \ub16d \u3164\u3134\u3156\u3143 \ub16e \ub16f \ub170 \ub171 \ub172 \u3164\u3134\u3156\u3149 \ub173 \ub174 \ub175 \ub176 \ub177 \u3164\u3134\u3156\u314f \ub15c ",
-" row a4_c7_: \u3164\u3134\u3157\uca46 \ub179 \ub17a \ub17b \ub17c \ub17d \ub17e \ub17f \u3164\u3134\u3157\u3138 \ub180 \ub181 \ub182 \ub183 \ub184 \ub185 \ub186 \ub187 \ub188 \ub189 \u3164\u3134\u3157\u3143 \ub18a \ub18b \ub18c \ub18d \ub18e \u3164\u3134\u3157\u3149 \ub18f \ub190 \ub191 \ub192 \ub193 \u3164\u3134\u3157\u314f \ub178 ",
-" row a4_c8_: \u3164\u3134\u3158\uca46 \ub195 \ub196 \ub197 \ub198 \ub199 \ub19a \ub19b \u3164\u3134\u3158\u3138 \ub19c \ub19d \ub19e \ub19f \ub1a0 \ub1a1 \ub1a2 \ub1a3 \ub1a4 \ub1a5 \u3164\u3134\u3158\u3143 \ub1a6 \ub1a7 \ub1a8 \ub1a9 \ub1aa \u3164\u3134\u3158\u3149 \ub1ab \ub1ac \ub1ad \ub1ae \ub1af \u3164\u3134\u3158\u314f \ub194 ",
-" row a4_c9_: \u3164\u3134\u3159\uca46 \ub1b1 \ub1b2 \ub1b3 \ub1b4 \ub1b5 \ub1b6 \ub1b7 \u3164\u3134\u3159\u3138 \ub1b8 \ub1b9 \ub1ba \ub1bb \ub1bc \ub1bd \ub1be \ub1bf \ub1c0 \ub1c1 \u3164\u3134\u3159\u3143 \ub1c2 \ub1c3 \ub1c4 \ub1c5 \ub1c6 \u3164\u3134\u3159\u3149 \ub1c7 \ub1c8 \ub1c9 \ub1ca \ub1cb \u3164\u3134\u3159\u314f \ub1b0 ",
-" row a4_ca_: \u3164\u3134\u315a\uca46 \ub1cd \ub1ce \ub1cf \ub1d0 \ub1d1 \ub1d2 \ub1d3 \u3164\u3134\u315a\u3138 \ub1d4 \ub1d5 \ub1d6 \ub1d7 \ub1d8 \ub1d9 \ub1da \ub1db \ub1dc \ub1dd \u3164\u3134\u315a\u3143 \ub1de \ub1df \ub1e0 \ub1e1 \ub1e2 \u3164\u3134\u315a\u3149 \ub1e3 \ub1e4 \ub1e5 \ub1e6 \ub1e7 \u3164\u3134\u315a\u314f \ub1cc ",
-" row a4_cb_: \u3164\u3134\u315b\uca46 \ub1e9 \ub1ea \ub1eb \ub1ec \ub1ed \ub1ee \ub1ef \u3164\u3134\u315b\u3138 \ub1f0 \ub1f1 \ub1f2 \ub1f3 \ub1f4 \ub1f5 \ub1f6 \ub1f7 \ub1f8 \ub1f9 \u3164\u3134\u315b\u3143 \ub1fa \ub1fb \ub1fc \ub1fd \ub1fe \u3164\u3134\u315b\u3149 \ub1ff \ub200 \ub201 \ub202 \ub203 \u3164\u3134\u315b\u314f \ub1e8 ",
-" row a4_cc_: \u3164\u3134\u315c\uca46 \ub205 \ub206 \ub207 \ub208 \ub209 \ub20a \ub20b \u3164\u3134\u315c\u3138 \ub20c \ub20d \ub20e \ub20f \ub210 \ub211 \ub212 \ub213 \ub214 \ub215 \u3164\u3134\u315c\u3143 \ub216 \ub217 \ub218 \ub219 \ub21a \u3164\u3134\u315c\u3149 \ub21b \ub21c \ub21d \ub21e \ub21f \u3164\u3134\u315c\u314f \ub204 ",
-" row a4_cd_: \u3164\u3134\u315d\uca46 \ub221 \ub222 \ub223 \ub224 \ub225 \ub226 \ub227 \u3164\u3134\u315d\u3138 \ub228 \ub229 \ub22a \ub22b \ub22c \ub22d \ub22e \ub22f \ub230 \ub231 \u3164\u3134\u315d\u3143 \ub232 \ub233 \ub234 \ub235 \ub236 \u3164\u3134\u315d\u3149 \ub237 \ub238 \ub239 \ub23a \ub23b \u3164\u3134\u315d\u314f \ub220 ",
-" row a4_ce_: \u3164\u3134\u315e\uca46 \ub23d \ub23e \ub23f \ub240 \ub241 \ub242 \ub243 \u3164\u3134\u315e\u3138 \ub244 \ub245 \ub246 \ub247 \ub248 \ub249 \ub24a \ub24b \ub24c \ub24d \u3164\u3134\u315e\u3143 \ub24e \ub24f \ub250 \ub251 \ub252 \u3164\u3134\u315e\u3149 \ub253 \ub254 \ub255 \ub256 \ub257 \u3164\u3134\u315e\u314f \ub23c ",
-" row a4_cf_: \u3164\u3134\u315f\uca46 \ub259 \ub25a \ub25b \ub25c \ub25d \ub25e \ub25f \u3164\u3134\u315f\u3138 \ub260 \ub261 \ub262 \ub263 \ub264 \ub265 \ub266 \ub267 \ub268 \ub269 \u3164\u3134\u315f\u3143 \ub26a \ub26b \ub26c \ub26d \ub26e \u3164\u3134\u315f\u3149 \ub26f \ub270 \ub271 \ub272 \ub273 \u3164\u3134\u315f\u314f \ub258 ",
-" row a4_d0_: \u3164\u3134\u3160\uca46 \ub275 \ub276 \ub277 \ub278 \ub279 \ub27a \ub27b \u3164\u3134\u3160\u3138 \ub27c \ub27d \ub27e \ub27f \ub280 \ub281 \ub282 \ub283 \ub284 \ub285 \u3164\u3134\u3160\u3143 \ub286 \ub287 \ub288 \ub289 \ub28a \u3164\u3134\u3160\u3149 \ub28b \ub28c \ub28d \ub28e \ub28f \u3164\u3134\u3160\u314f \ub274 ",
-" row a4_d1_: \u3164\u3134\u3161\uca46 \ub291 \ub292 \ub293 \ub294 \ub295 \ub296 \ub297 \u3164\u3134\u3161\u3138 \ub298 \ub299 \ub29a \ub29b \ub29c \ub29d \ub29e \ub29f \ub2a0 \ub2a1 \u3164\u3134\u3161\u3143 \ub2a2 \ub2a3 \ub2a4 \ub2a5 \ub2a6 \u3164\u3134\u3161\u3149 \ub2a7 \ub2a8 \ub2a9 \ub2aa \ub2ab \u3164\u3134\u3161\u314f \ub290 ",
-" row a4_d2_: \u3164\u3134\u3162\uca46 \ub2ad \ub2ae \ub2af \ub2b0 \ub2b1 \ub2b2 \ub2b3 \u3164\u3134\u3162\u3138 \ub2b4 \ub2b5 \ub2b6 \ub2b7 \ub2b8 \ub2b9 \ub2ba \ub2bb \ub2bc \ub2bd \u3164\u3134\u3162\u3143 \ub2be \ub2bf \ub2c0 \ub2c1 \ub2c2 \u3164\u3134\u3162\u3149 \ub2c3 \ub2c4 \ub2c5 \ub2c6 \ub2c7 \u3164\u3134\u3162\u314f \ub2ac ",
-" row a4_d3_: \u3164\u3134\u3163\uca46 \ub2c9 \ub2ca \ub2cb \ub2cc \ub2cd \ub2ce \ub2cf \u3164\u3134\u3163\u3138 \ub2d0 \ub2d1 \ub2d2 \ub2d3 \ub2d4 \ub2d5 \ub2d6 \ub2d7 \ub2d8 \ub2d9 \u3164\u3134\u3163\u3143 \ub2da \ub2db \ub2dc \ub2dd \ub2de \u3164\u3134\u3163\u3149 \ub2df \ub2e0 \ub2e1 \ub2e2 \ub2e3 \u3164\u3134\u3163\u314f \ub2c8 ",
-" row a4_d4_: \u3164\u3134\u3164\uca46 \u3164\u3134\u3164\u3131 \u3164\u3134\u3164\u3132 \u3164\u3134\u3164\u3133 \u3164\u3134\u3164\u3134 \u3164\u3134\u3164\u3135 \u3164\u3134\u3164\u3136 \u3164\u3134\u3164\u3137 \u3164\u3134\u3164\u3138 \u3164\u3134\u3164\u3139 \u3164\u3134\u3164\u313a \u3164\u3134\u3164\u313b \u3164\u3134\u3164\u313c \u3164\u3134\u3164\u313d \u3164\u3134\u3164\u313e \u3164\u3134\u3164\u313f \u3164\u3134\u3164\u3140 \u3164\u3134\u3164\u3141 \u3164\u3134\u3164\u3142 \u3164\u3134\u3164\u3143 \u3164\u3134\u3164\u3144 \u3164\u3134\u3164\u3145 \u3164\u3134\u3164\u3146 \u3164\u3134\u3164\u3147 \u3164\u3134\u3164\u3148 \u3164\u3134\u3164\u3149 \u3164\u3134\u3164\u314a \u3164\u3134\u3164\u314b \u3164\u3134\u3164\u314c \u3164\u3134\u3164\u314d \u3164\u3134\u3164\u314e \u3164\u3134\u3164\u314f \u3164\u3134\u3164\u3164 ",
-" row a5_be_: \u3164\u3135\u314e\uca46 \u3164\u3135\u314e\u3131 \u3164\u3135\u314e\u3132 \u3164\u3135\u314e\u3133 \u3164\u3135\u314e\u3134 \u3164\u3135\u314e\u3135 \u3164\u3135\u314e\u3136 \u3164\u3135\u314e\u3137 \u3164\u3135\u314e\u3138 \u3164\u3135\u314e\u3139 \u3164\u3135\u314e\u313a \u3164\u3135\u314e\u313b \u3164\u3135\u314e\u313c \u3164\u3135\u314e\u313d \u3164\u3135\u314e\u313e \u3164\u3135\u314e\u313f \u3164\u3135\u314e\u3140 \u3164\u3135\u314e\u3141 \u3164\u3135\u314e\u3142 \u3164\u3135\u314e\u3143 \u3164\u3135\u314e\u3144 \u3164\u3135\u314e\u3145 \u3164\u3135\u314e\u3146 \u3164\u3135\u314e\u3147 \u3164\u3135\u314e\u3148 \u3164\u3135\u314e\u3149 \u3164\u3135\u314e\u314a \u3164\u3135\u314e\u314b \u3164\u3135\u314e\u314c \u3164\u3135\u314e\u314d \u3164\u3135\u314e\u314e \u3164\u3135\u314e\u314f \u3164\u3135\u314e\u3164 ",
-" row a5_bf_: \u3164\u3135\u314f\uca46 \u3164\u3135\u314f\u3131 \u3164\u3135\u314f\u3132 \u3164\u3135\u314f\u3133 \u3164\u3135\u314f\u3134 \u3164\u3135\u314f\u3135 \u3164\u3135\u314f\u3136 \u3164\u3135\u314f\u3137 \u3164\u3135\u314f\u3138 \u3164\u3135\u314f\u3139 \u3164\u3135\u314f\u313a \u3164\u3135\u314f\u313b \u3164\u3135\u314f\u313c \u3164\u3135\u314f\u313d \u3164\u3135\u314f\u313e \u3164\u3135\u314f\u313f \u3164\u3135\u314f\u3140 \u3164\u3135\u314f\u3141 \u3164\u3135\u314f\u3142 \u3164\u3135\u314f\u3143 \u3164\u3135\u314f\u3144 \u3164\u3135\u314f\u3145 \u3164\u3135\u314f\u3146 \u3164\u3135\u314f\u3147 \u3164\u3135\u314f\u3148 \u3164\u3135\u314f\u3149 \u3164\u3135\u314f\u314a \u3164\u3135\u314f\u314b \u3164\u3135\u314f\u314c \u3164\u3135\u314f\u314d \u3164\u3135\u314f\u314e \u3164\u3135\u314f\u314f \u3164\u3135\u314f\u3164 ",
-" row a5_c0_: \u3164\u3135\u3150\uca46 \u3164\u3135\u3150\u3131 \u3164\u3135\u3150\u3132 \u3164\u3135\u3150\u3133 \u3164\u3135\u3150\u3134 \u3164\u3135\u3150\u3135 \u3164\u3135\u3150\u3136 \u3164\u3135\u3150\u3137 \u3164\u3135\u3150\u3138 \u3164\u3135\u3150\u3139 \u3164\u3135\u3150\u313a \u3164\u3135\u3150\u313b \u3164\u3135\u3150\u313c \u3164\u3135\u3150\u313d \u3164\u3135\u3150\u313e \u3164\u3135\u3150\u313f \u3164\u3135\u3150\u3140 \u3164\u3135\u3150\u3141 \u3164\u3135\u3150\u3142 \u3164\u3135\u3150\u3143 \u3164\u3135\u3150\u3144 \u3164\u3135\u3150\u3145 \u3164\u3135\u3150\u3146 \u3164\u3135\u3150\u3147 \u3164\u3135\u3150\u3148 \u3164\u3135\u3150\u3149 \u3164\u3135\u3150\u314a \u3164\u3135\u3150\u314b \u3164\u3135\u3150\u314c \u3164\u3135\u3150\u314d \u3164\u3135\u3150\u314e \u3164\u3135\u3150\u314f \u3164\u3135\u3150\u3164 ",
-" row a5_c1_: \u3164\u3135\u3151\uca46 \u3164\u3135\u3151\u3131 \u3164\u3135\u3151\u3132 \u3164\u3135\u3151\u3133 \u3164\u3135\u3151\u3134 \u3164\u3135\u3151\u3135 \u3164\u3135\u3151\u3136 \u3164\u3135\u3151\u3137 \u3164\u3135\u3151\u3138 \u3164\u3135\u3151\u3139 \u3164\u3135\u3151\u313a \u3164\u3135\u3151\u313b \u3164\u3135\u3151\u313c \u3164\u3135\u3151\u313d \u3164\u3135\u3151\u313e \u3164\u3135\u3151\u313f \u3164\u3135\u3151\u3140 \u3164\u3135\u3151\u3141 \u3164\u3135\u3151\u3142 \u3164\u3135\u3151\u3143 \u3164\u3135\u3151\u3144 \u3164\u3135\u3151\u3145 \u3164\u3135\u3151\u3146 \u3164\u3135\u3151\u3147 \u3164\u3135\u3151\u3148 \u3164\u3135\u3151\u3149 \u3164\u3135\u3151\u314a \u3164\u3135\u3151\u314b \u3164\u3135\u3151\u314c \u3164\u3135\u3151\u314d \u3164\u3135\u3151\u314e \u3164\u3135\u3151\u314f \u3164\u3135\u3151\u3164 ",
-" row a5_c2_: \u3164\u3135\u3152\uca46 \u3164\u3135\u3152\u3131 \u3164\u3135\u3152\u3132 \u3164\u3135\u3152\u3133 \u3164\u3135\u3152\u3134 \u3164\u3135\u3152\u3135 \u3164\u3135\u3152\u3136 \u3164\u3135\u3152\u3137 \u3164\u3135\u3152\u3138 \u3164\u3135\u3152\u3139 \u3164\u3135\u3152\u313a \u3164\u3135\u3152\u313b \u3164\u3135\u3152\u313c \u3164\u3135\u3152\u313d \u3164\u3135\u3152\u313e \u3164\u3135\u3152\u313f \u3164\u3135\u3152\u3140 \u3164\u3135\u3152\u3141 \u3164\u3135\u3152\u3142 \u3164\u3135\u3152\u3143 \u3164\u3135\u3152\u3144 \u3164\u3135\u3152\u3145 \u3164\u3135\u3152\u3146 \u3164\u3135\u3152\u3147 \u3164\u3135\u3152\u3148 \u3164\u3135\u3152\u3149 \u3164\u3135\u3152\u314a \u3164\u3135\u3152\u314b \u3164\u3135\u3152\u314c \u3164\u3135\u3152\u314d \u3164\u3135\u3152\u314e \u3164\u3135\u3152\u314f \u3164\u3135\u3152\u3164 ",
-" row a5_c3_: \u3164\u3135\u3153\uca46 \u3164\u3135\u3153\u3131 \u3164\u3135\u3153\u3132 \u3164\u3135\u3153\u3133 \u3164\u3135\u3153\u3134 \u3164\u3135\u3153\u3135 \u3164\u3135\u3153\u3136 \u3164\u3135\u3153\u3137 \u3164\u3135\u3153\u3138 \u3164\u3135\u3153\u3139 \u3164\u3135\u3153\u313a \u3164\u3135\u3153\u313b \u3164\u3135\u3153\u313c \u3164\u3135\u3153\u313d \u3164\u3135\u3153\u313e \u3164\u3135\u3153\u313f \u3164\u3135\u3153\u3140 \u3164\u3135\u3153\u3141 \u3164\u3135\u3153\u3142 \u3164\u3135\u3153\u3143 \u3164\u3135\u3153\u3144 \u3164\u3135\u3153\u3145 \u3164\u3135\u3153\u3146 \u3164\u3135\u3153\u3147 \u3164\u3135\u3153\u3148 \u3164\u3135\u3153\u3149 \u3164\u3135\u3153\u314a \u3164\u3135\u3153\u314b \u3164\u3135\u3153\u314c \u3164\u3135\u3153\u314d \u3164\u3135\u3153\u314e \u3164\u3135\u3153\u314f \u3164\u3135\u3153\u3164 ",
-" row a5_c4_: \u3164\u3135\u3154\uca46 \u3164\u3135\u3154\u3131 \u3164\u3135\u3154\u3132 \u3164\u3135\u3154\u3133 \u3164\u3135\u3154\u3134 \u3164\u3135\u3154\u3135 \u3164\u3135\u3154\u3136 \u3164\u3135\u3154\u3137 \u3164\u3135\u3154\u3138 \u3164\u3135\u3154\u3139 \u3164\u3135\u3154\u313a \u3164\u3135\u3154\u313b \u3164\u3135\u3154\u313c \u3164\u3135\u3154\u313d \u3164\u3135\u3154\u313e \u3164\u3135\u3154\u313f \u3164\u3135\u3154\u3140 \u3164\u3135\u3154\u3141 \u3164\u3135\u3154\u3142 \u3164\u3135\u3154\u3143 \u3164\u3135\u3154\u3144 \u3164\u3135\u3154\u3145 \u3164\u3135\u3154\u3146 \u3164\u3135\u3154\u3147 \u3164\u3135\u3154\u3148 \u3164\u3135\u3154\u3149 \u3164\u3135\u3154\u314a \u3164\u3135\u3154\u314b \u3164\u3135\u3154\u314c \u3164\u3135\u3154\u314d \u3164\u3135\u3154\u314e \u3164\u3135\u3154\u314f \u3164\u3135\u3154\u3164 ",
-" row a5_c5_: \u3164\u3135\u3155\uca46 \u3164\u3135\u3155\u3131 \u3164\u3135\u3155\u3132 \u3164\u3135\u3155\u3133 \u3164\u3135\u3155\u3134 \u3164\u3135\u3155\u3135 \u3164\u3135\u3155\u3136 \u3164\u3135\u3155\u3137 \u3164\u3135\u3155\u3138 \u3164\u3135\u3155\u3139 \u3164\u3135\u3155\u313a \u3164\u3135\u3155\u313b \u3164\u3135\u3155\u313c \u3164\u3135\u3155\u313d \u3164\u3135\u3155\u313e \u3164\u3135\u3155\u313f \u3164\u3135\u3155\u3140 \u3164\u3135\u3155\u3141 \u3164\u3135\u3155\u3142 \u3164\u3135\u3155\u3143 \u3164\u3135\u3155\u3144 \u3164\u3135\u3155\u3145 \u3164\u3135\u3155\u3146 \u3164\u3135\u3155\u3147 \u3164\u3135\u3155\u3148 \u3164\u3135\u3155\u3149 \u3164\u3135\u3155\u314a \u3164\u3135\u3155\u314b \u3164\u3135\u3155\u314c \u3164\u3135\u3155\u314d \u3164\u3135\u3155\u314e \u3164\u3135\u3155\u314f \u3164\u3135\u3155\u3164 ",
-" row a5_c6_: \u3164\u3135\u3156\uca46 \u3164\u3135\u3156\u3131 \u3164\u3135\u3156\u3132 \u3164\u3135\u3156\u3133 \u3164\u3135\u3156\u3134 \u3164\u3135\u3156\u3135 \u3164\u3135\u3156\u3136 \u3164\u3135\u3156\u3137 \u3164\u3135\u3156\u3138 \u3164\u3135\u3156\u3139 \u3164\u3135\u3156\u313a \u3164\u3135\u3156\u313b \u3164\u3135\u3156\u313c \u3164\u3135\u3156\u313d \u3164\u3135\u3156\u313e \u3164\u3135\u3156\u313f \u3164\u3135\u3156\u3140 \u3164\u3135\u3156\u3141 \u3164\u3135\u3156\u3142 \u3164\u3135\u3156\u3143 \u3164\u3135\u3156\u3144 \u3164\u3135\u3156\u3145 \u3164\u3135\u3156\u3146 \u3164\u3135\u3156\u3147 \u3164\u3135\u3156\u3148 \u3164\u3135\u3156\u3149 \u3164\u3135\u3156\u314a \u3164\u3135\u3156\u314b \u3164\u3135\u3156\u314c \u3164\u3135\u3156\u314d \u3164\u3135\u3156\u314e \u3164\u3135\u3156\u314f \u3164\u3135\u3156\u3164 ",
-" row a5_c7_: \u3164\u3135\u3157\uca46 \u3164\u3135\u3157\u3131 \u3164\u3135\u3157\u3132 \u3164\u3135\u3157\u3133 \u3164\u3135\u3157\u3134 \u3164\u3135\u3157\u3135 \u3164\u3135\u3157\u3136 \u3164\u3135\u3157\u3137 \u3164\u3135\u3157\u3138 \u3164\u3135\u3157\u3139 \u3164\u3135\u3157\u313a \u3164\u3135\u3157\u313b \u3164\u3135\u3157\u313c \u3164\u3135\u3157\u313d \u3164\u3135\u3157\u313e \u3164\u3135\u3157\u313f \u3164\u3135\u3157\u3140 \u3164\u3135\u3157\u3141 \u3164\u3135\u3157\u3142 \u3164\u3135\u3157\u3143 \u3164\u3135\u3157\u3144 \u3164\u3135\u3157\u3145 \u3164\u3135\u3157\u3146 \u3164\u3135\u3157\u3147 \u3164\u3135\u3157\u3148 \u3164\u3135\u3157\u3149 \u3164\u3135\u3157\u314a \u3164\u3135\u3157\u314b \u3164\u3135\u3157\u314c \u3164\u3135\u3157\u314d \u3164\u3135\u3157\u314e \u3164\u3135\u3157\u314f \u3164\u3135\u3157\u3164 ",
-" row a5_c8_: \u3164\u3135\u3158\uca46 \u3164\u3135\u3158\u3131 \u3164\u3135\u3158\u3132 \u3164\u3135\u3158\u3133 \u3164\u3135\u3158\u3134 \u3164\u3135\u3158\u3135 \u3164\u3135\u3158\u3136 \u3164\u3135\u3158\u3137 \u3164\u3135\u3158\u3138 \u3164\u3135\u3158\u3139 \u3164\u3135\u3158\u313a \u3164\u3135\u3158\u313b \u3164\u3135\u3158\u313c \u3164\u3135\u3158\u313d \u3164\u3135\u3158\u313e \u3164\u3135\u3158\u313f \u3164\u3135\u3158\u3140 \u3164\u3135\u3158\u3141 \u3164\u3135\u3158\u3142 \u3164\u3135\u3158\u3143 \u3164\u3135\u3158\u3144 \u3164\u3135\u3158\u3145 \u3164\u3135\u3158\u3146 \u3164\u3135\u3158\u3147 \u3164\u3135\u3158\u3148 \u3164\u3135\u3158\u3149 \u3164\u3135\u3158\u314a \u3164\u3135\u3158\u314b \u3164\u3135\u3158\u314c \u3164\u3135\u3158\u314d \u3164\u3135\u3158\u314e \u3164\u3135\u3158\u314f \u3164\u3135\u3158\u3164 ",
-" row a5_c9_: \u3164\u3135\u3159\uca46 \u3164\u3135\u3159\u3131 \u3164\u3135\u3159\u3132 \u3164\u3135\u3159\u3133 \u3164\u3135\u3159\u3134 \u3164\u3135\u3159\u3135 \u3164\u3135\u3159\u3136 \u3164\u3135\u3159\u3137 \u3164\u3135\u3159\u3138 \u3164\u3135\u3159\u3139 \u3164\u3135\u3159\u313a \u3164\u3135\u3159\u313b \u3164\u3135\u3159\u313c \u3164\u3135\u3159\u313d \u3164\u3135\u3159\u313e \u3164\u3135\u3159\u313f \u3164\u3135\u3159\u3140 \u3164\u3135\u3159\u3141 \u3164\u3135\u3159\u3142 \u3164\u3135\u3159\u3143 \u3164\u3135\u3159\u3144 \u3164\u3135\u3159\u3145 \u3164\u3135\u3159\u3146 \u3164\u3135\u3159\u3147 \u3164\u3135\u3159\u3148 \u3164\u3135\u3159\u3149 \u3164\u3135\u3159\u314a \u3164\u3135\u3159\u314b \u3164\u3135\u3159\u314c \u3164\u3135\u3159\u314d \u3164\u3135\u3159\u314e \u3164\u3135\u3159\u314f \u3164\u3135\u3159\u3164 ",
-" row a5_ca_: \u3164\u3135\u315a\uca46 \u3164\u3135\u315a\u3131 \u3164\u3135\u315a\u3132 \u3164\u3135\u315a\u3133 \u3164\u3135\u315a\u3134 \u3164\u3135\u315a\u3135 \u3164\u3135\u315a\u3136 \u3164\u3135\u315a\u3137 \u3164\u3135\u315a\u3138 \u3164\u3135\u315a\u3139 \u3164\u3135\u315a\u313a \u3164\u3135\u315a\u313b \u3164\u3135\u315a\u313c \u3164\u3135\u315a\u313d \u3164\u3135\u315a\u313e \u3164\u3135\u315a\u313f \u3164\u3135\u315a\u3140 \u3164\u3135\u315a\u3141 \u3164\u3135\u315a\u3142 \u3164\u3135\u315a\u3143 \u3164\u3135\u315a\u3144 \u3164\u3135\u315a\u3145 \u3164\u3135\u315a\u3146 \u3164\u3135\u315a\u3147 \u3164\u3135\u315a\u3148 \u3164\u3135\u315a\u3149 \u3164\u3135\u315a\u314a \u3164\u3135\u315a\u314b \u3164\u3135\u315a\u314c \u3164\u3135\u315a\u314d \u3164\u3135\u315a\u314e \u3164\u3135\u315a\u314f \u3164\u3135\u315a\u3164 ",
-" row a5_cb_: \u3164\u3135\u315b\uca46 \u3164\u3135\u315b\u3131 \u3164\u3135\u315b\u3132 \u3164\u3135\u315b\u3133 \u3164\u3135\u315b\u3134 \u3164\u3135\u315b\u3135 \u3164\u3135\u315b\u3136 \u3164\u3135\u315b\u3137 \u3164\u3135\u315b\u3138 \u3164\u3135\u315b\u3139 \u3164\u3135\u315b\u313a \u3164\u3135\u315b\u313b \u3164\u3135\u315b\u313c \u3164\u3135\u315b\u313d \u3164\u3135\u315b\u313e \u3164\u3135\u315b\u313f \u3164\u3135\u315b\u3140 \u3164\u3135\u315b\u3141 \u3164\u3135\u315b\u3142 \u3164\u3135\u315b\u3143 \u3164\u3135\u315b\u3144 \u3164\u3135\u315b\u3145 \u3164\u3135\u315b\u3146 \u3164\u3135\u315b\u3147 \u3164\u3135\u315b\u3148 \u3164\u3135\u315b\u3149 \u3164\u3135\u315b\u314a \u3164\u3135\u315b\u314b \u3164\u3135\u315b\u314c \u3164\u3135\u315b\u314d \u3164\u3135\u315b\u314e \u3164\u3135\u315b\u314f \u3164\u3135\u315b\u3164 ",
-" row a5_cc_: \u3164\u3135\u315c\uca46 \u3164\u3135\u315c\u3131 \u3164\u3135\u315c\u3132 \u3164\u3135\u315c\u3133 \u3164\u3135\u315c\u3134 \u3164\u3135\u315c\u3135 \u3164\u3135\u315c\u3136 \u3164\u3135\u315c\u3137 \u3164\u3135\u315c\u3138 \u3164\u3135\u315c\u3139 \u3164\u3135\u315c\u313a \u3164\u3135\u315c\u313b \u3164\u3135\u315c\u313c \u3164\u3135\u315c\u313d \u3164\u3135\u315c\u313e \u3164\u3135\u315c\u313f \u3164\u3135\u315c\u3140 \u3164\u3135\u315c\u3141 \u3164\u3135\u315c\u3142 \u3164\u3135\u315c\u3143 \u3164\u3135\u315c\u3144 \u3164\u3135\u315c\u3145 \u3164\u3135\u315c\u3146 \u3164\u3135\u315c\u3147 \u3164\u3135\u315c\u3148 \u3164\u3135\u315c\u3149 \u3164\u3135\u315c\u314a \u3164\u3135\u315c\u314b \u3164\u3135\u315c\u314c \u3164\u3135\u315c\u314d \u3164\u3135\u315c\u314e \u3164\u3135\u315c\u314f \u3164\u3135\u315c\u3164 ",
-" row a5_cd_: \u3164\u3135\u315d\uca46 \u3164\u3135\u315d\u3131 \u3164\u3135\u315d\u3132 \u3164\u3135\u315d\u3133 \u3164\u3135\u315d\u3134 \u3164\u3135\u315d\u3135 \u3164\u3135\u315d\u3136 \u3164\u3135\u315d\u3137 \u3164\u3135\u315d\u3138 \u3164\u3135\u315d\u3139 \u3164\u3135\u315d\u313a \u3164\u3135\u315d\u313b \u3164\u3135\u315d\u313c \u3164\u3135\u315d\u313d \u3164\u3135\u315d\u313e \u3164\u3135\u315d\u313f \u3164\u3135\u315d\u3140 \u3164\u3135\u315d\u3141 \u3164\u3135\u315d\u3142 \u3164\u3135\u315d\u3143 \u3164\u3135\u315d\u3144 \u3164\u3135\u315d\u3145 \u3164\u3135\u315d\u3146 \u3164\u3135\u315d\u3147 \u3164\u3135\u315d\u3148 \u3164\u3135\u315d\u3149 \u3164\u3135\u315d\u314a \u3164\u3135\u315d\u314b \u3164\u3135\u315d\u314c \u3164\u3135\u315d\u314d \u3164\u3135\u315d\u314e \u3164\u3135\u315d\u314f \u3164\u3135\u315d\u3164 ",
-" row a5_ce_: \u3164\u3135\u315e\uca46 \u3164\u3135\u315e\u3131 \u3164\u3135\u315e\u3132 \u3164\u3135\u315e\u3133 \u3164\u3135\u315e\u3134 \u3164\u3135\u315e\u3135 \u3164\u3135\u315e\u3136 \u3164\u3135\u315e\u3137 \u3164\u3135\u315e\u3138 \u3164\u3135\u315e\u3139 \u3164\u3135\u315e\u313a \u3164\u3135\u315e\u313b \u3164\u3135\u315e\u313c \u3164\u3135\u315e\u313d \u3164\u3135\u315e\u313e \u3164\u3135\u315e\u313f \u3164\u3135\u315e\u3140 \u3164\u3135\u315e\u3141 \u3164\u3135\u315e\u3142 \u3164\u3135\u315e\u3143 \u3164\u3135\u315e\u3144 \u3164\u3135\u315e\u3145 \u3164\u3135\u315e\u3146 \u3164\u3135\u315e\u3147 \u3164\u3135\u315e\u3148 \u3164\u3135\u315e\u3149 \u3164\u3135\u315e\u314a \u3164\u3135\u315e\u314b \u3164\u3135\u315e\u314c \u3164\u3135\u315e\u314d \u3164\u3135\u315e\u314e \u3164\u3135\u315e\u314f \u3164\u3135\u315e\u3164 ",
-" row a5_cf_: \u3164\u3135\u315f\uca46 \u3164\u3135\u315f\u3131 \u3164\u3135\u315f\u3132 \u3164\u3135\u315f\u3133 \u3164\u3135\u315f\u3134 \u3164\u3135\u315f\u3135 \u3164\u3135\u315f\u3136 \u3164\u3135\u315f\u3137 \u3164\u3135\u315f\u3138 \u3164\u3135\u315f\u3139 \u3164\u3135\u315f\u313a \u3164\u3135\u315f\u313b \u3164\u3135\u315f\u313c \u3164\u3135\u315f\u313d \u3164\u3135\u315f\u313e \u3164\u3135\u315f\u313f \u3164\u3135\u315f\u3140 \u3164\u3135\u315f\u3141 \u3164\u3135\u315f\u3142 \u3164\u3135\u315f\u3143 \u3164\u3135\u315f\u3144 \u3164\u3135\u315f\u3145 \u3164\u3135\u315f\u3146 \u3164\u3135\u315f\u3147 \u3164\u3135\u315f\u3148 \u3164\u3135\u315f\u3149 \u3164\u3135\u315f\u314a \u3164\u3135\u315f\u314b \u3164\u3135\u315f\u314c \u3164\u3135\u315f\u314d \u3164\u3135\u315f\u314e \u3164\u3135\u315f\u314f \u3164\u3135\u315f\u3164 ",
-" row a5_d0_: \u3164\u3135\u3160\uca46 \u3164\u3135\u3160\u3131 \u3164\u3135\u3160\u3132 \u3164\u3135\u3160\u3133 \u3164\u3135\u3160\u3134 \u3164\u3135\u3160\u3135 \u3164\u3135\u3160\u3136 \u3164\u3135\u3160\u3137 \u3164\u3135\u3160\u3138 \u3164\u3135\u3160\u3139 \u3164\u3135\u3160\u313a \u3164\u3135\u3160\u313b \u3164\u3135\u3160\u313c \u3164\u3135\u3160\u313d \u3164\u3135\u3160\u313e \u3164\u3135\u3160\u313f \u3164\u3135\u3160\u3140 \u3164\u3135\u3160\u3141 \u3164\u3135\u3160\u3142 \u3164\u3135\u3160\u3143 \u3164\u3135\u3160\u3144 \u3164\u3135\u3160\u3145 \u3164\u3135\u3160\u3146 \u3164\u3135\u3160\u3147 \u3164\u3135\u3160\u3148 \u3164\u3135\u3160\u3149 \u3164\u3135\u3160\u314a \u3164\u3135\u3160\u314b \u3164\u3135\u3160\u314c \u3164\u3135\u3160\u314d \u3164\u3135\u3160\u314e \u3164\u3135\u3160\u314f \u3164\u3135\u3160\u3164 ",
-" row a5_d1_: \u3164\u3135\u3161\uca46 \u3164\u3135\u3161\u3131 \u3164\u3135\u3161\u3132 \u3164\u3135\u3161\u3133 \u3164\u3135\u3161\u3134 \u3164\u3135\u3161\u3135 \u3164\u3135\u3161\u3136 \u3164\u3135\u3161\u3137 \u3164\u3135\u3161\u3138 \u3164\u3135\u3161\u3139 \u3164\u3135\u3161\u313a \u3164\u3135\u3161\u313b \u3164\u3135\u3161\u313c \u3164\u3135\u3161\u313d \u3164\u3135\u3161\u313e \u3164\u3135\u3161\u313f \u3164\u3135\u3161\u3140 \u3164\u3135\u3161\u3141 \u3164\u3135\u3161\u3142 \u3164\u3135\u3161\u3143 \u3164\u3135\u3161\u3144 \u3164\u3135\u3161\u3145 \u3164\u3135\u3161\u3146 \u3164\u3135\u3161\u3147 \u3164\u3135\u3161\u3148 \u3164\u3135\u3161\u3149 \u3164\u3135\u3161\u314a \u3164\u3135\u3161\u314b \u3164\u3135\u3161\u314c \u3164\u3135\u3161\u314d \u3164\u3135\u3161\u314e \u3164\u3135\u3161\u314f \u3164\u3135\u3161\u3164 ",
-" row a5_d2_: \u3164\u3135\u3162\uca46 \u3164\u3135\u3162\u3131 \u3164\u3135\u3162\u3132 \u3164\u3135\u3162\u3133 \u3164\u3135\u3162\u3134 \u3164\u3135\u3162\u3135 \u3164\u3135\u3162\u3136 \u3164\u3135\u3162\u3137 \u3164\u3135\u3162\u3138 \u3164\u3135\u3162\u3139 \u3164\u3135\u3162\u313a \u3164\u3135\u3162\u313b \u3164\u3135\u3162\u313c \u3164\u3135\u3162\u313d \u3164\u3135\u3162\u313e \u3164\u3135\u3162\u313f \u3164\u3135\u3162\u3140 \u3164\u3135\u3162\u3141 \u3164\u3135\u3162\u3142 \u3164\u3135\u3162\u3143 \u3164\u3135\u3162\u3144 \u3164\u3135\u3162\u3145 \u3164\u3135\u3162\u3146 \u3164\u3135\u3162\u3147 \u3164\u3135\u3162\u3148 \u3164\u3135\u3162\u3149 \u3164\u3135\u3162\u314a \u3164\u3135\u3162\u314b \u3164\u3135\u3162\u314c \u3164\u3135\u3162\u314d \u3164\u3135\u3162\u314e \u3164\u3135\u3162\u314f \u3164\u3135\u3162\u3164 ",
-" row a5_d3_: \u3164\u3135\u3163\uca46 \u3164\u3135\u3163\u3131 \u3164\u3135\u3163\u3132 \u3164\u3135\u3163\u3133 \u3164\u3135\u3163\u3134 \u3164\u3135\u3163\u3135 \u3164\u3135\u3163\u3136 \u3164\u3135\u3163\u3137 \u3164\u3135\u3163\u3138 \u3164\u3135\u3163\u3139 \u3164\u3135\u3163\u313a \u3164\u3135\u3163\u313b \u3164\u3135\u3163\u313c \u3164\u3135\u3163\u313d \u3164\u3135\u3163\u313e \u3164\u3135\u3163\u313f \u3164\u3135\u3163\u3140 \u3164\u3135\u3163\u3141 \u3164\u3135\u3163\u3142 \u3164\u3135\u3163\u3143 \u3164\u3135\u3163\u3144 \u3164\u3135\u3163\u3145 \u3164\u3135\u3163\u3146 \u3164\u3135\u3163\u3147 \u3164\u3135\u3163\u3148 \u3164\u3135\u3163\u3149 \u3164\u3135\u3163\u314a \u3164\u3135\u3163\u314b \u3164\u3135\u3163\u314c \u3164\u3135\u3163\u314d \u3164\u3135\u3163\u314e \u3164\u3135\u3163\u314f \u3164\u3135\u3163\u3164 ",
-" row a5_d4_: \u3164\u3135\u3164\uca46 \u3164\u3135\u3164\u3131 \u3164\u3135\u3164\u3132 \u3164\u3135\u3164\u3133 \u3164\u3135\u3164\u3134 \u3164\u3135\u3164\u3135 \u3164\u3135\u3164\u3136 \u3164\u3135\u3164\u3137 \u3164\u3135\u3164\u3138 \u3164\u3135\u3164\u3139 \u3164\u3135\u3164\u313a \u3164\u3135\u3164\u313b \u3164\u3135\u3164\u313c \u3164\u3135\u3164\u313d \u3164\u3135\u3164\u313e \u3164\u3135\u3164\u313f \u3164\u3135\u3164\u3140 \u3164\u3135\u3164\u3141 \u3164\u3135\u3164\u3142 \u3164\u3135\u3164\u3143 \u3164\u3135\u3164\u3144 \u3164\u3135\u3164\u3145 \u3164\u3135\u3164\u3146 \u3164\u3135\u3164\u3147 \u3164\u3135\u3164\u3148 \u3164\u3135\u3164\u3149 \u3164\u3135\u3164\u314a \u3164\u3135\u3164\u314b \u3164\u3135\u3164\u314c \u3164\u3135\u3164\u314d \u3164\u3135\u3164\u314e \u3164\u3135\u3164\u314f \u3164\u3135\u3164\u3164 ",
-" row a6_be_: \u3164\u3136\u314e\uca46 \u3164\u3136\u314e\u3131 \u3164\u3136\u314e\u3132 \u3164\u3136\u314e\u3133 \u3164\u3136\u314e\u3134 \u3164\u3136\u314e\u3135 \u3164\u3136\u314e\u3136 \u3164\u3136\u314e\u3137 \u3164\u3136\u314e\u3138 \u3164\u3136\u314e\u3139 \u3164\u3136\u314e\u313a \u3164\u3136\u314e\u313b \u3164\u3136\u314e\u313c \u3164\u3136\u314e\u313d \u3164\u3136\u314e\u313e \u3164\u3136\u314e\u313f \u3164\u3136\u314e\u3140 \u3164\u3136\u314e\u3141 \u3164\u3136\u314e\u3142 \u3164\u3136\u314e\u3143 \u3164\u3136\u314e\u3144 \u3164\u3136\u314e\u3145 \u3164\u3136\u314e\u3146 \u3164\u3136\u314e\u3147 \u3164\u3136\u314e\u3148 \u3164\u3136\u314e\u3149 \u3164\u3136\u314e\u314a \u3164\u3136\u314e\u314b \u3164\u3136\u314e\u314c \u3164\u3136\u314e\u314d \u3164\u3136\u314e\u314e \u3164\u3136\u314e\u314f \u3164\u3136\u314e\u3164 ",
-" row a6_bf_: \u3164\u3136\u314f\uca46 \u3164\u3136\u314f\u3131 \u3164\u3136\u314f\u3132 \u3164\u3136\u314f\u3133 \u3164\u3136\u314f\u3134 \u3164\u3136\u314f\u3135 \u3164\u3136\u314f\u3136 \u3164\u3136\u314f\u3137 \u3164\u3136\u314f\u3138 \u3164\u3136\u314f\u3139 \u3164\u3136\u314f\u313a \u3164\u3136\u314f\u313b \u3164\u3136\u314f\u313c \u3164\u3136\u314f\u313d \u3164\u3136\u314f\u313e \u3164\u3136\u314f\u313f \u3164\u3136\u314f\u3140 \u3164\u3136\u314f\u3141 \u3164\u3136\u314f\u3142 \u3164\u3136\u314f\u3143 \u3164\u3136\u314f\u3144 \u3164\u3136\u314f\u3145 \u3164\u3136\u314f\u3146 \u3164\u3136\u314f\u3147 \u3164\u3136\u314f\u3148 \u3164\u3136\u314f\u3149 \u3164\u3136\u314f\u314a \u3164\u3136\u314f\u314b \u3164\u3136\u314f\u314c \u3164\u3136\u314f\u314d \u3164\u3136\u314f\u314e \u3164\u3136\u314f\u314f \u3164\u3136\u314f\u3164 ",
-" row a6_c0_: \u3164\u3136\u3150\uca46 \u3164\u3136\u3150\u3131 \u3164\u3136\u3150\u3132 \u3164\u3136\u3150\u3133 \u3164\u3136\u3150\u3134 \u3164\u3136\u3150\u3135 \u3164\u3136\u3150\u3136 \u3164\u3136\u3150\u3137 \u3164\u3136\u3150\u3138 \u3164\u3136\u3150\u3139 \u3164\u3136\u3150\u313a \u3164\u3136\u3150\u313b \u3164\u3136\u3150\u313c \u3164\u3136\u3150\u313d \u3164\u3136\u3150\u313e \u3164\u3136\u3150\u313f \u3164\u3136\u3150\u3140 \u3164\u3136\u3150\u3141 \u3164\u3136\u3150\u3142 \u3164\u3136\u3150\u3143 \u3164\u3136\u3150\u3144 \u3164\u3136\u3150\u3145 \u3164\u3136\u3150\u3146 \u3164\u3136\u3150\u3147 \u3164\u3136\u3150\u3148 \u3164\u3136\u3150\u3149 \u3164\u3136\u3150\u314a \u3164\u3136\u3150\u314b \u3164\u3136\u3150\u314c \u3164\u3136\u3150\u314d \u3164\u3136\u3150\u314e \u3164\u3136\u3150\u314f \u3164\u3136\u3150\u3164 ",
-" row a6_c1_: \u3164\u3136\u3151\uca46 \u3164\u3136\u3151\u3131 \u3164\u3136\u3151\u3132 \u3164\u3136\u3151\u3133 \u3164\u3136\u3151\u3134 \u3164\u3136\u3151\u3135 \u3164\u3136\u3151\u3136 \u3164\u3136\u3151\u3137 \u3164\u3136\u3151\u3138 \u3164\u3136\u3151\u3139 \u3164\u3136\u3151\u313a \u3164\u3136\u3151\u313b \u3164\u3136\u3151\u313c \u3164\u3136\u3151\u313d \u3164\u3136\u3151\u313e \u3164\u3136\u3151\u313f \u3164\u3136\u3151\u3140 \u3164\u3136\u3151\u3141 \u3164\u3136\u3151\u3142 \u3164\u3136\u3151\u3143 \u3164\u3136\u3151\u3144 \u3164\u3136\u3151\u3145 \u3164\u3136\u3151\u3146 \u3164\u3136\u3151\u3147 \u3164\u3136\u3151\u3148 \u3164\u3136\u3151\u3149 \u3164\u3136\u3151\u314a \u3164\u3136\u3151\u314b \u3164\u3136\u3151\u314c \u3164\u3136\u3151\u314d \u3164\u3136\u3151\u314e \u3164\u3136\u3151\u314f \u3164\u3136\u3151\u3164 ",
-" row a6_c2_: \u3164\u3136\u3152\uca46 \u3164\u3136\u3152\u3131 \u3164\u3136\u3152\u3132 \u3164\u3136\u3152\u3133 \u3164\u3136\u3152\u3134 \u3164\u3136\u3152\u3135 \u3164\u3136\u3152\u3136 \u3164\u3136\u3152\u3137 \u3164\u3136\u3152\u3138 \u3164\u3136\u3152\u3139 \u3164\u3136\u3152\u313a \u3164\u3136\u3152\u313b \u3164\u3136\u3152\u313c \u3164\u3136\u3152\u313d \u3164\u3136\u3152\u313e \u3164\u3136\u3152\u313f \u3164\u3136\u3152\u3140 \u3164\u3136\u3152\u3141 \u3164\u3136\u3152\u3142 \u3164\u3136\u3152\u3143 \u3164\u3136\u3152\u3144 \u3164\u3136\u3152\u3145 \u3164\u3136\u3152\u3146 \u3164\u3136\u3152\u3147 \u3164\u3136\u3152\u3148 \u3164\u3136\u3152\u3149 \u3164\u3136\u3152\u314a \u3164\u3136\u3152\u314b \u3164\u3136\u3152\u314c \u3164\u3136\u3152\u314d \u3164\u3136\u3152\u314e \u3164\u3136\u3152\u314f \u3164\u3136\u3152\u3164 ",
-" row a6_c3_: \u3164\u3136\u3153\uca46 \u3164\u3136\u3153\u3131 \u3164\u3136\u3153\u3132 \u3164\u3136\u3153\u3133 \u3164\u3136\u3153\u3134 \u3164\u3136\u3153\u3135 \u3164\u3136\u3153\u3136 \u3164\u3136\u3153\u3137 \u3164\u3136\u3153\u3138 \u3164\u3136\u3153\u3139 \u3164\u3136\u3153\u313a \u3164\u3136\u3153\u313b \u3164\u3136\u3153\u313c \u3164\u3136\u3153\u313d \u3164\u3136\u3153\u313e \u3164\u3136\u3153\u313f \u3164\u3136\u3153\u3140 \u3164\u3136\u3153\u3141 \u3164\u3136\u3153\u3142 \u3164\u3136\u3153\u3143 \u3164\u3136\u3153\u3144 \u3164\u3136\u3153\u3145 \u3164\u3136\u3153\u3146 \u3164\u3136\u3153\u3147 \u3164\u3136\u3153\u3148 \u3164\u3136\u3153\u3149 \u3164\u3136\u3153\u314a \u3164\u3136\u3153\u314b \u3164\u3136\u3153\u314c \u3164\u3136\u3153\u314d \u3164\u3136\u3153\u314e \u3164\u3136\u3153\u314f \u3164\u3136\u3153\u3164 ",
-" row a6_c4_: \u3164\u3136\u3154\uca46 \u3164\u3136\u3154\u3131 \u3164\u3136\u3154\u3132 \u3164\u3136\u3154\u3133 \u3164\u3136\u3154\u3134 \u3164\u3136\u3154\u3135 \u3164\u3136\u3154\u3136 \u3164\u3136\u3154\u3137 \u3164\u3136\u3154\u3138 \u3164\u3136\u3154\u3139 \u3164\u3136\u3154\u313a \u3164\u3136\u3154\u313b \u3164\u3136\u3154\u313c \u3164\u3136\u3154\u313d \u3164\u3136\u3154\u313e \u3164\u3136\u3154\u313f \u3164\u3136\u3154\u3140 \u3164\u3136\u3154\u3141 \u3164\u3136\u3154\u3142 \u3164\u3136\u3154\u3143 \u3164\u3136\u3154\u3144 \u3164\u3136\u3154\u3145 \u3164\u3136\u3154\u3146 \u3164\u3136\u3154\u3147 \u3164\u3136\u3154\u3148 \u3164\u3136\u3154\u3149 \u3164\u3136\u3154\u314a \u3164\u3136\u3154\u314b \u3164\u3136\u3154\u314c \u3164\u3136\u3154\u314d \u3164\u3136\u3154\u314e \u3164\u3136\u3154\u314f \u3164\u3136\u3154\u3164 ",
-" row a6_c5_: \u3164\u3136\u3155\uca46 \u3164\u3136\u3155\u3131 \u3164\u3136\u3155\u3132 \u3164\u3136\u3155\u3133 \u3164\u3136\u3155\u3134 \u3164\u3136\u3155\u3135 \u3164\u3136\u3155\u3136 \u3164\u3136\u3155\u3137 \u3164\u3136\u3155\u3138 \u3164\u3136\u3155\u3139 \u3164\u3136\u3155\u313a \u3164\u3136\u3155\u313b \u3164\u3136\u3155\u313c \u3164\u3136\u3155\u313d \u3164\u3136\u3155\u313e \u3164\u3136\u3155\u313f \u3164\u3136\u3155\u3140 \u3164\u3136\u3155\u3141 \u3164\u3136\u3155\u3142 \u3164\u3136\u3155\u3143 \u3164\u3136\u3155\u3144 \u3164\u3136\u3155\u3145 \u3164\u3136\u3155\u3146 \u3164\u3136\u3155\u3147 \u3164\u3136\u3155\u3148 \u3164\u3136\u3155\u3149 \u3164\u3136\u3155\u314a \u3164\u3136\u3155\u314b \u3164\u3136\u3155\u314c \u3164\u3136\u3155\u314d \u3164\u3136\u3155\u314e \u3164\u3136\u3155\u314f \u3164\u3136\u3155\u3164 ",
-" row a6_c6_: \u3164\u3136\u3156\uca46 \u3164\u3136\u3156\u3131 \u3164\u3136\u3156\u3132 \u3164\u3136\u3156\u3133 \u3164\u3136\u3156\u3134 \u3164\u3136\u3156\u3135 \u3164\u3136\u3156\u3136 \u3164\u3136\u3156\u3137 \u3164\u3136\u3156\u3138 \u3164\u3136\u3156\u3139 \u3164\u3136\u3156\u313a \u3164\u3136\u3156\u313b \u3164\u3136\u3156\u313c \u3164\u3136\u3156\u313d \u3164\u3136\u3156\u313e \u3164\u3136\u3156\u313f \u3164\u3136\u3156\u3140 \u3164\u3136\u3156\u3141 \u3164\u3136\u3156\u3142 \u3164\u3136\u3156\u3143 \u3164\u3136\u3156\u3144 \u3164\u3136\u3156\u3145 \u3164\u3136\u3156\u3146 \u3164\u3136\u3156\u3147 \u3164\u3136\u3156\u3148 \u3164\u3136\u3156\u3149 \u3164\u3136\u3156\u314a \u3164\u3136\u3156\u314b \u3164\u3136\u3156\u314c \u3164\u3136\u3156\u314d \u3164\u3136\u3156\u314e \u3164\u3136\u3156\u314f \u3164\u3136\u3156\u3164 ",
-" row a6_c7_: \u3164\u3136\u3157\uca46 \u3164\u3136\u3157\u3131 \u3164\u3136\u3157\u3132 \u3164\u3136\u3157\u3133 \u3164\u3136\u3157\u3134 \u3164\u3136\u3157\u3135 \u3164\u3136\u3157\u3136 \u3164\u3136\u3157\u3137 \u3164\u3136\u3157\u3138 \u3164\u3136\u3157\u3139 \u3164\u3136\u3157\u313a \u3164\u3136\u3157\u313b \u3164\u3136\u3157\u313c \u3164\u3136\u3157\u313d \u3164\u3136\u3157\u313e \u3164\u3136\u3157\u313f \u3164\u3136\u3157\u3140 \u3164\u3136\u3157\u3141 \u3164\u3136\u3157\u3142 \u3164\u3136\u3157\u3143 \u3164\u3136\u3157\u3144 \u3164\u3136\u3157\u3145 \u3164\u3136\u3157\u3146 \u3164\u3136\u3157\u3147 \u3164\u3136\u3157\u3148 \u3164\u3136\u3157\u3149 \u3164\u3136\u3157\u314a \u3164\u3136\u3157\u314b \u3164\u3136\u3157\u314c \u3164\u3136\u3157\u314d \u3164\u3136\u3157\u314e \u3164\u3136\u3157\u314f \u3164\u3136\u3157\u3164 ",
-" row a6_c8_: \u3164\u3136\u3158\uca46 \u3164\u3136\u3158\u3131 \u3164\u3136\u3158\u3132 \u3164\u3136\u3158\u3133 \u3164\u3136\u3158\u3134 \u3164\u3136\u3158\u3135 \u3164\u3136\u3158\u3136 \u3164\u3136\u3158\u3137 \u3164\u3136\u3158\u3138 \u3164\u3136\u3158\u3139 \u3164\u3136\u3158\u313a \u3164\u3136\u3158\u313b \u3164\u3136\u3158\u313c \u3164\u3136\u3158\u313d \u3164\u3136\u3158\u313e \u3164\u3136\u3158\u313f \u3164\u3136\u3158\u3140 \u3164\u3136\u3158\u3141 \u3164\u3136\u3158\u3142 \u3164\u3136\u3158\u3143 \u3164\u3136\u3158\u3144 \u3164\u3136\u3158\u3145 \u3164\u3136\u3158\u3146 \u3164\u3136\u3158\u3147 \u3164\u3136\u3158\u3148 \u3164\u3136\u3158\u3149 \u3164\u3136\u3158\u314a \u3164\u3136\u3158\u314b \u3164\u3136\u3158\u314c \u3164\u3136\u3158\u314d \u3164\u3136\u3158\u314e \u3164\u3136\u3158\u314f \u3164\u3136\u3158\u3164 ",
-" row a6_c9_: \u3164\u3136\u3159\uca46 \u3164\u3136\u3159\u3131 \u3164\u3136\u3159\u3132 \u3164\u3136\u3159\u3133 \u3164\u3136\u3159\u3134 \u3164\u3136\u3159\u3135 \u3164\u3136\u3159\u3136 \u3164\u3136\u3159\u3137 \u3164\u3136\u3159\u3138 \u3164\u3136\u3159\u3139 \u3164\u3136\u3159\u313a \u3164\u3136\u3159\u313b \u3164\u3136\u3159\u313c \u3164\u3136\u3159\u313d \u3164\u3136\u3159\u313e \u3164\u3136\u3159\u313f \u3164\u3136\u3159\u3140 \u3164\u3136\u3159\u3141 \u3164\u3136\u3159\u3142 \u3164\u3136\u3159\u3143 \u3164\u3136\u3159\u3144 \u3164\u3136\u3159\u3145 \u3164\u3136\u3159\u3146 \u3164\u3136\u3159\u3147 \u3164\u3136\u3159\u3148 \u3164\u3136\u3159\u3149 \u3164\u3136\u3159\u314a \u3164\u3136\u3159\u314b \u3164\u3136\u3159\u314c \u3164\u3136\u3159\u314d \u3164\u3136\u3159\u314e \u3164\u3136\u3159\u314f \u3164\u3136\u3159\u3164 ",
-" row a6_ca_: \u3164\u3136\u315a\uca46 \u3164\u3136\u315a\u3131 \u3164\u3136\u315a\u3132 \u3164\u3136\u315a\u3133 \u3164\u3136\u315a\u3134 \u3164\u3136\u315a\u3135 \u3164\u3136\u315a\u3136 \u3164\u3136\u315a\u3137 \u3164\u3136\u315a\u3138 \u3164\u3136\u315a\u3139 \u3164\u3136\u315a\u313a \u3164\u3136\u315a\u313b \u3164\u3136\u315a\u313c \u3164\u3136\u315a\u313d \u3164\u3136\u315a\u313e \u3164\u3136\u315a\u313f \u3164\u3136\u315a\u3140 \u3164\u3136\u315a\u3141 \u3164\u3136\u315a\u3142 \u3164\u3136\u315a\u3143 \u3164\u3136\u315a\u3144 \u3164\u3136\u315a\u3145 \u3164\u3136\u315a\u3146 \u3164\u3136\u315a\u3147 \u3164\u3136\u315a\u3148 \u3164\u3136\u315a\u3149 \u3164\u3136\u315a\u314a \u3164\u3136\u315a\u314b \u3164\u3136\u315a\u314c \u3164\u3136\u315a\u314d \u3164\u3136\u315a\u314e \u3164\u3136\u315a\u314f \u3164\u3136\u315a\u3164 ",
-" row a6_cb_: \u3164\u3136\u315b\uca46 \u3164\u3136\u315b\u3131 \u3164\u3136\u315b\u3132 \u3164\u3136\u315b\u3133 \u3164\u3136\u315b\u3134 \u3164\u3136\u315b\u3135 \u3164\u3136\u315b\u3136 \u3164\u3136\u315b\u3137 \u3164\u3136\u315b\u3138 \u3164\u3136\u315b\u3139 \u3164\u3136\u315b\u313a \u3164\u3136\u315b\u313b \u3164\u3136\u315b\u313c \u3164\u3136\u315b\u313d \u3164\u3136\u315b\u313e \u3164\u3136\u315b\u313f \u3164\u3136\u315b\u3140 \u3164\u3136\u315b\u3141 \u3164\u3136\u315b\u3142 \u3164\u3136\u315b\u3143 \u3164\u3136\u315b\u3144 \u3164\u3136\u315b\u3145 \u3164\u3136\u315b\u3146 \u3164\u3136\u315b\u3147 \u3164\u3136\u315b\u3148 \u3164\u3136\u315b\u3149 \u3164\u3136\u315b\u314a \u3164\u3136\u315b\u314b \u3164\u3136\u315b\u314c \u3164\u3136\u315b\u314d \u3164\u3136\u315b\u314e \u3164\u3136\u315b\u314f \u3164\u3136\u315b\u3164 ",
-" row a6_cc_: \u3164\u3136\u315c\uca46 \u3164\u3136\u315c\u3131 \u3164\u3136\u315c\u3132 \u3164\u3136\u315c\u3133 \u3164\u3136\u315c\u3134 \u3164\u3136\u315c\u3135 \u3164\u3136\u315c\u3136 \u3164\u3136\u315c\u3137 \u3164\u3136\u315c\u3138 \u3164\u3136\u315c\u3139 \u3164\u3136\u315c\u313a \u3164\u3136\u315c\u313b \u3164\u3136\u315c\u313c \u3164\u3136\u315c\u313d \u3164\u3136\u315c\u313e \u3164\u3136\u315c\u313f \u3164\u3136\u315c\u3140 \u3164\u3136\u315c\u3141 \u3164\u3136\u315c\u3142 \u3164\u3136\u315c\u3143 \u3164\u3136\u315c\u3144 \u3164\u3136\u315c\u3145 \u3164\u3136\u315c\u3146 \u3164\u3136\u315c\u3147 \u3164\u3136\u315c\u3148 \u3164\u3136\u315c\u3149 \u3164\u3136\u315c\u314a \u3164\u3136\u315c\u314b \u3164\u3136\u315c\u314c \u3164\u3136\u315c\u314d \u3164\u3136\u315c\u314e \u3164\u3136\u315c\u314f \u3164\u3136\u315c\u3164 ",
-" row a6_cd_: \u3164\u3136\u315d\uca46 \u3164\u3136\u315d\u3131 \u3164\u3136\u315d\u3132 \u3164\u3136\u315d\u3133 \u3164\u3136\u315d\u3134 \u3164\u3136\u315d\u3135 \u3164\u3136\u315d\u3136 \u3164\u3136\u315d\u3137 \u3164\u3136\u315d\u3138 \u3164\u3136\u315d\u3139 \u3164\u3136\u315d\u313a \u3164\u3136\u315d\u313b \u3164\u3136\u315d\u313c \u3164\u3136\u315d\u313d \u3164\u3136\u315d\u313e \u3164\u3136\u315d\u313f \u3164\u3136\u315d\u3140 \u3164\u3136\u315d\u3141 \u3164\u3136\u315d\u3142 \u3164\u3136\u315d\u3143 \u3164\u3136\u315d\u3144 \u3164\u3136\u315d\u3145 \u3164\u3136\u315d\u3146 \u3164\u3136\u315d\u3147 \u3164\u3136\u315d\u3148 \u3164\u3136\u315d\u3149 \u3164\u3136\u315d\u314a \u3164\u3136\u315d\u314b \u3164\u3136\u315d\u314c \u3164\u3136\u315d\u314d \u3164\u3136\u315d\u314e \u3164\u3136\u315d\u314f \u3164\u3136\u315d\u3164 ",
-" row a6_ce_: \u3164\u3136\u315e\uca46 \u3164\u3136\u315e\u3131 \u3164\u3136\u315e\u3132 \u3164\u3136\u315e\u3133 \u3164\u3136\u315e\u3134 \u3164\u3136\u315e\u3135 \u3164\u3136\u315e\u3136 \u3164\u3136\u315e\u3137 \u3164\u3136\u315e\u3138 \u3164\u3136\u315e\u3139 \u3164\u3136\u315e\u313a \u3164\u3136\u315e\u313b \u3164\u3136\u315e\u313c \u3164\u3136\u315e\u313d \u3164\u3136\u315e\u313e \u3164\u3136\u315e\u313f \u3164\u3136\u315e\u3140 \u3164\u3136\u315e\u3141 \u3164\u3136\u315e\u3142 \u3164\u3136\u315e\u3143 \u3164\u3136\u315e\u3144 \u3164\u3136\u315e\u3145 \u3164\u3136\u315e\u3146 \u3164\u3136\u315e\u3147 \u3164\u3136\u315e\u3148 \u3164\u3136\u315e\u3149 \u3164\u3136\u315e\u314a \u3164\u3136\u315e\u314b \u3164\u3136\u315e\u314c \u3164\u3136\u315e\u314d \u3164\u3136\u315e\u314e \u3164\u3136\u315e\u314f \u3164\u3136\u315e\u3164 ",
-" row a6_cf_: \u3164\u3136\u315f\uca46 \u3164\u3136\u315f\u3131 \u3164\u3136\u315f\u3132 \u3164\u3136\u315f\u3133 \u3164\u3136\u315f\u3134 \u3164\u3136\u315f\u3135 \u3164\u3136\u315f\u3136 \u3164\u3136\u315f\u3137 \u3164\u3136\u315f\u3138 \u3164\u3136\u315f\u3139 \u3164\u3136\u315f\u313a \u3164\u3136\u315f\u313b \u3164\u3136\u315f\u313c \u3164\u3136\u315f\u313d \u3164\u3136\u315f\u313e \u3164\u3136\u315f\u313f \u3164\u3136\u315f\u3140 \u3164\u3136\u315f\u3141 \u3164\u3136\u315f\u3142 \u3164\u3136\u315f\u3143 \u3164\u3136\u315f\u3144 \u3164\u3136\u315f\u3145 \u3164\u3136\u315f\u3146 \u3164\u3136\u315f\u3147 \u3164\u3136\u315f\u3148 \u3164\u3136\u315f\u3149 \u3164\u3136\u315f\u314a \u3164\u3136\u315f\u314b \u3164\u3136\u315f\u314c \u3164\u3136\u315f\u314d \u3164\u3136\u315f\u314e \u3164\u3136\u315f\u314f \u3164\u3136\u315f\u3164 ",
-" row a6_d0_: \u3164\u3136\u3160\uca46 \u3164\u3136\u3160\u3131 \u3164\u3136\u3160\u3132 \u3164\u3136\u3160\u3133 \u3164\u3136\u3160\u3134 \u3164\u3136\u3160\u3135 \u3164\u3136\u3160\u3136 \u3164\u3136\u3160\u3137 \u3164\u3136\u3160\u3138 \u3164\u3136\u3160\u3139 \u3164\u3136\u3160\u313a \u3164\u3136\u3160\u313b \u3164\u3136\u3160\u313c \u3164\u3136\u3160\u313d \u3164\u3136\u3160\u313e \u3164\u3136\u3160\u313f \u3164\u3136\u3160\u3140 \u3164\u3136\u3160\u3141 \u3164\u3136\u3160\u3142 \u3164\u3136\u3160\u3143 \u3164\u3136\u3160\u3144 \u3164\u3136\u3160\u3145 \u3164\u3136\u3160\u3146 \u3164\u3136\u3160\u3147 \u3164\u3136\u3160\u3148 \u3164\u3136\u3160\u3149 \u3164\u3136\u3160\u314a \u3164\u3136\u3160\u314b \u3164\u3136\u3160\u314c \u3164\u3136\u3160\u314d \u3164\u3136\u3160\u314e \u3164\u3136\u3160\u314f \u3164\u3136\u3160\u3164 ",
-" row a6_d1_: \u3164\u3136\u3161\uca46 \u3164\u3136\u3161\u3131 \u3164\u3136\u3161\u3132 \u3164\u3136\u3161\u3133 \u3164\u3136\u3161\u3134 \u3164\u3136\u3161\u3135 \u3164\u3136\u3161\u3136 \u3164\u3136\u3161\u3137 \u3164\u3136\u3161\u3138 \u3164\u3136\u3161\u3139 \u3164\u3136\u3161\u313a \u3164\u3136\u3161\u313b \u3164\u3136\u3161\u313c \u3164\u3136\u3161\u313d \u3164\u3136\u3161\u313e \u3164\u3136\u3161\u313f \u3164\u3136\u3161\u3140 \u3164\u3136\u3161\u3141 \u3164\u3136\u3161\u3142 \u3164\u3136\u3161\u3143 \u3164\u3136\u3161\u3144 \u3164\u3136\u3161\u3145 \u3164\u3136\u3161\u3146 \u3164\u3136\u3161\u3147 \u3164\u3136\u3161\u3148 \u3164\u3136\u3161\u3149 \u3164\u3136\u3161\u314a \u3164\u3136\u3161\u314b \u3164\u3136\u3161\u314c \u3164\u3136\u3161\u314d \u3164\u3136\u3161\u314e \u3164\u3136\u3161\u314f \u3164\u3136\u3161\u3164 ",
-" row a6_d2_: \u3164\u3136\u3162\uca46 \u3164\u3136\u3162\u3131 \u3164\u3136\u3162\u3132 \u3164\u3136\u3162\u3133 \u3164\u3136\u3162\u3134 \u3164\u3136\u3162\u3135 \u3164\u3136\u3162\u3136 \u3164\u3136\u3162\u3137 \u3164\u3136\u3162\u3138 \u3164\u3136\u3162\u3139 \u3164\u3136\u3162\u313a \u3164\u3136\u3162\u313b \u3164\u3136\u3162\u313c \u3164\u3136\u3162\u313d \u3164\u3136\u3162\u313e \u3164\u3136\u3162\u313f \u3164\u3136\u3162\u3140 \u3164\u3136\u3162\u3141 \u3164\u3136\u3162\u3142 \u3164\u3136\u3162\u3143 \u3164\u3136\u3162\u3144 \u3164\u3136\u3162\u3145 \u3164\u3136\u3162\u3146 \u3164\u3136\u3162\u3147 \u3164\u3136\u3162\u3148 \u3164\u3136\u3162\u3149 \u3164\u3136\u3162\u314a \u3164\u3136\u3162\u314b \u3164\u3136\u3162\u314c \u3164\u3136\u3162\u314d \u3164\u3136\u3162\u314e \u3164\u3136\u3162\u314f \u3164\u3136\u3162\u3164 ",
-" row a6_d3_: \u3164\u3136\u3163\uca46 \u3164\u3136\u3163\u3131 \u3164\u3136\u3163\u3132 \u3164\u3136\u3163\u3133 \u3164\u3136\u3163\u3134 \u3164\u3136\u3163\u3135 \u3164\u3136\u3163\u3136 \u3164\u3136\u3163\u3137 \u3164\u3136\u3163\u3138 \u3164\u3136\u3163\u3139 \u3164\u3136\u3163\u313a \u3164\u3136\u3163\u313b \u3164\u3136\u3163\u313c \u3164\u3136\u3163\u313d \u3164\u3136\u3163\u313e \u3164\u3136\u3163\u313f \u3164\u3136\u3163\u3140 \u3164\u3136\u3163\u3141 \u3164\u3136\u3163\u3142 \u3164\u3136\u3163\u3143 \u3164\u3136\u3163\u3144 \u3164\u3136\u3163\u3145 \u3164\u3136\u3163\u3146 \u3164\u3136\u3163\u3147 \u3164\u3136\u3163\u3148 \u3164\u3136\u3163\u3149 \u3164\u3136\u3163\u314a \u3164\u3136\u3163\u314b \u3164\u3136\u3163\u314c \u3164\u3136\u3163\u314d \u3164\u3136\u3163\u314e \u3164\u3136\u3163\u314f \u3164\u3136\u3163\u3164 ",
-" row a6_d4_: \u3164\u3136\u3164\uca46 \u3164\u3136\u3164\u3131 \u3164\u3136\u3164\u3132 \u3164\u3136\u3164\u3133 \u3164\u3136\u3164\u3134 \u3164\u3136\u3164\u3135 \u3164\u3136\u3164\u3136 \u3164\u3136\u3164\u3137 \u3164\u3136\u3164\u3138 \u3164\u3136\u3164\u3139 \u3164\u3136\u3164\u313a \u3164\u3136\u3164\u313b \u3164\u3136\u3164\u313c \u3164\u3136\u3164\u313d \u3164\u3136\u3164\u313e \u3164\u3136\u3164\u313f \u3164\u3136\u3164\u3140 \u3164\u3136\u3164\u3141 \u3164\u3136\u3164\u3142 \u3164\u3136\u3164\u3143 \u3164\u3136\u3164\u3144 \u3164\u3136\u3164\u3145 \u3164\u3136\u3164\u3146 \u3164\u3136\u3164\u3147 \u3164\u3136\u3164\u3148 \u3164\u3136\u3164\u3149 \u3164\u3136\u3164\u314a \u3164\u3136\u3164\u314b \u3164\u3136\u3164\u314c \u3164\u3136\u3164\u314d \u3164\u3136\u3164\u314e \u3164\u3136\u3164\u314f \u3164\u3136\u3164\u3164 ",
-" row a7_be_: \u3164\u3137\u314e\uca46 \u3164\u3137\u314e\u3131 \u3164\u3137\u314e\u3132 \u3164\u3137\u314e\u3133 \u3164\u3137\u314e\u3134 \u3164\u3137\u314e\u3135 \u3164\u3137\u314e\u3136 \u3164\u3137\u314e\u3137 \u3164\u3137\u314e\u3138 \u3164\u3137\u314e\u3139 \u3164\u3137\u314e\u313a \u3164\u3137\u314e\u313b \u3164\u3137\u314e\u313c \u3164\u3137\u314e\u313d \u3164\u3137\u314e\u313e \u3164\u3137\u314e\u313f \u3164\u3137\u314e\u3140 \u3164\u3137\u314e\u3141 \u3164\u3137\u314e\u3142 \u3164\u3137\u314e\u3143 \u3164\u3137\u314e\u3144 \u3164\u3137\u314e\u3145 \u3164\u3137\u314e\u3146 \u3164\u3137\u314e\u3147 \u3164\u3137\u314e\u3148 \u3164\u3137\u314e\u3149 \u3164\u3137\u314e\u314a \u3164\u3137\u314e\u314b \u3164\u3137\u314e\u314c \u3164\u3137\u314e\u314d \u3164\u3137\u314e\u314e \u3164\u3137\u314e\u314f \u3164\u3137\u314e\u3164 ",
-" row a7_bf_: \u3164\u3137\u314f\uca46 \ub2e5 \ub2e6 \ub2e7 \ub2e8 \ub2e9 \ub2ea \ub2eb \u3164\u3137\u314f\u3138 \ub2ec \ub2ed \ub2ee \ub2ef \ub2f0 \ub2f1 \ub2f2 \ub2f3 \ub2f4 \ub2f5 \u3164\u3137\u314f\u3143 \ub2f6 \ub2f7 \ub2f8 \ub2f9 \ub2fa \u3164\u3137\u314f\u3149 \ub2fb \ub2fc \ub2fd \ub2fe \ub2ff \u3164\u3137\u314f\u314f \ub2e4 ",
-" row a7_c0_: \u3164\u3137\u3150\uca46 \ub301 \ub302 \ub303 \ub304 \ub305 \ub306 \ub307 \u3164\u3137\u3150\u3138 \ub308 \ub309 \ub30a \ub30b \ub30c \ub30d \ub30e \ub30f \ub310 \ub311 \u3164\u3137\u3150\u3143 \ub312 \ub313 \ub314 \ub315 \ub316 \u3164\u3137\u3150\u3149 \ub317 \ub318 \ub319 \ub31a \ub31b \u3164\u3137\u3150\u314f \ub300 ",
-" row a7_c1_: \u3164\u3137\u3151\uca46 \ub31d \ub31e \ub31f \ub320 \ub321 \ub322 \ub323 \u3164\u3137\u3151\u3138 \ub324 \ub325 \ub326 \ub327 \ub328 \ub329 \ub32a \ub32b \ub32c \ub32d \u3164\u3137\u3151\u3143 \ub32e \ub32f \ub330 \ub331 \ub332 \u3164\u3137\u3151\u3149 \ub333 \ub334 \ub335 \ub336 \ub337 \u3164\u3137\u3151\u314f \ub31c ",
-" row a7_c2_: \u3164\u3137\u3152\uca46 \ub339 \ub33a \ub33b \ub33c \ub33d \ub33e \ub33f \u3164\u3137\u3152\u3138 \ub340 \ub341 \ub342 \ub343 \ub344 \ub345 \ub346 \ub347 \ub348 \ub349 \u3164\u3137\u3152\u3143 \ub34a \ub34b \ub34c \ub34d \ub34e \u3164\u3137\u3152\u3149 \ub34f \ub350 \ub351 \ub352 \ub353 \u3164\u3137\u3152\u314f \ub338 ",
-" row a7_c3_: \u3164\u3137\u3153\uca46 \ub355 \ub356 \ub357 \ub358 \ub359 \ub35a \ub35b \u3164\u3137\u3153\u3138 \ub35c \ub35d \ub35e \ub35f \ub360 \ub361 \ub362 \ub363 \ub364 \ub365 \u3164\u3137\u3153\u3143 \ub366 \ub367 \ub368 \ub369 \ub36a \u3164\u3137\u3153\u3149 \ub36b \ub36c \ub36d \ub36e \ub36f \u3164\u3137\u3153\u314f \ub354 ",
-" row a7_c4_: \u3164\u3137\u3154\uca46 \ub371 \ub372 \ub373 \ub374 \ub375 \ub376 \ub377 \u3164\u3137\u3154\u3138 \ub378 \ub379 \ub37a \ub37b \ub37c \ub37d \ub37e \ub37f \ub380 \ub381 \u3164\u3137\u3154\u3143 \ub382 \ub383 \ub384 \ub385 \ub386 \u3164\u3137\u3154\u3149 \ub387 \ub388 \ub389 \ub38a \ub38b \u3164\u3137\u3154\u314f \ub370 ",
-" row a7_c5_: \u3164\u3137\u3155\uca46 \ub38d \ub38e \ub38f \ub390 \ub391 \ub392 \ub393 \u3164\u3137\u3155\u3138 \ub394 \ub395 \ub396 \ub397 \ub398 \ub399 \ub39a \ub39b \ub39c \ub39d \u3164\u3137\u3155\u3143 \ub39e \ub39f \ub3a0 \ub3a1 \ub3a2 \u3164\u3137\u3155\u3149 \ub3a3 \ub3a4 \ub3a5 \ub3a6 \ub3a7 \u3164\u3137\u3155\u314f \ub38c ",
-" row a7_c6_: \u3164\u3137\u3156\uca46 \ub3a9 \ub3aa \ub3ab \ub3ac \ub3ad \ub3ae \ub3af \u3164\u3137\u3156\u3138 \ub3b0 \ub3b1 \ub3b2 \ub3b3 \ub3b4 \ub3b5 \ub3b6 \ub3b7 \ub3b8 \ub3b9 \u3164\u3137\u3156\u3143 \ub3ba \ub3bb \ub3bc \ub3bd \ub3be \u3164\u3137\u3156\u3149 \ub3bf \ub3c0 \ub3c1 \ub3c2 \ub3c3 \u3164\u3137\u3156\u314f \ub3a8 ",
-" row a7_c7_: \u3164\u3137\u3157\uca46 \ub3c5 \ub3c6 \ub3c7 \ub3c8 \ub3c9 \ub3ca \ub3cb \u3164\u3137\u3157\u3138 \ub3cc \ub3cd \ub3ce \ub3cf \ub3d0 \ub3d1 \ub3d2 \ub3d3 \ub3d4 \ub3d5 \u3164\u3137\u3157\u3143 \ub3d6 \ub3d7 \ub3d8 \ub3d9 \ub3da \u3164\u3137\u3157\u3149 \ub3db \ub3dc \ub3dd \ub3de \ub3df \u3164\u3137\u3157\u314f \ub3c4 ",
-" row a7_c8_: \u3164\u3137\u3158\uca46 \ub3e1 \ub3e2 \ub3e3 \ub3e4 \ub3e5 \ub3e6 \ub3e7 \u3164\u3137\u3158\u3138 \ub3e8 \ub3e9 \ub3ea \ub3eb \ub3ec \ub3ed \ub3ee \ub3ef \ub3f0 \ub3f1 \u3164\u3137\u3158\u3143 \ub3f2 \ub3f3 \ub3f4 \ub3f5 \ub3f6 \u3164\u3137\u3158\u3149 \ub3f7 \ub3f8 \ub3f9 \ub3fa \ub3fb \u3164\u3137\u3158\u314f \ub3e0 ",
-" row a7_c9_: \u3164\u3137\u3159\uca46 \ub3fd \ub3fe \ub3ff \ub400 \ub401 \ub402 \ub403 \u3164\u3137\u3159\u3138 \ub404 \ub405 \ub406 \ub407 \ub408 \ub409 \ub40a \ub40b \ub40c \ub40d \u3164\u3137\u3159\u3143 \ub40e \ub40f \ub410 \ub411 \ub412 \u3164\u3137\u3159\u3149 \ub413 \ub414 \ub415 \ub416 \ub417 \u3164\u3137\u3159\u314f \ub3fc ",
-" row a7_ca_: \u3164\u3137\u315a\uca46 \ub419 \ub41a \ub41b \ub41c \ub41d \ub41e \ub41f \u3164\u3137\u315a\u3138 \ub420 \ub421 \ub422 \ub423 \ub424 \ub425 \ub426 \ub427 \ub428 \ub429 \u3164\u3137\u315a\u3143 \ub42a \ub42b \ub42c \ub42d \ub42e \u3164\u3137\u315a\u3149 \ub42f \ub430 \ub431 \ub432 \ub433 \u3164\u3137\u315a\u314f \ub418 ",
-" row a7_cb_: \u3164\u3137\u315b\uca46 \ub435 \ub436 \ub437 \ub438 \ub439 \ub43a \ub43b \u3164\u3137\u315b\u3138 \ub43c \ub43d \ub43e \ub43f \ub440 \ub441 \ub442 \ub443 \ub444 \ub445 \u3164\u3137\u315b\u3143 \ub446 \ub447 \ub448 \ub449 \ub44a \u3164\u3137\u315b\u3149 \ub44b \ub44c \ub44d \ub44e \ub44f \u3164\u3137\u315b\u314f \ub434 ",
-" row a7_cc_: \u3164\u3137\u315c\uca46 \ub451 \ub452 \ub453 \ub454 \ub455 \ub456 \ub457 \u3164\u3137\u315c\u3138 \ub458 \ub459 \ub45a \ub45b \ub45c \ub45d \ub45e \ub45f \ub460 \ub461 \u3164\u3137\u315c\u3143 \ub462 \ub463 \ub464 \ub465 \ub466 \u3164\u3137\u315c\u3149 \ub467 \ub468 \ub469 \ub46a \ub46b \u3164\u3137\u315c\u314f \ub450 ",
-" row a7_cd_: \u3164\u3137\u315d\uca46 \ub46d \ub46e \ub46f \ub470 \ub471 \ub472 \ub473 \u3164\u3137\u315d\u3138 \ub474 \ub475 \ub476 \ub477 \ub478 \ub479 \ub47a \ub47b \ub47c \ub47d \u3164\u3137\u315d\u3143 \ub47e \ub47f \ub480 \ub481 \ub482 \u3164\u3137\u315d\u3149 \ub483 \ub484 \ub485 \ub486 \ub487 \u3164\u3137\u315d\u314f \ub46c ",
-" row a7_ce_: \u3164\u3137\u315e\uca46 \ub489 \ub48a \ub48b \ub48c \ub48d \ub48e \ub48f \u3164\u3137\u315e\u3138 \ub490 \ub491 \ub492 \ub493 \ub494 \ub495 \ub496 \ub497 \ub498 \ub499 \u3164\u3137\u315e\u3143 \ub49a \ub49b \ub49c \ub49d \ub49e \u3164\u3137\u315e\u3149 \ub49f \ub4a0 \ub4a1 \ub4a2 \ub4a3 \u3164\u3137\u315e\u314f \ub488 ",
-" row a7_cf_: \u3164\u3137\u315f\uca46 \ub4a5 \ub4a6 \ub4a7 \ub4a8 \ub4a9 \ub4aa \ub4ab \u3164\u3137\u315f\u3138 \ub4ac \ub4ad \ub4ae \ub4af \ub4b0 \ub4b1 \ub4b2 \ub4b3 \ub4b4 \ub4b5 \u3164\u3137\u315f\u3143 \ub4b6 \ub4b7 \ub4b8 \ub4b9 \ub4ba \u3164\u3137\u315f\u3149 \ub4bb \ub4bc \ub4bd \ub4be \ub4bf \u3164\u3137\u315f\u314f \ub4a4 ",
-" row a7_d0_: \u3164\u3137\u3160\uca46 \ub4c1 \ub4c2 \ub4c3 \ub4c4 \ub4c5 \ub4c6 \ub4c7 \u3164\u3137\u3160\u3138 \ub4c8 \ub4c9 \ub4ca \ub4cb \ub4cc \ub4cd \ub4ce \ub4cf \ub4d0 \ub4d1 \u3164\u3137\u3160\u3143 \ub4d2 \ub4d3 \ub4d4 \ub4d5 \ub4d6 \u3164\u3137\u3160\u3149 \ub4d7 \ub4d8 \ub4d9 \ub4da \ub4db \u3164\u3137\u3160\u314f \ub4c0 ",
-" row a7_d1_: \u3164\u3137\u3161\uca46 \ub4dd \ub4de \ub4df \ub4e0 \ub4e1 \ub4e2 \ub4e3 \u3164\u3137\u3161\u3138 \ub4e4 \ub4e5 \ub4e6 \ub4e7 \ub4e8 \ub4e9 \ub4ea \ub4eb \ub4ec \ub4ed \u3164\u3137\u3161\u3143 \ub4ee \ub4ef \ub4f0 \ub4f1 \ub4f2 \u3164\u3137\u3161\u3149 \ub4f3 \ub4f4 \ub4f5 \ub4f6 \ub4f7 \u3164\u3137\u3161\u314f \ub4dc ",
-" row a7_d2_: \u3164\u3137\u3162\uca46 \ub4f9 \ub4fa \ub4fb \ub4fc \ub4fd \ub4fe \ub4ff \u3164\u3137\u3162\u3138 \ub500 \ub501 \ub502 \ub503 \ub504 \ub505 \ub506 \ub507 \ub508 \ub509 \u3164\u3137\u3162\u3143 \ub50a \ub50b \ub50c \ub50d \ub50e \u3164\u3137\u3162\u3149 \ub50f \ub510 \ub511 \ub512 \ub513 \u3164\u3137\u3162\u314f \ub4f8 ",
-" row a7_d3_: \u3164\u3137\u3163\uca46 \ub515 \ub516 \ub517 \ub518 \ub519 \ub51a \ub51b \u3164\u3137\u3163\u3138 \ub51c \ub51d \ub51e \ub51f \ub520 \ub521 \ub522 \ub523 \ub524 \ub525 \u3164\u3137\u3163\u3143 \ub526 \ub527 \ub528 \ub529 \ub52a \u3164\u3137\u3163\u3149 \ub52b \ub52c \ub52d \ub52e \ub52f \u3164\u3137\u3163\u314f \ub514 ",
-" row a7_d4_: \u3164\u3137\u3164\uca46 \u3164\u3137\u3164\u3131 \u3164\u3137\u3164\u3132 \u3164\u3137\u3164\u3133 \u3164\u3137\u3164\u3134 \u3164\u3137\u3164\u3135 \u3164\u3137\u3164\u3136 \u3164\u3137\u3164\u3137 \u3164\u3137\u3164\u3138 \u3164\u3137\u3164\u3139 \u3164\u3137\u3164\u313a \u3164\u3137\u3164\u313b \u3164\u3137\u3164\u313c \u3164\u3137\u3164\u313d \u3164\u3137\u3164\u313e \u3164\u3137\u3164\u313f \u3164\u3137\u3164\u3140 \u3164\u3137\u3164\u3141 \u3164\u3137\u3164\u3142 \u3164\u3137\u3164\u3143 \u3164\u3137\u3164\u3144 \u3164\u3137\u3164\u3145 \u3164\u3137\u3164\u3146 \u3164\u3137\u3164\u3147 \u3164\u3137\u3164\u3148 \u3164\u3137\u3164\u3149 \u3164\u3137\u3164\u314a \u3164\u3137\u3164\u314b \u3164\u3137\u3164\u314c \u3164\u3137\u3164\u314d \u3164\u3137\u3164\u314e \u3164\u3137\u3164\u314f \u3164\u3137\u3164\u3164 ",
-" row a8_be_: \u3164\u3138\u314e\uca46 \u3164\u3138\u314e\u3131 \u3164\u3138\u314e\u3132 \u3164\u3138\u314e\u3133 \u3164\u3138\u314e\u3134 \u3164\u3138\u314e\u3135 \u3164\u3138\u314e\u3136 \u3164\u3138\u314e\u3137 \u3164\u3138\u314e\u3138 \u3164\u3138\u314e\u3139 \u3164\u3138\u314e\u313a \u3164\u3138\u314e\u313b \u3164\u3138\u314e\u313c \u3164\u3138\u314e\u313d \u3164\u3138\u314e\u313e \u3164\u3138\u314e\u313f \u3164\u3138\u314e\u3140 \u3164\u3138\u314e\u3141 \u3164\u3138\u314e\u3142 \u3164\u3138\u314e\u3143 \u3164\u3138\u314e\u3144 \u3164\u3138\u314e\u3145 \u3164\u3138\u314e\u3146 \u3164\u3138\u314e\u3147 \u3164\u3138\u314e\u3148 \u3164\u3138\u314e\u3149 \u3164\u3138\u314e\u314a \u3164\u3138\u314e\u314b \u3164\u3138\u314e\u314c \u3164\u3138\u314e\u314d \u3164\u3138\u314e\u314e \u3164\u3138\u314e\u314f \u3164\u3138\u314e\u3164 ",
-" row a8_bf_: \u3164\u3138\u314f\uca46 \ub531 \ub532 \ub533 \ub534 \ub535 \ub536 \ub537 \u3164\u3138\u314f\u3138 \ub538 \ub539 \ub53a \ub53b \ub53c \ub53d \ub53e \ub53f \ub540 \ub541 \u3164\u3138\u314f\u3143 \ub542 \ub543 \ub544 \ub545 \ub546 \u3164\u3138\u314f\u3149 \ub547 \ub548 \ub549 \ub54a \ub54b \u3164\u3138\u314f\u314f \ub530 ",
-" row a8_c0_: \u3164\u3138\u3150\uca46 \ub54d \ub54e \ub54f \ub550 \ub551 \ub552 \ub553 \u3164\u3138\u3150\u3138 \ub554 \ub555 \ub556 \ub557 \ub558 \ub559 \ub55a \ub55b \ub55c \ub55d \u3164\u3138\u3150\u3143 \ub55e \ub55f \ub560 \ub561 \ub562 \u3164\u3138\u3150\u3149 \ub563 \ub564 \ub565 \ub566 \ub567 \u3164\u3138\u3150\u314f \ub54c ",
-" row a8_c1_: \u3164\u3138\u3151\uca46 \ub569 \ub56a \ub56b \ub56c \ub56d \ub56e \ub56f \u3164\u3138\u3151\u3138 \ub570 \ub571 \ub572 \ub573 \ub574 \ub575 \ub576 \ub577 \ub578 \ub579 \u3164\u3138\u3151\u3143 \ub57a \ub57b \ub57c \ub57d \ub57e \u3164\u3138\u3151\u3149 \ub57f \ub580 \ub581 \ub582 \ub583 \u3164\u3138\u3151\u314f \ub568 ",
-" row a8_c2_: \u3164\u3138\u3152\uca46 \ub585 \ub586 \ub587 \ub588 \ub589 \ub58a \ub58b \u3164\u3138\u3152\u3138 \ub58c \ub58d \ub58e \ub58f \ub590 \ub591 \ub592 \ub593 \ub594 \ub595 \u3164\u3138\u3152\u3143 \ub596 \ub597 \ub598 \ub599 \ub59a \u3164\u3138\u3152\u3149 \ub59b \ub59c \ub59d \ub59e \ub59f \u3164\u3138\u3152\u314f \ub584 ",
-" row a8_c3_: \u3164\u3138\u3153\uca46 \ub5a1 \ub5a2 \ub5a3 \ub5a4 \ub5a5 \ub5a6 \ub5a7 \u3164\u3138\u3153\u3138 \ub5a8 \ub5a9 \ub5aa \ub5ab \ub5ac \ub5ad \ub5ae \ub5af \ub5b0 \ub5b1 \u3164\u3138\u3153\u3143 \ub5b2 \ub5b3 \ub5b4 \ub5b5 \ub5b6 \u3164\u3138\u3153\u3149 \ub5b7 \ub5b8 \ub5b9 \ub5ba \ub5bb \u3164\u3138\u3153\u314f \ub5a0 ",
-" row a8_c4_: \u3164\u3138\u3154\uca46 \ub5bd \ub5be \ub5bf \ub5c0 \ub5c1 \ub5c2 \ub5c3 \u3164\u3138\u3154\u3138 \ub5c4 \ub5c5 \ub5c6 \ub5c7 \ub5c8 \ub5c9 \ub5ca \ub5cb \ub5cc \ub5cd \u3164\u3138\u3154\u3143 \ub5ce \ub5cf \ub5d0 \ub5d1 \ub5d2 \u3164\u3138\u3154\u3149 \ub5d3 \ub5d4 \ub5d5 \ub5d6 \ub5d7 \u3164\u3138\u3154\u314f \ub5bc ",
-" row a8_c5_: \u3164\u3138\u3155\uca46 \ub5d9 \ub5da \ub5db \ub5dc \ub5dd \ub5de \ub5df \u3164\u3138\u3155\u3138 \ub5e0 \ub5e1 \ub5e2 \ub5e3 \ub5e4 \ub5e5 \ub5e6 \ub5e7 \ub5e8 \ub5e9 \u3164\u3138\u3155\u3143 \ub5ea \ub5eb \ub5ec \ub5ed \ub5ee \u3164\u3138\u3155\u3149 \ub5ef \ub5f0 \ub5f1 \ub5f2 \ub5f3 \u3164\u3138\u3155\u314f \ub5d8 ",
-" row a8_c6_: \u3164\u3138\u3156\uca46 \ub5f5 \ub5f6 \ub5f7 \ub5f8 \ub5f9 \ub5fa \ub5fb \u3164\u3138\u3156\u3138 \ub5fc \ub5fd \ub5fe \ub5ff \ub600 \ub601 \ub602 \ub603 \ub604 \ub605 \u3164\u3138\u3156\u3143 \ub606 \ub607 \ub608 \ub609 \ub60a \u3164\u3138\u3156\u3149 \ub60b \ub60c \ub60d \ub60e \ub60f \u3164\u3138\u3156\u314f \ub5f4 ",
-" row a8_c7_: \u3164\u3138\u3157\uca46 \ub611 \ub612 \ub613 \ub614 \ub615 \ub616 \ub617 \u3164\u3138\u3157\u3138 \ub618 \ub619 \ub61a \ub61b \ub61c \ub61d \ub61e \ub61f \ub620 \ub621 \u3164\u3138\u3157\u3143 \ub622 \ub623 \ub624 \ub625 \ub626 \u3164\u3138\u3157\u3149 \ub627 \ub628 \ub629 \ub62a \ub62b \u3164\u3138\u3157\u314f \ub610 ",
-" row a8_c8_: \u3164\u3138\u3158\uca46 \ub62d \ub62e \ub62f \ub630 \ub631 \ub632 \ub633 \u3164\u3138\u3158\u3138 \ub634 \ub635 \ub636 \ub637 \ub638 \ub639 \ub63a \ub63b \ub63c \ub63d \u3164\u3138\u3158\u3143 \ub63e \ub63f \ub640 \ub641 \ub642 \u3164\u3138\u3158\u3149 \ub643 \ub644 \ub645 \ub646 \ub647 \u3164\u3138\u3158\u314f \ub62c ",
-" row a8_c9_: \u3164\u3138\u3159\uca46 \ub649 \ub64a \ub64b \ub64c \ub64d \ub64e \ub64f \u3164\u3138\u3159\u3138 \ub650 \ub651 \ub652 \ub653 \ub654 \ub655 \ub656 \ub657 \ub658 \ub659 \u3164\u3138\u3159\u3143 \ub65a \ub65b \ub65c \ub65d \ub65e \u3164\u3138\u3159\u3149 \ub65f \ub660 \ub661 \ub662 \ub663 \u3164\u3138\u3159\u314f \ub648 ",
-" row a8_ca_: \u3164\u3138\u315a\uca46 \ub665 \ub666 \ub667 \ub668 \ub669 \ub66a \ub66b \u3164\u3138\u315a\u3138 \ub66c \ub66d \ub66e \ub66f \ub670 \ub671 \ub672 \ub673 \ub674 \ub675 \u3164\u3138\u315a\u3143 \ub676 \ub677 \ub678 \ub679 \ub67a \u3164\u3138\u315a\u3149 \ub67b \ub67c \ub67d \ub67e \ub67f \u3164\u3138\u315a\u314f \ub664 ",
-" row a8_cb_: \u3164\u3138\u315b\uca46 \ub681 \ub682 \ub683 \ub684 \ub685 \ub686 \ub687 \u3164\u3138\u315b\u3138 \ub688 \ub689 \ub68a \ub68b \ub68c \ub68d \ub68e \ub68f \ub690 \ub691 \u3164\u3138\u315b\u3143 \ub692 \ub693 \ub694 \ub695 \ub696 \u3164\u3138\u315b\u3149 \ub697 \ub698 \ub699 \ub69a \ub69b \u3164\u3138\u315b\u314f \ub680 ",
-" row a8_cc_: \u3164\u3138\u315c\uca46 \ub69d \ub69e \ub69f \ub6a0 \ub6a1 \ub6a2 \ub6a3 \u3164\u3138\u315c\u3138 \ub6a4 \ub6a5 \ub6a6 \ub6a7 \ub6a8 \ub6a9 \ub6aa \ub6ab \ub6ac \ub6ad \u3164\u3138\u315c\u3143 \ub6ae \ub6af \ub6b0 \ub6b1 \ub6b2 \u3164\u3138\u315c\u3149 \ub6b3 \ub6b4 \ub6b5 \ub6b6 \ub6b7 \u3164\u3138\u315c\u314f \ub69c ",
-" row a8_cd_: \u3164\u3138\u315d\uca46 \ub6b9 \ub6ba \ub6bb \ub6bc \ub6bd \ub6be \ub6bf \u3164\u3138\u315d\u3138 \ub6c0 \ub6c1 \ub6c2 \ub6c3 \ub6c4 \ub6c5 \ub6c6 \ub6c7 \ub6c8 \ub6c9 \u3164\u3138\u315d\u3143 \ub6ca \ub6cb \ub6cc \ub6cd \ub6ce \u3164\u3138\u315d\u3149 \ub6cf \ub6d0 \ub6d1 \ub6d2 \ub6d3 \u3164\u3138\u315d\u314f \ub6b8 ",
-" row a8_ce_: \u3164\u3138\u315e\uca46 \ub6d5 \ub6d6 \ub6d7 \ub6d8 \ub6d9 \ub6da \ub6db \u3164\u3138\u315e\u3138 \ub6dc \ub6dd \ub6de \ub6df \ub6e0 \ub6e1 \ub6e2 \ub6e3 \ub6e4 \ub6e5 \u3164\u3138\u315e\u3143 \ub6e6 \ub6e7 \ub6e8 \ub6e9 \ub6ea \u3164\u3138\u315e\u3149 \ub6eb \ub6ec \ub6ed \ub6ee \ub6ef \u3164\u3138\u315e\u314f \ub6d4 ",
-" row a8_cf_: \u3164\u3138\u315f\uca46 \ub6f1 \ub6f2 \ub6f3 \ub6f4 \ub6f5 \ub6f6 \ub6f7 \u3164\u3138\u315f\u3138 \ub6f8 \ub6f9 \ub6fa \ub6fb \ub6fc \ub6fd \ub6fe \ub6ff \ub700 \ub701 \u3164\u3138\u315f\u3143 \ub702 \ub703 \ub704 \ub705 \ub706 \u3164\u3138\u315f\u3149 \ub707 \ub708 \ub709 \ub70a \ub70b \u3164\u3138\u315f\u314f \ub6f0 ",
-" row a8_d0_: \u3164\u3138\u3160\uca46 \ub70d \ub70e \ub70f \ub710 \ub711 \ub712 \ub713 \u3164\u3138\u3160\u3138 \ub714 \ub715 \ub716 \ub717 \ub718 \ub719 \ub71a \ub71b \ub71c \ub71d \u3164\u3138\u3160\u3143 \ub71e \ub71f \ub720 \ub721 \ub722 \u3164\u3138\u3160\u3149 \ub723 \ub724 \ub725 \ub726 \ub727 \u3164\u3138\u3160\u314f \ub70c ",
-" row a8_d1_: \u3164\u3138\u3161\uca46 \ub729 \ub72a \ub72b \ub72c \ub72d \ub72e \ub72f \u3164\u3138\u3161\u3138 \ub730 \ub731 \ub732 \ub733 \ub734 \ub735 \ub736 \ub737 \ub738 \ub739 \u3164\u3138\u3161\u3143 \ub73a \ub73b \ub73c \ub73d \ub73e \u3164\u3138\u3161\u3149 \ub73f \ub740 \ub741 \ub742 \ub743 \u3164\u3138\u3161\u314f \ub728 ",
-" row a8_d2_: \u3164\u3138\u3162\uca46 \ub745 \ub746 \ub747 \ub748 \ub749 \ub74a \ub74b \u3164\u3138\u3162\u3138 \ub74c \ub74d \ub74e \ub74f \ub750 \ub751 \ub752 \ub753 \ub754 \ub755 \u3164\u3138\u3162\u3143 \ub756 \ub757 \ub758 \ub759 \ub75a \u3164\u3138\u3162\u3149 \ub75b \ub75c \ub75d \ub75e \ub75f \u3164\u3138\u3162\u314f \ub744 ",
-" row a8_d3_: \u3164\u3138\u3163\uca46 \ub761 \ub762 \ub763 \ub764 \ub765 \ub766 \ub767 \u3164\u3138\u3163\u3138 \ub768 \ub769 \ub76a \ub76b \ub76c \ub76d \ub76e \ub76f \ub770 \ub771 \u3164\u3138\u3163\u3143 \ub772 \ub773 \ub774 \ub775 \ub776 \u3164\u3138\u3163\u3149 \ub777 \ub778 \ub779 \ub77a \ub77b \u3164\u3138\u3163\u314f \ub760 ",
-" row a8_d4_: \u3164\u3138\u3164\uca46 \u3164\u3138\u3164\u3131 \u3164\u3138\u3164\u3132 \u3164\u3138\u3164\u3133 \u3164\u3138\u3164\u3134 \u3164\u3138\u3164\u3135 \u3164\u3138\u3164\u3136 \u3164\u3138\u3164\u3137 \u3164\u3138\u3164\u3138 \u3164\u3138\u3164\u3139 \u3164\u3138\u3164\u313a \u3164\u3138\u3164\u313b \u3164\u3138\u3164\u313c \u3164\u3138\u3164\u313d \u3164\u3138\u3164\u313e \u3164\u3138\u3164\u313f \u3164\u3138\u3164\u3140 \u3164\u3138\u3164\u3141 \u3164\u3138\u3164\u3142 \u3164\u3138\u3164\u3143 \u3164\u3138\u3164\u3144 \u3164\u3138\u3164\u3145 \u3164\u3138\u3164\u3146 \u3164\u3138\u3164\u3147 \u3164\u3138\u3164\u3148 \u3164\u3138\u3164\u3149 \u3164\u3138\u3164\u314a \u3164\u3138\u3164\u314b \u3164\u3138\u3164\u314c \u3164\u3138\u3164\u314d \u3164\u3138\u3164\u314e \u3164\u3138\u3164\u314f \u3164\u3138\u3164\u3164 ",
-" row a9_be_: \u3164\u3139\u314e\uca46 \u3164\u3139\u314e\u3131 \u3164\u3139\u314e\u3132 \u3164\u3139\u314e\u3133 \u3164\u3139\u314e\u3134 \u3164\u3139\u314e\u3135 \u3164\u3139\u314e\u3136 \u3164\u3139\u314e\u3137 \u3164\u3139\u314e\u3138 \u3164\u3139\u314e\u3139 \u3164\u3139\u314e\u313a \u3164\u3139\u314e\u313b \u3164\u3139\u314e\u313c \u3164\u3139\u314e\u313d \u3164\u3139\u314e\u313e \u3164\u3139\u314e\u313f \u3164\u3139\u314e\u3140 \u3164\u3139\u314e\u3141 \u3164\u3139\u314e\u3142 \u3164\u3139\u314e\u3143 \u3164\u3139\u314e\u3144 \u3164\u3139\u314e\u3145 \u3164\u3139\u314e\u3146 \u3164\u3139\u314e\u3147 \u3164\u3139\u314e\u3148 \u3164\u3139\u314e\u3149 \u3164\u3139\u314e\u314a \u3164\u3139\u314e\u314b \u3164\u3139\u314e\u314c \u3164\u3139\u314e\u314d \u3164\u3139\u314e\u314e \u3164\u3139\u314e\u314f \u3164\u3139\u314e\u3164 ",
-" row a9_bf_: \u3164\u3139\u314f\uca46 \ub77d \ub77e \ub77f \ub780 \ub781 \ub782 \ub783 \u3164\u3139\u314f\u3138 \ub784 \ub785 \ub786 \ub787 \ub788 \ub789 \ub78a \ub78b \ub78c \ub78d \u3164\u3139\u314f\u3143 \ub78e \ub78f \ub790 \ub791 \ub792 \u3164\u3139\u314f\u3149 \ub793 \ub794 \ub795 \ub796 \ub797 \u3164\u3139\u314f\u314f \ub77c ",
-" row a9_c0_: \u3164\u3139\u3150\uca46 \ub799 \ub79a \ub79b \ub79c \ub79d \ub79e \ub79f \u3164\u3139\u3150\u3138 \ub7a0 \ub7a1 \ub7a2 \ub7a3 \ub7a4 \ub7a5 \ub7a6 \ub7a7 \ub7a8 \ub7a9 \u3164\u3139\u3150\u3143 \ub7aa \ub7ab \ub7ac \ub7ad \ub7ae \u3164\u3139\u3150\u3149 \ub7af \ub7b0 \ub7b1 \ub7b2 \ub7b3 \u3164\u3139\u3150\u314f \ub798 ",
-" row a9_c1_: \u3164\u3139\u3151\uca46 \ub7b5 \ub7b6 \ub7b7 \ub7b8 \ub7b9 \ub7ba \ub7bb \u3164\u3139\u3151\u3138 \ub7bc \ub7bd \ub7be \ub7bf \ub7c0 \ub7c1 \ub7c2 \ub7c3 \ub7c4 \ub7c5 \u3164\u3139\u3151\u3143 \ub7c6 \ub7c7 \ub7c8 \ub7c9 \ub7ca \u3164\u3139\u3151\u3149 \ub7cb \ub7cc \ub7cd \ub7ce \ub7cf \u3164\u3139\u3151\u314f \ub7b4 ",
-" row a9_c2_: \u3164\u3139\u3152\uca46 \ub7d1 \ub7d2 \ub7d3 \ub7d4 \ub7d5 \ub7d6 \ub7d7 \u3164\u3139\u3152\u3138 \ub7d8 \ub7d9 \ub7da \ub7db \ub7dc \ub7dd \ub7de \ub7df \ub7e0 \ub7e1 \u3164\u3139\u3152\u3143 \ub7e2 \ub7e3 \ub7e4 \ub7e5 \ub7e6 \u3164\u3139\u3152\u3149 \ub7e7 \ub7e8 \ub7e9 \ub7ea \ub7eb \u3164\u3139\u3152\u314f \ub7d0 ",
-" row a9_c3_: \u3164\u3139\u3153\uca46 \ub7ed \ub7ee \ub7ef \ub7f0 \ub7f1 \ub7f2 \ub7f3 \u3164\u3139\u3153\u3138 \ub7f4 \ub7f5 \ub7f6 \ub7f7 \ub7f8 \ub7f9 \ub7fa \ub7fb \ub7fc \ub7fd \u3164\u3139\u3153\u3143 \ub7fe \ub7ff \ub800 \ub801 \ub802 \u3164\u3139\u3153\u3149 \ub803 \ub804 \ub805 \ub806 \ub807 \u3164\u3139\u3153\u314f \ub7ec ",
-" row a9_c4_: \u3164\u3139\u3154\uca46 \ub809 \ub80a \ub80b \ub80c \ub80d \ub80e \ub80f \u3164\u3139\u3154\u3138 \ub810 \ub811 \ub812 \ub813 \ub814 \ub815 \ub816 \ub817 \ub818 \ub819 \u3164\u3139\u3154\u3143 \ub81a \ub81b \ub81c \ub81d \ub81e \u3164\u3139\u3154\u3149 \ub81f \ub820 \ub821 \ub822 \ub823 \u3164\u3139\u3154\u314f \ub808 ",
-" row a9_c5_: \u3164\u3139\u3155\uca46 \ub825 \ub826 \ub827 \ub828 \ub829 \ub82a \ub82b \u3164\u3139\u3155\u3138 \ub82c \ub82d \ub82e \ub82f \ub830 \ub831 \ub832 \ub833 \ub834 \ub835 \u3164\u3139\u3155\u3143 \ub836 \ub837 \ub838 \ub839 \ub83a \u3164\u3139\u3155\u3149 \ub83b \ub83c \ub83d \ub83e \ub83f \u3164\u3139\u3155\u314f \ub824 ",
-" row a9_c6_: \u3164\u3139\u3156\uca46 \ub841 \ub842 \ub843 \ub844 \ub845 \ub846 \ub847 \u3164\u3139\u3156\u3138 \ub848 \ub849 \ub84a \ub84b \ub84c \ub84d \ub84e \ub84f \ub850 \ub851 \u3164\u3139\u3156\u3143 \ub852 \ub853 \ub854 \ub855 \ub856 \u3164\u3139\u3156\u3149 \ub857 \ub858 \ub859 \ub85a \ub85b \u3164\u3139\u3156\u314f \ub840 ",
-" row a9_c7_: \u3164\u3139\u3157\uca46 \ub85d \ub85e \ub85f \ub860 \ub861 \ub862 \ub863 \u3164\u3139\u3157\u3138 \ub864 \ub865 \ub866 \ub867 \ub868 \ub869 \ub86a \ub86b \ub86c \ub86d \u3164\u3139\u3157\u3143 \ub86e \ub86f \ub870 \ub871 \ub872 \u3164\u3139\u3157\u3149 \ub873 \ub874 \ub875 \ub876 \ub877 \u3164\u3139\u3157\u314f \ub85c ",
-" row a9_c8_: \u3164\u3139\u3158\uca46 \ub879 \ub87a \ub87b \ub87c \ub87d \ub87e \ub87f \u3164\u3139\u3158\u3138 \ub880 \ub881 \ub882 \ub883 \ub884 \ub885 \ub886 \ub887 \ub888 \ub889 \u3164\u3139\u3158\u3143 \ub88a \ub88b \ub88c \ub88d \ub88e \u3164\u3139\u3158\u3149 \ub88f \ub890 \ub891 \ub892 \ub893 \u3164\u3139\u3158\u314f \ub878 ",
-" row a9_c9_: \u3164\u3139\u3159\uca46 \ub895 \ub896 \ub897 \ub898 \ub899 \ub89a \ub89b \u3164\u3139\u3159\u3138 \ub89c \ub89d \ub89e \ub89f \ub8a0 \ub8a1 \ub8a2 \ub8a3 \ub8a4 \ub8a5 \u3164\u3139\u3159\u3143 \ub8a6 \ub8a7 \ub8a8 \ub8a9 \ub8aa \u3164\u3139\u3159\u3149 \ub8ab \ub8ac \ub8ad \ub8ae \ub8af \u3164\u3139\u3159\u314f \ub894 ",
-" row a9_ca_: \u3164\u3139\u315a\uca46 \ub8b1 \ub8b2 \ub8b3 \ub8b4 \ub8b5 \ub8b6 \ub8b7 \u3164\u3139\u315a\u3138 \ub8b8 \ub8b9 \ub8ba \ub8bb \ub8bc \ub8bd \ub8be \ub8bf \ub8c0 \ub8c1 \u3164\u3139\u315a\u3143 \ub8c2 \ub8c3 \ub8c4 \ub8c5 \ub8c6 \u3164\u3139\u315a\u3149 \ub8c7 \ub8c8 \ub8c9 \ub8ca \ub8cb \u3164\u3139\u315a\u314f \ub8b0 ",
-" row a9_cb_: \u3164\u3139\u315b\uca46 \ub8cd \ub8ce \ub8cf \ub8d0 \ub8d1 \ub8d2 \ub8d3 \u3164\u3139\u315b\u3138 \ub8d4 \ub8d5 \ub8d6 \ub8d7 \ub8d8 \ub8d9 \ub8da \ub8db \ub8dc \ub8dd \u3164\u3139\u315b\u3143 \ub8de \ub8df \ub8e0 \ub8e1 \ub8e2 \u3164\u3139\u315b\u3149 \ub8e3 \ub8e4 \ub8e5 \ub8e6 \ub8e7 \u3164\u3139\u315b\u314f \ub8cc ",
-" row a9_cc_: \u3164\u3139\u315c\uca46 \ub8e9 \ub8ea \ub8eb \ub8ec \ub8ed \ub8ee \ub8ef \u3164\u3139\u315c\u3138 \ub8f0 \ub8f1 \ub8f2 \ub8f3 \ub8f4 \ub8f5 \ub8f6 \ub8f7 \ub8f8 \ub8f9 \u3164\u3139\u315c\u3143 \ub8fa \ub8fb \ub8fc \ub8fd \ub8fe \u3164\u3139\u315c\u3149 \ub8ff \ub900 \ub901 \ub902 \ub903 \u3164\u3139\u315c\u314f \ub8e8 ",
-" row a9_cd_: \u3164\u3139\u315d\uca46 \ub905 \ub906 \ub907 \ub908 \ub909 \ub90a \ub90b \u3164\u3139\u315d\u3138 \ub90c \ub90d \ub90e \ub90f \ub910 \ub911 \ub912 \ub913 \ub914 \ub915 \u3164\u3139\u315d\u3143 \ub916 \ub917 \ub918 \ub919 \ub91a \u3164\u3139\u315d\u3149 \ub91b \ub91c \ub91d \ub91e \ub91f \u3164\u3139\u315d\u314f \ub904 ",
-" row a9_ce_: \u3164\u3139\u315e\uca46 \ub921 \ub922 \ub923 \ub924 \ub925 \ub926 \ub927 \u3164\u3139\u315e\u3138 \ub928 \ub929 \ub92a \ub92b \ub92c \ub92d \ub92e \ub92f \ub930 \ub931 \u3164\u3139\u315e\u3143 \ub932 \ub933 \ub934 \ub935 \ub936 \u3164\u3139\u315e\u3149 \ub937 \ub938 \ub939 \ub93a \ub93b \u3164\u3139\u315e\u314f \ub920 ",
-" row a9_cf_: \u3164\u3139\u315f\uca46 \ub93d \ub93e \ub93f \ub940 \ub941 \ub942 \ub943 \u3164\u3139\u315f\u3138 \ub944 \ub945 \ub946 \ub947 \ub948 \ub949 \ub94a \ub94b \ub94c \ub94d \u3164\u3139\u315f\u3143 \ub94e \ub94f \ub950 \ub951 \ub952 \u3164\u3139\u315f\u3149 \ub953 \ub954 \ub955 \ub956 \ub957 \u3164\u3139\u315f\u314f \ub93c ",
-" row a9_d0_: \u3164\u3139\u3160\uca46 \ub959 \ub95a \ub95b \ub95c \ub95d \ub95e \ub95f \u3164\u3139\u3160\u3138 \ub960 \ub961 \ub962 \ub963 \ub964 \ub965 \ub966 \ub967 \ub968 \ub969 \u3164\u3139\u3160\u3143 \ub96a \ub96b \ub96c \ub96d \ub96e \u3164\u3139\u3160\u3149 \ub96f \ub970 \ub971 \ub972 \ub973 \u3164\u3139\u3160\u314f \ub958 ",
-" row a9_d1_: \u3164\u3139\u3161\uca46 \ub975 \ub976 \ub977 \ub978 \ub979 \ub97a \ub97b \u3164\u3139\u3161\u3138 \ub97c \ub97d \ub97e \ub97f \ub980 \ub981 \ub982 \ub983 \ub984 \ub985 \u3164\u3139\u3161\u3143 \ub986 \ub987 \ub988 \ub989 \ub98a \u3164\u3139\u3161\u3149 \ub98b \ub98c \ub98d \ub98e \ub98f \u3164\u3139\u3161\u314f \ub974 ",
-" row a9_d2_: \u3164\u3139\u3162\uca46 \ub991 \ub992 \ub993 \ub994 \ub995 \ub996 \ub997 \u3164\u3139\u3162\u3138 \ub998 \ub999 \ub99a \ub99b \ub99c \ub99d \ub99e \ub99f \ub9a0 \ub9a1 \u3164\u3139\u3162\u3143 \ub9a2 \ub9a3 \ub9a4 \ub9a5 \ub9a6 \u3164\u3139\u3162\u3149 \ub9a7 \ub9a8 \ub9a9 \ub9aa \ub9ab \u3164\u3139\u3162\u314f \ub990 ",
-" row a9_d3_: \u3164\u3139\u3163\uca46 \ub9ad \ub9ae \ub9af \ub9b0 \ub9b1 \ub9b2 \ub9b3 \u3164\u3139\u3163\u3138 \ub9b4 \ub9b5 \ub9b6 \ub9b7 \ub9b8 \ub9b9 \ub9ba \ub9bb \ub9bc \ub9bd \u3164\u3139\u3163\u3143 \ub9be \ub9bf \ub9c0 \ub9c1 \ub9c2 \u3164\u3139\u3163\u3149 \ub9c3 \ub9c4 \ub9c5 \ub9c6 \ub9c7 \u3164\u3139\u3163\u314f \ub9ac ",
-" row a9_d4_: \u3164\u3139\u3164\uca46 \u3164\u3139\u3164\u3131 \u3164\u3139\u3164\u3132 \u3164\u3139\u3164\u3133 \u3164\u3139\u3164\u3134 \u3164\u3139\u3164\u3135 \u3164\u3139\u3164\u3136 \u3164\u3139\u3164\u3137 \u3164\u3139\u3164\u3138 \u3164\u3139\u3164\u3139 \u3164\u3139\u3164\u313a \u3164\u3139\u3164\u313b \u3164\u3139\u3164\u313c \u3164\u3139\u3164\u313d \u3164\u3139\u3164\u313e \u3164\u3139\u3164\u313f \u3164\u3139\u3164\u3140 \u3164\u3139\u3164\u3141 \u3164\u3139\u3164\u3142 \u3164\u3139\u3164\u3143 \u3164\u3139\u3164\u3144 \u3164\u3139\u3164\u3145 \u3164\u3139\u3164\u3146 \u3164\u3139\u3164\u3147 \u3164\u3139\u3164\u3148 \u3164\u3139\u3164\u3149 \u3164\u3139\u3164\u314a \u3164\u3139\u3164\u314b \u3164\u3139\u3164\u314c \u3164\u3139\u3164\u314d \u3164\u3139\u3164\u314e \u3164\u3139\u3164\u314f \u3164\u3139\u3164\u3164 ",
-" row aa_be_: \u3164\u313a\u314e\uca46 \u3164\u313a\u314e\u3131 \u3164\u313a\u314e\u3132 \u3164\u313a\u314e\u3133 \u3164\u313a\u314e\u3134 \u3164\u313a\u314e\u3135 \u3164\u313a\u314e\u3136 \u3164\u313a\u314e\u3137 \u3164\u313a\u314e\u3138 \u3164\u313a\u314e\u3139 \u3164\u313a\u314e\u313a \u3164\u313a\u314e\u313b \u3164\u313a\u314e\u313c \u3164\u313a\u314e\u313d \u3164\u313a\u314e\u313e \u3164\u313a\u314e\u313f \u3164\u313a\u314e\u3140 \u3164\u313a\u314e\u3141 \u3164\u313a\u314e\u3142 \u3164\u313a\u314e\u3143 \u3164\u313a\u314e\u3144 \u3164\u313a\u314e\u3145 \u3164\u313a\u314e\u3146 \u3164\u313a\u314e\u3147 \u3164\u313a\u314e\u3148 \u3164\u313a\u314e\u3149 \u3164\u313a\u314e\u314a \u3164\u313a\u314e\u314b \u3164\u313a\u314e\u314c \u3164\u313a\u314e\u314d \u3164\u313a\u314e\u314e \u3164\u313a\u314e\u314f \u3164\u313a\u314e\u3164 ",
-" row aa_bf_: \u3164\u313a\u314f\uca46 \u3164\u313a\u314f\u3131 \u3164\u313a\u314f\u3132 \u3164\u313a\u314f\u3133 \u3164\u313a\u314f\u3134 \u3164\u313a\u314f\u3135 \u3164\u313a\u314f\u3136 \u3164\u313a\u314f\u3137 \u3164\u313a\u314f\u3138 \u3164\u313a\u314f\u3139 \u3164\u313a\u314f\u313a \u3164\u313a\u314f\u313b \u3164\u313a\u314f\u313c \u3164\u313a\u314f\u313d \u3164\u313a\u314f\u313e \u3164\u313a\u314f\u313f \u3164\u313a\u314f\u3140 \u3164\u313a\u314f\u3141 \u3164\u313a\u314f\u3142 \u3164\u313a\u314f\u3143 \u3164\u313a\u314f\u3144 \u3164\u313a\u314f\u3145 \u3164\u313a\u314f\u3146 \u3164\u313a\u314f\u3147 \u3164\u313a\u314f\u3148 \u3164\u313a\u314f\u3149 \u3164\u313a\u314f\u314a \u3164\u313a\u314f\u314b \u3164\u313a\u314f\u314c \u3164\u313a\u314f\u314d \u3164\u313a\u314f\u314e \u3164\u313a\u314f\u314f \u3164\u313a\u314f\u3164 ",
-" row aa_c0_: \u3164\u313a\u3150\uca46 \u3164\u313a\u3150\u3131 \u3164\u313a\u3150\u3132 \u3164\u313a\u3150\u3133 \u3164\u313a\u3150\u3134 \u3164\u313a\u3150\u3135 \u3164\u313a\u3150\u3136 \u3164\u313a\u3150\u3137 \u3164\u313a\u3150\u3138 \u3164\u313a\u3150\u3139 \u3164\u313a\u3150\u313a \u3164\u313a\u3150\u313b \u3164\u313a\u3150\u313c \u3164\u313a\u3150\u313d \u3164\u313a\u3150\u313e \u3164\u313a\u3150\u313f \u3164\u313a\u3150\u3140 \u3164\u313a\u3150\u3141 \u3164\u313a\u3150\u3142 \u3164\u313a\u3150\u3143 \u3164\u313a\u3150\u3144 \u3164\u313a\u3150\u3145 \u3164\u313a\u3150\u3146 \u3164\u313a\u3150\u3147 \u3164\u313a\u3150\u3148 \u3164\u313a\u3150\u3149 \u3164\u313a\u3150\u314a \u3164\u313a\u3150\u314b \u3164\u313a\u3150\u314c \u3164\u313a\u3150\u314d \u3164\u313a\u3150\u314e \u3164\u313a\u3150\u314f \u3164\u313a\u3150\u3164 ",
-" row aa_c1_: \u3164\u313a\u3151\uca46 \u3164\u313a\u3151\u3131 \u3164\u313a\u3151\u3132 \u3164\u313a\u3151\u3133 \u3164\u313a\u3151\u3134 \u3164\u313a\u3151\u3135 \u3164\u313a\u3151\u3136 \u3164\u313a\u3151\u3137 \u3164\u313a\u3151\u3138 \u3164\u313a\u3151\u3139 \u3164\u313a\u3151\u313a \u3164\u313a\u3151\u313b \u3164\u313a\u3151\u313c \u3164\u313a\u3151\u313d \u3164\u313a\u3151\u313e \u3164\u313a\u3151\u313f \u3164\u313a\u3151\u3140 \u3164\u313a\u3151\u3141 \u3164\u313a\u3151\u3142 \u3164\u313a\u3151\u3143 \u3164\u313a\u3151\u3144 \u3164\u313a\u3151\u3145 \u3164\u313a\u3151\u3146 \u3164\u313a\u3151\u3147 \u3164\u313a\u3151\u3148 \u3164\u313a\u3151\u3149 \u3164\u313a\u3151\u314a \u3164\u313a\u3151\u314b \u3164\u313a\u3151\u314c \u3164\u313a\u3151\u314d \u3164\u313a\u3151\u314e \u3164\u313a\u3151\u314f \u3164\u313a\u3151\u3164 ",
-" row aa_c2_: \u3164\u313a\u3152\uca46 \u3164\u313a\u3152\u3131 \u3164\u313a\u3152\u3132 \u3164\u313a\u3152\u3133 \u3164\u313a\u3152\u3134 \u3164\u313a\u3152\u3135 \u3164\u313a\u3152\u3136 \u3164\u313a\u3152\u3137 \u3164\u313a\u3152\u3138 \u3164\u313a\u3152\u3139 \u3164\u313a\u3152\u313a \u3164\u313a\u3152\u313b \u3164\u313a\u3152\u313c \u3164\u313a\u3152\u313d \u3164\u313a\u3152\u313e \u3164\u313a\u3152\u313f \u3164\u313a\u3152\u3140 \u3164\u313a\u3152\u3141 \u3164\u313a\u3152\u3142 \u3164\u313a\u3152\u3143 \u3164\u313a\u3152\u3144 \u3164\u313a\u3152\u3145 \u3164\u313a\u3152\u3146 \u3164\u313a\u3152\u3147 \u3164\u313a\u3152\u3148 \u3164\u313a\u3152\u3149 \u3164\u313a\u3152\u314a \u3164\u313a\u3152\u314b \u3164\u313a\u3152\u314c \u3164\u313a\u3152\u314d \u3164\u313a\u3152\u314e \u3164\u313a\u3152\u314f \u3164\u313a\u3152\u3164 ",
-" row aa_c3_: \u3164\u313a\u3153\uca46 \u3164\u313a\u3153\u3131 \u3164\u313a\u3153\u3132 \u3164\u313a\u3153\u3133 \u3164\u313a\u3153\u3134 \u3164\u313a\u3153\u3135 \u3164\u313a\u3153\u3136 \u3164\u313a\u3153\u3137 \u3164\u313a\u3153\u3138 \u3164\u313a\u3153\u3139 \u3164\u313a\u3153\u313a \u3164\u313a\u3153\u313b \u3164\u313a\u3153\u313c \u3164\u313a\u3153\u313d \u3164\u313a\u3153\u313e \u3164\u313a\u3153\u313f \u3164\u313a\u3153\u3140 \u3164\u313a\u3153\u3141 \u3164\u313a\u3153\u3142 \u3164\u313a\u3153\u3143 \u3164\u313a\u3153\u3144 \u3164\u313a\u3153\u3145 \u3164\u313a\u3153\u3146 \u3164\u313a\u3153\u3147 \u3164\u313a\u3153\u3148 \u3164\u313a\u3153\u3149 \u3164\u313a\u3153\u314a \u3164\u313a\u3153\u314b \u3164\u313a\u3153\u314c \u3164\u313a\u3153\u314d \u3164\u313a\u3153\u314e \u3164\u313a\u3153\u314f \u3164\u313a\u3153\u3164 ",
-" row aa_c4_: \u3164\u313a\u3154\uca46 \u3164\u313a\u3154\u3131 \u3164\u313a\u3154\u3132 \u3164\u313a\u3154\u3133 \u3164\u313a\u3154\u3134 \u3164\u313a\u3154\u3135 \u3164\u313a\u3154\u3136 \u3164\u313a\u3154\u3137 \u3164\u313a\u3154\u3138 \u3164\u313a\u3154\u3139 \u3164\u313a\u3154\u313a \u3164\u313a\u3154\u313b \u3164\u313a\u3154\u313c \u3164\u313a\u3154\u313d \u3164\u313a\u3154\u313e \u3164\u313a\u3154\u313f \u3164\u313a\u3154\u3140 \u3164\u313a\u3154\u3141 \u3164\u313a\u3154\u3142 \u3164\u313a\u3154\u3143 \u3164\u313a\u3154\u3144 \u3164\u313a\u3154\u3145 \u3164\u313a\u3154\u3146 \u3164\u313a\u3154\u3147 \u3164\u313a\u3154\u3148 \u3164\u313a\u3154\u3149 \u3164\u313a\u3154\u314a \u3164\u313a\u3154\u314b \u3164\u313a\u3154\u314c \u3164\u313a\u3154\u314d \u3164\u313a\u3154\u314e \u3164\u313a\u3154\u314f \u3164\u313a\u3154\u3164 ",
-" row aa_c5_: \u3164\u313a\u3155\uca46 \u3164\u313a\u3155\u3131 \u3164\u313a\u3155\u3132 \u3164\u313a\u3155\u3133 \u3164\u313a\u3155\u3134 \u3164\u313a\u3155\u3135 \u3164\u313a\u3155\u3136 \u3164\u313a\u3155\u3137 \u3164\u313a\u3155\u3138 \u3164\u313a\u3155\u3139 \u3164\u313a\u3155\u313a \u3164\u313a\u3155\u313b \u3164\u313a\u3155\u313c \u3164\u313a\u3155\u313d \u3164\u313a\u3155\u313e \u3164\u313a\u3155\u313f \u3164\u313a\u3155\u3140 \u3164\u313a\u3155\u3141 \u3164\u313a\u3155\u3142 \u3164\u313a\u3155\u3143 \u3164\u313a\u3155\u3144 \u3164\u313a\u3155\u3145 \u3164\u313a\u3155\u3146 \u3164\u313a\u3155\u3147 \u3164\u313a\u3155\u3148 \u3164\u313a\u3155\u3149 \u3164\u313a\u3155\u314a \u3164\u313a\u3155\u314b \u3164\u313a\u3155\u314c \u3164\u313a\u3155\u314d \u3164\u313a\u3155\u314e \u3164\u313a\u3155\u314f \u3164\u313a\u3155\u3164 ",
-" row aa_c6_: \u3164\u313a\u3156\uca46 \u3164\u313a\u3156\u3131 \u3164\u313a\u3156\u3132 \u3164\u313a\u3156\u3133 \u3164\u313a\u3156\u3134 \u3164\u313a\u3156\u3135 \u3164\u313a\u3156\u3136 \u3164\u313a\u3156\u3137 \u3164\u313a\u3156\u3138 \u3164\u313a\u3156\u3139 \u3164\u313a\u3156\u313a \u3164\u313a\u3156\u313b \u3164\u313a\u3156\u313c \u3164\u313a\u3156\u313d \u3164\u313a\u3156\u313e \u3164\u313a\u3156\u313f \u3164\u313a\u3156\u3140 \u3164\u313a\u3156\u3141 \u3164\u313a\u3156\u3142 \u3164\u313a\u3156\u3143 \u3164\u313a\u3156\u3144 \u3164\u313a\u3156\u3145 \u3164\u313a\u3156\u3146 \u3164\u313a\u3156\u3147 \u3164\u313a\u3156\u3148 \u3164\u313a\u3156\u3149 \u3164\u313a\u3156\u314a \u3164\u313a\u3156\u314b \u3164\u313a\u3156\u314c \u3164\u313a\u3156\u314d \u3164\u313a\u3156\u314e \u3164\u313a\u3156\u314f \u3164\u313a\u3156\u3164 ",
-" row aa_c7_: \u3164\u313a\u3157\uca46 \u3164\u313a\u3157\u3131 \u3164\u313a\u3157\u3132 \u3164\u313a\u3157\u3133 \u3164\u313a\u3157\u3134 \u3164\u313a\u3157\u3135 \u3164\u313a\u3157\u3136 \u3164\u313a\u3157\u3137 \u3164\u313a\u3157\u3138 \u3164\u313a\u3157\u3139 \u3164\u313a\u3157\u313a \u3164\u313a\u3157\u313b \u3164\u313a\u3157\u313c \u3164\u313a\u3157\u313d \u3164\u313a\u3157\u313e \u3164\u313a\u3157\u313f \u3164\u313a\u3157\u3140 \u3164\u313a\u3157\u3141 \u3164\u313a\u3157\u3142 \u3164\u313a\u3157\u3143 \u3164\u313a\u3157\u3144 \u3164\u313a\u3157\u3145 \u3164\u313a\u3157\u3146 \u3164\u313a\u3157\u3147 \u3164\u313a\u3157\u3148 \u3164\u313a\u3157\u3149 \u3164\u313a\u3157\u314a \u3164\u313a\u3157\u314b \u3164\u313a\u3157\u314c \u3164\u313a\u3157\u314d \u3164\u313a\u3157\u314e \u3164\u313a\u3157\u314f \u3164\u313a\u3157\u3164 ",
-" row aa_c8_: \u3164\u313a\u3158\uca46 \u3164\u313a\u3158\u3131 \u3164\u313a\u3158\u3132 \u3164\u313a\u3158\u3133 \u3164\u313a\u3158\u3134 \u3164\u313a\u3158\u3135 \u3164\u313a\u3158\u3136 \u3164\u313a\u3158\u3137 \u3164\u313a\u3158\u3138 \u3164\u313a\u3158\u3139 \u3164\u313a\u3158\u313a \u3164\u313a\u3158\u313b \u3164\u313a\u3158\u313c \u3164\u313a\u3158\u313d \u3164\u313a\u3158\u313e \u3164\u313a\u3158\u313f \u3164\u313a\u3158\u3140 \u3164\u313a\u3158\u3141 \u3164\u313a\u3158\u3142 \u3164\u313a\u3158\u3143 \u3164\u313a\u3158\u3144 \u3164\u313a\u3158\u3145 \u3164\u313a\u3158\u3146 \u3164\u313a\u3158\u3147 \u3164\u313a\u3158\u3148 \u3164\u313a\u3158\u3149 \u3164\u313a\u3158\u314a \u3164\u313a\u3158\u314b \u3164\u313a\u3158\u314c \u3164\u313a\u3158\u314d \u3164\u313a\u3158\u314e \u3164\u313a\u3158\u314f \u3164\u313a\u3158\u3164 ",
-" row aa_c9_: \u3164\u313a\u3159\uca46 \u3164\u313a\u3159\u3131 \u3164\u313a\u3159\u3132 \u3164\u313a\u3159\u3133 \u3164\u313a\u3159\u3134 \u3164\u313a\u3159\u3135 \u3164\u313a\u3159\u3136 \u3164\u313a\u3159\u3137 \u3164\u313a\u3159\u3138 \u3164\u313a\u3159\u3139 \u3164\u313a\u3159\u313a \u3164\u313a\u3159\u313b \u3164\u313a\u3159\u313c \u3164\u313a\u3159\u313d \u3164\u313a\u3159\u313e \u3164\u313a\u3159\u313f \u3164\u313a\u3159\u3140 \u3164\u313a\u3159\u3141 \u3164\u313a\u3159\u3142 \u3164\u313a\u3159\u3143 \u3164\u313a\u3159\u3144 \u3164\u313a\u3159\u3145 \u3164\u313a\u3159\u3146 \u3164\u313a\u3159\u3147 \u3164\u313a\u3159\u3148 \u3164\u313a\u3159\u3149 \u3164\u313a\u3159\u314a \u3164\u313a\u3159\u314b \u3164\u313a\u3159\u314c \u3164\u313a\u3159\u314d \u3164\u313a\u3159\u314e \u3164\u313a\u3159\u314f \u3164\u313a\u3159\u3164 ",
-" row aa_ca_: \u3164\u313a\u315a\uca46 \u3164\u313a\u315a\u3131 \u3164\u313a\u315a\u3132 \u3164\u313a\u315a\u3133 \u3164\u313a\u315a\u3134 \u3164\u313a\u315a\u3135 \u3164\u313a\u315a\u3136 \u3164\u313a\u315a\u3137 \u3164\u313a\u315a\u3138 \u3164\u313a\u315a\u3139 \u3164\u313a\u315a\u313a \u3164\u313a\u315a\u313b \u3164\u313a\u315a\u313c \u3164\u313a\u315a\u313d \u3164\u313a\u315a\u313e \u3164\u313a\u315a\u313f \u3164\u313a\u315a\u3140 \u3164\u313a\u315a\u3141 \u3164\u313a\u315a\u3142 \u3164\u313a\u315a\u3143 \u3164\u313a\u315a\u3144 \u3164\u313a\u315a\u3145 \u3164\u313a\u315a\u3146 \u3164\u313a\u315a\u3147 \u3164\u313a\u315a\u3148 \u3164\u313a\u315a\u3149 \u3164\u313a\u315a\u314a \u3164\u313a\u315a\u314b \u3164\u313a\u315a\u314c \u3164\u313a\u315a\u314d \u3164\u313a\u315a\u314e \u3164\u313a\u315a\u314f \u3164\u313a\u315a\u3164 ",
-" row aa_cb_: \u3164\u313a\u315b\uca46 \u3164\u313a\u315b\u3131 \u3164\u313a\u315b\u3132 \u3164\u313a\u315b\u3133 \u3164\u313a\u315b\u3134 \u3164\u313a\u315b\u3135 \u3164\u313a\u315b\u3136 \u3164\u313a\u315b\u3137 \u3164\u313a\u315b\u3138 \u3164\u313a\u315b\u3139 \u3164\u313a\u315b\u313a \u3164\u313a\u315b\u313b \u3164\u313a\u315b\u313c \u3164\u313a\u315b\u313d \u3164\u313a\u315b\u313e \u3164\u313a\u315b\u313f \u3164\u313a\u315b\u3140 \u3164\u313a\u315b\u3141 \u3164\u313a\u315b\u3142 \u3164\u313a\u315b\u3143 \u3164\u313a\u315b\u3144 \u3164\u313a\u315b\u3145 \u3164\u313a\u315b\u3146 \u3164\u313a\u315b\u3147 \u3164\u313a\u315b\u3148 \u3164\u313a\u315b\u3149 \u3164\u313a\u315b\u314a \u3164\u313a\u315b\u314b \u3164\u313a\u315b\u314c \u3164\u313a\u315b\u314d \u3164\u313a\u315b\u314e \u3164\u313a\u315b\u314f \u3164\u313a\u315b\u3164 ",
-" row aa_cc_: \u3164\u313a\u315c\uca46 \u3164\u313a\u315c\u3131 \u3164\u313a\u315c\u3132 \u3164\u313a\u315c\u3133 \u3164\u313a\u315c\u3134 \u3164\u313a\u315c\u3135 \u3164\u313a\u315c\u3136 \u3164\u313a\u315c\u3137 \u3164\u313a\u315c\u3138 \u3164\u313a\u315c\u3139 \u3164\u313a\u315c\u313a \u3164\u313a\u315c\u313b \u3164\u313a\u315c\u313c \u3164\u313a\u315c\u313d \u3164\u313a\u315c\u313e \u3164\u313a\u315c\u313f \u3164\u313a\u315c\u3140 \u3164\u313a\u315c\u3141 \u3164\u313a\u315c\u3142 \u3164\u313a\u315c\u3143 \u3164\u313a\u315c\u3144 \u3164\u313a\u315c\u3145 \u3164\u313a\u315c\u3146 \u3164\u313a\u315c\u3147 \u3164\u313a\u315c\u3148 \u3164\u313a\u315c\u3149 \u3164\u313a\u315c\u314a \u3164\u313a\u315c\u314b \u3164\u313a\u315c\u314c \u3164\u313a\u315c\u314d \u3164\u313a\u315c\u314e \u3164\u313a\u315c\u314f \u3164\u313a\u315c\u3164 ",
-" row aa_cd_: \u3164\u313a\u315d\uca46 \u3164\u313a\u315d\u3131 \u3164\u313a\u315d\u3132 \u3164\u313a\u315d\u3133 \u3164\u313a\u315d\u3134 \u3164\u313a\u315d\u3135 \u3164\u313a\u315d\u3136 \u3164\u313a\u315d\u3137 \u3164\u313a\u315d\u3138 \u3164\u313a\u315d\u3139 \u3164\u313a\u315d\u313a \u3164\u313a\u315d\u313b \u3164\u313a\u315d\u313c \u3164\u313a\u315d\u313d \u3164\u313a\u315d\u313e \u3164\u313a\u315d\u313f \u3164\u313a\u315d\u3140 \u3164\u313a\u315d\u3141 \u3164\u313a\u315d\u3142 \u3164\u313a\u315d\u3143 \u3164\u313a\u315d\u3144 \u3164\u313a\u315d\u3145 \u3164\u313a\u315d\u3146 \u3164\u313a\u315d\u3147 \u3164\u313a\u315d\u3148 \u3164\u313a\u315d\u3149 \u3164\u313a\u315d\u314a \u3164\u313a\u315d\u314b \u3164\u313a\u315d\u314c \u3164\u313a\u315d\u314d \u3164\u313a\u315d\u314e \u3164\u313a\u315d\u314f \u3164\u313a\u315d\u3164 ",
-" row aa_ce_: \u3164\u313a\u315e\uca46 \u3164\u313a\u315e\u3131 \u3164\u313a\u315e\u3132 \u3164\u313a\u315e\u3133 \u3164\u313a\u315e\u3134 \u3164\u313a\u315e\u3135 \u3164\u313a\u315e\u3136 \u3164\u313a\u315e\u3137 \u3164\u313a\u315e\u3138 \u3164\u313a\u315e\u3139 \u3164\u313a\u315e\u313a \u3164\u313a\u315e\u313b \u3164\u313a\u315e\u313c \u3164\u313a\u315e\u313d \u3164\u313a\u315e\u313e \u3164\u313a\u315e\u313f \u3164\u313a\u315e\u3140 \u3164\u313a\u315e\u3141 \u3164\u313a\u315e\u3142 \u3164\u313a\u315e\u3143 \u3164\u313a\u315e\u3144 \u3164\u313a\u315e\u3145 \u3164\u313a\u315e\u3146 \u3164\u313a\u315e\u3147 \u3164\u313a\u315e\u3148 \u3164\u313a\u315e\u3149 \u3164\u313a\u315e\u314a \u3164\u313a\u315e\u314b \u3164\u313a\u315e\u314c \u3164\u313a\u315e\u314d \u3164\u313a\u315e\u314e \u3164\u313a\u315e\u314f \u3164\u313a\u315e\u3164 ",
-" row aa_cf_: \u3164\u313a\u315f\uca46 \u3164\u313a\u315f\u3131 \u3164\u313a\u315f\u3132 \u3164\u313a\u315f\u3133 \u3164\u313a\u315f\u3134 \u3164\u313a\u315f\u3135 \u3164\u313a\u315f\u3136 \u3164\u313a\u315f\u3137 \u3164\u313a\u315f\u3138 \u3164\u313a\u315f\u3139 \u3164\u313a\u315f\u313a \u3164\u313a\u315f\u313b \u3164\u313a\u315f\u313c \u3164\u313a\u315f\u313d \u3164\u313a\u315f\u313e \u3164\u313a\u315f\u313f \u3164\u313a\u315f\u3140 \u3164\u313a\u315f\u3141 \u3164\u313a\u315f\u3142 \u3164\u313a\u315f\u3143 \u3164\u313a\u315f\u3144 \u3164\u313a\u315f\u3145 \u3164\u313a\u315f\u3146 \u3164\u313a\u315f\u3147 \u3164\u313a\u315f\u3148 \u3164\u313a\u315f\u3149 \u3164\u313a\u315f\u314a \u3164\u313a\u315f\u314b \u3164\u313a\u315f\u314c \u3164\u313a\u315f\u314d \u3164\u313a\u315f\u314e \u3164\u313a\u315f\u314f \u3164\u313a\u315f\u3164 ",
-" row aa_d0_: \u3164\u313a\u3160\uca46 \u3164\u313a\u3160\u3131 \u3164\u313a\u3160\u3132 \u3164\u313a\u3160\u3133 \u3164\u313a\u3160\u3134 \u3164\u313a\u3160\u3135 \u3164\u313a\u3160\u3136 \u3164\u313a\u3160\u3137 \u3164\u313a\u3160\u3138 \u3164\u313a\u3160\u3139 \u3164\u313a\u3160\u313a \u3164\u313a\u3160\u313b \u3164\u313a\u3160\u313c \u3164\u313a\u3160\u313d \u3164\u313a\u3160\u313e \u3164\u313a\u3160\u313f \u3164\u313a\u3160\u3140 \u3164\u313a\u3160\u3141 \u3164\u313a\u3160\u3142 \u3164\u313a\u3160\u3143 \u3164\u313a\u3160\u3144 \u3164\u313a\u3160\u3145 \u3164\u313a\u3160\u3146 \u3164\u313a\u3160\u3147 \u3164\u313a\u3160\u3148 \u3164\u313a\u3160\u3149 \u3164\u313a\u3160\u314a \u3164\u313a\u3160\u314b \u3164\u313a\u3160\u314c \u3164\u313a\u3160\u314d \u3164\u313a\u3160\u314e \u3164\u313a\u3160\u314f \u3164\u313a\u3160\u3164 ",
-" row aa_d1_: \u3164\u313a\u3161\uca46 \u3164\u313a\u3161\u3131 \u3164\u313a\u3161\u3132 \u3164\u313a\u3161\u3133 \u3164\u313a\u3161\u3134 \u3164\u313a\u3161\u3135 \u3164\u313a\u3161\u3136 \u3164\u313a\u3161\u3137 \u3164\u313a\u3161\u3138 \u3164\u313a\u3161\u3139 \u3164\u313a\u3161\u313a \u3164\u313a\u3161\u313b \u3164\u313a\u3161\u313c \u3164\u313a\u3161\u313d \u3164\u313a\u3161\u313e \u3164\u313a\u3161\u313f \u3164\u313a\u3161\u3140 \u3164\u313a\u3161\u3141 \u3164\u313a\u3161\u3142 \u3164\u313a\u3161\u3143 \u3164\u313a\u3161\u3144 \u3164\u313a\u3161\u3145 \u3164\u313a\u3161\u3146 \u3164\u313a\u3161\u3147 \u3164\u313a\u3161\u3148 \u3164\u313a\u3161\u3149 \u3164\u313a\u3161\u314a \u3164\u313a\u3161\u314b \u3164\u313a\u3161\u314c \u3164\u313a\u3161\u314d \u3164\u313a\u3161\u314e \u3164\u313a\u3161\u314f \u3164\u313a\u3161\u3164 ",
-" row aa_d2_: \u3164\u313a\u3162\uca46 \u3164\u313a\u3162\u3131 \u3164\u313a\u3162\u3132 \u3164\u313a\u3162\u3133 \u3164\u313a\u3162\u3134 \u3164\u313a\u3162\u3135 \u3164\u313a\u3162\u3136 \u3164\u313a\u3162\u3137 \u3164\u313a\u3162\u3138 \u3164\u313a\u3162\u3139 \u3164\u313a\u3162\u313a \u3164\u313a\u3162\u313b \u3164\u313a\u3162\u313c \u3164\u313a\u3162\u313d \u3164\u313a\u3162\u313e \u3164\u313a\u3162\u313f \u3164\u313a\u3162\u3140 \u3164\u313a\u3162\u3141 \u3164\u313a\u3162\u3142 \u3164\u313a\u3162\u3143 \u3164\u313a\u3162\u3144 \u3164\u313a\u3162\u3145 \u3164\u313a\u3162\u3146 \u3164\u313a\u3162\u3147 \u3164\u313a\u3162\u3148 \u3164\u313a\u3162\u3149 \u3164\u313a\u3162\u314a \u3164\u313a\u3162\u314b \u3164\u313a\u3162\u314c \u3164\u313a\u3162\u314d \u3164\u313a\u3162\u314e \u3164\u313a\u3162\u314f \u3164\u313a\u3162\u3164 ",
-" row aa_d3_: \u3164\u313a\u3163\uca46 \u3164\u313a\u3163\u3131 \u3164\u313a\u3163\u3132 \u3164\u313a\u3163\u3133 \u3164\u313a\u3163\u3134 \u3164\u313a\u3163\u3135 \u3164\u313a\u3163\u3136 \u3164\u313a\u3163\u3137 \u3164\u313a\u3163\u3138 \u3164\u313a\u3163\u3139 \u3164\u313a\u3163\u313a \u3164\u313a\u3163\u313b \u3164\u313a\u3163\u313c \u3164\u313a\u3163\u313d \u3164\u313a\u3163\u313e \u3164\u313a\u3163\u313f \u3164\u313a\u3163\u3140 \u3164\u313a\u3163\u3141 \u3164\u313a\u3163\u3142 \u3164\u313a\u3163\u3143 \u3164\u313a\u3163\u3144 \u3164\u313a\u3163\u3145 \u3164\u313a\u3163\u3146 \u3164\u313a\u3163\u3147 \u3164\u313a\u3163\u3148 \u3164\u313a\u3163\u3149 \u3164\u313a\u3163\u314a \u3164\u313a\u3163\u314b \u3164\u313a\u3163\u314c \u3164\u313a\u3163\u314d \u3164\u313a\u3163\u314e \u3164\u313a\u3163\u314f \u3164\u313a\u3163\u3164 ",
-" row aa_d4_: \u3164\u313a\u3164\uca46 \u3164\u313a\u3164\u3131 \u3164\u313a\u3164\u3132 \u3164\u313a\u3164\u3133 \u3164\u313a\u3164\u3134 \u3164\u313a\u3164\u3135 \u3164\u313a\u3164\u3136 \u3164\u313a\u3164\u3137 \u3164\u313a\u3164\u3138 \u3164\u313a\u3164\u3139 \u3164\u313a\u3164\u313a \u3164\u313a\u3164\u313b \u3164\u313a\u3164\u313c \u3164\u313a\u3164\u313d \u3164\u313a\u3164\u313e \u3164\u313a\u3164\u313f \u3164\u313a\u3164\u3140 \u3164\u313a\u3164\u3141 \u3164\u313a\u3164\u3142 \u3164\u313a\u3164\u3143 \u3164\u313a\u3164\u3144 \u3164\u313a\u3164\u3145 \u3164\u313a\u3164\u3146 \u3164\u313a\u3164\u3147 \u3164\u313a\u3164\u3148 \u3164\u313a\u3164\u3149 \u3164\u313a\u3164\u314a \u3164\u313a\u3164\u314b \u3164\u313a\u3164\u314c \u3164\u313a\u3164\u314d \u3164\u313a\u3164\u314e \u3164\u313a\u3164\u314f \u3164\u313a\u3164\u3164 ",
-" row ab_be_: \u3164\u313b\u314e\uca46 \u3164\u313b\u314e\u3131 \u3164\u313b\u314e\u3132 \u3164\u313b\u314e\u3133 \u3164\u313b\u314e\u3134 \u3164\u313b\u314e\u3135 \u3164\u313b\u314e\u3136 \u3164\u313b\u314e\u3137 \u3164\u313b\u314e\u3138 \u3164\u313b\u314e\u3139 \u3164\u313b\u314e\u313a \u3164\u313b\u314e\u313b \u3164\u313b\u314e\u313c \u3164\u313b\u314e\u313d \u3164\u313b\u314e\u313e \u3164\u313b\u314e\u313f \u3164\u313b\u314e\u3140 \u3164\u313b\u314e\u3141 \u3164\u313b\u314e\u3142 \u3164\u313b\u314e\u3143 \u3164\u313b\u314e\u3144 \u3164\u313b\u314e\u3145 \u3164\u313b\u314e\u3146 \u3164\u313b\u314e\u3147 \u3164\u313b\u314e\u3148 \u3164\u313b\u314e\u3149 \u3164\u313b\u314e\u314a \u3164\u313b\u314e\u314b \u3164\u313b\u314e\u314c \u3164\u313b\u314e\u314d \u3164\u313b\u314e\u314e \u3164\u313b\u314e\u314f \u3164\u313b\u314e\u3164 ",
-" row ab_bf_: \u3164\u313b\u314f\uca46 \u3164\u313b\u314f\u3131 \u3164\u313b\u314f\u3132 \u3164\u313b\u314f\u3133 \u3164\u313b\u314f\u3134 \u3164\u313b\u314f\u3135 \u3164\u313b\u314f\u3136 \u3164\u313b\u314f\u3137 \u3164\u313b\u314f\u3138 \u3164\u313b\u314f\u3139 \u3164\u313b\u314f\u313a \u3164\u313b\u314f\u313b \u3164\u313b\u314f\u313c \u3164\u313b\u314f\u313d \u3164\u313b\u314f\u313e \u3164\u313b\u314f\u313f \u3164\u313b\u314f\u3140 \u3164\u313b\u314f\u3141 \u3164\u313b\u314f\u3142 \u3164\u313b\u314f\u3143 \u3164\u313b\u314f\u3144 \u3164\u313b\u314f\u3145 \u3164\u313b\u314f\u3146 \u3164\u313b\u314f\u3147 \u3164\u313b\u314f\u3148 \u3164\u313b\u314f\u3149 \u3164\u313b\u314f\u314a \u3164\u313b\u314f\u314b \u3164\u313b\u314f\u314c \u3164\u313b\u314f\u314d \u3164\u313b\u314f\u314e \u3164\u313b\u314f\u314f \u3164\u313b\u314f\u3164 ",
-" row ab_c0_: \u3164\u313b\u3150\uca46 \u3164\u313b\u3150\u3131 \u3164\u313b\u3150\u3132 \u3164\u313b\u3150\u3133 \u3164\u313b\u3150\u3134 \u3164\u313b\u3150\u3135 \u3164\u313b\u3150\u3136 \u3164\u313b\u3150\u3137 \u3164\u313b\u3150\u3138 \u3164\u313b\u3150\u3139 \u3164\u313b\u3150\u313a \u3164\u313b\u3150\u313b \u3164\u313b\u3150\u313c \u3164\u313b\u3150\u313d \u3164\u313b\u3150\u313e \u3164\u313b\u3150\u313f \u3164\u313b\u3150\u3140 \u3164\u313b\u3150\u3141 \u3164\u313b\u3150\u3142 \u3164\u313b\u3150\u3143 \u3164\u313b\u3150\u3144 \u3164\u313b\u3150\u3145 \u3164\u313b\u3150\u3146 \u3164\u313b\u3150\u3147 \u3164\u313b\u3150\u3148 \u3164\u313b\u3150\u3149 \u3164\u313b\u3150\u314a \u3164\u313b\u3150\u314b \u3164\u313b\u3150\u314c \u3164\u313b\u3150\u314d \u3164\u313b\u3150\u314e \u3164\u313b\u3150\u314f \u3164\u313b\u3150\u3164 ",
-" row ab_c1_: \u3164\u313b\u3151\uca46 \u3164\u313b\u3151\u3131 \u3164\u313b\u3151\u3132 \u3164\u313b\u3151\u3133 \u3164\u313b\u3151\u3134 \u3164\u313b\u3151\u3135 \u3164\u313b\u3151\u3136 \u3164\u313b\u3151\u3137 \u3164\u313b\u3151\u3138 \u3164\u313b\u3151\u3139 \u3164\u313b\u3151\u313a \u3164\u313b\u3151\u313b \u3164\u313b\u3151\u313c \u3164\u313b\u3151\u313d \u3164\u313b\u3151\u313e \u3164\u313b\u3151\u313f \u3164\u313b\u3151\u3140 \u3164\u313b\u3151\u3141 \u3164\u313b\u3151\u3142 \u3164\u313b\u3151\u3143 \u3164\u313b\u3151\u3144 \u3164\u313b\u3151\u3145 \u3164\u313b\u3151\u3146 \u3164\u313b\u3151\u3147 \u3164\u313b\u3151\u3148 \u3164\u313b\u3151\u3149 \u3164\u313b\u3151\u314a \u3164\u313b\u3151\u314b \u3164\u313b\u3151\u314c \u3164\u313b\u3151\u314d \u3164\u313b\u3151\u314e \u3164\u313b\u3151\u314f \u3164\u313b\u3151\u3164 ",
-" row ab_c2_: \u3164\u313b\u3152\uca46 \u3164\u313b\u3152\u3131 \u3164\u313b\u3152\u3132 \u3164\u313b\u3152\u3133 \u3164\u313b\u3152\u3134 \u3164\u313b\u3152\u3135 \u3164\u313b\u3152\u3136 \u3164\u313b\u3152\u3137 \u3164\u313b\u3152\u3138 \u3164\u313b\u3152\u3139 \u3164\u313b\u3152\u313a \u3164\u313b\u3152\u313b \u3164\u313b\u3152\u313c \u3164\u313b\u3152\u313d \u3164\u313b\u3152\u313e \u3164\u313b\u3152\u313f \u3164\u313b\u3152\u3140 \u3164\u313b\u3152\u3141 \u3164\u313b\u3152\u3142 \u3164\u313b\u3152\u3143 \u3164\u313b\u3152\u3144 \u3164\u313b\u3152\u3145 \u3164\u313b\u3152\u3146 \u3164\u313b\u3152\u3147 \u3164\u313b\u3152\u3148 \u3164\u313b\u3152\u3149 \u3164\u313b\u3152\u314a \u3164\u313b\u3152\u314b \u3164\u313b\u3152\u314c \u3164\u313b\u3152\u314d \u3164\u313b\u3152\u314e \u3164\u313b\u3152\u314f \u3164\u313b\u3152\u3164 ",
-" row ab_c3_: \u3164\u313b\u3153\uca46 \u3164\u313b\u3153\u3131 \u3164\u313b\u3153\u3132 \u3164\u313b\u3153\u3133 \u3164\u313b\u3153\u3134 \u3164\u313b\u3153\u3135 \u3164\u313b\u3153\u3136 \u3164\u313b\u3153\u3137 \u3164\u313b\u3153\u3138 \u3164\u313b\u3153\u3139 \u3164\u313b\u3153\u313a \u3164\u313b\u3153\u313b \u3164\u313b\u3153\u313c \u3164\u313b\u3153\u313d \u3164\u313b\u3153\u313e \u3164\u313b\u3153\u313f \u3164\u313b\u3153\u3140 \u3164\u313b\u3153\u3141 \u3164\u313b\u3153\u3142 \u3164\u313b\u3153\u3143 \u3164\u313b\u3153\u3144 \u3164\u313b\u3153\u3145 \u3164\u313b\u3153\u3146 \u3164\u313b\u3153\u3147 \u3164\u313b\u3153\u3148 \u3164\u313b\u3153\u3149 \u3164\u313b\u3153\u314a \u3164\u313b\u3153\u314b \u3164\u313b\u3153\u314c \u3164\u313b\u3153\u314d \u3164\u313b\u3153\u314e \u3164\u313b\u3153\u314f \u3164\u313b\u3153\u3164 ",
-" row ab_c4_: \u3164\u313b\u3154\uca46 \u3164\u313b\u3154\u3131 \u3164\u313b\u3154\u3132 \u3164\u313b\u3154\u3133 \u3164\u313b\u3154\u3134 \u3164\u313b\u3154\u3135 \u3164\u313b\u3154\u3136 \u3164\u313b\u3154\u3137 \u3164\u313b\u3154\u3138 \u3164\u313b\u3154\u3139 \u3164\u313b\u3154\u313a \u3164\u313b\u3154\u313b \u3164\u313b\u3154\u313c \u3164\u313b\u3154\u313d \u3164\u313b\u3154\u313e \u3164\u313b\u3154\u313f \u3164\u313b\u3154\u3140 \u3164\u313b\u3154\u3141 \u3164\u313b\u3154\u3142 \u3164\u313b\u3154\u3143 \u3164\u313b\u3154\u3144 \u3164\u313b\u3154\u3145 \u3164\u313b\u3154\u3146 \u3164\u313b\u3154\u3147 \u3164\u313b\u3154\u3148 \u3164\u313b\u3154\u3149 \u3164\u313b\u3154\u314a \u3164\u313b\u3154\u314b \u3164\u313b\u3154\u314c \u3164\u313b\u3154\u314d \u3164\u313b\u3154\u314e \u3164\u313b\u3154\u314f \u3164\u313b\u3154\u3164 ",
-" row ab_c5_: \u3164\u313b\u3155\uca46 \u3164\u313b\u3155\u3131 \u3164\u313b\u3155\u3132 \u3164\u313b\u3155\u3133 \u3164\u313b\u3155\u3134 \u3164\u313b\u3155\u3135 \u3164\u313b\u3155\u3136 \u3164\u313b\u3155\u3137 \u3164\u313b\u3155\u3138 \u3164\u313b\u3155\u3139 \u3164\u313b\u3155\u313a \u3164\u313b\u3155\u313b \u3164\u313b\u3155\u313c \u3164\u313b\u3155\u313d \u3164\u313b\u3155\u313e \u3164\u313b\u3155\u313f \u3164\u313b\u3155\u3140 \u3164\u313b\u3155\u3141 \u3164\u313b\u3155\u3142 \u3164\u313b\u3155\u3143 \u3164\u313b\u3155\u3144 \u3164\u313b\u3155\u3145 \u3164\u313b\u3155\u3146 \u3164\u313b\u3155\u3147 \u3164\u313b\u3155\u3148 \u3164\u313b\u3155\u3149 \u3164\u313b\u3155\u314a \u3164\u313b\u3155\u314b \u3164\u313b\u3155\u314c \u3164\u313b\u3155\u314d \u3164\u313b\u3155\u314e \u3164\u313b\u3155\u314f \u3164\u313b\u3155\u3164 ",
-" row ab_c6_: \u3164\u313b\u3156\uca46 \u3164\u313b\u3156\u3131 \u3164\u313b\u3156\u3132 \u3164\u313b\u3156\u3133 \u3164\u313b\u3156\u3134 \u3164\u313b\u3156\u3135 \u3164\u313b\u3156\u3136 \u3164\u313b\u3156\u3137 \u3164\u313b\u3156\u3138 \u3164\u313b\u3156\u3139 \u3164\u313b\u3156\u313a \u3164\u313b\u3156\u313b \u3164\u313b\u3156\u313c \u3164\u313b\u3156\u313d \u3164\u313b\u3156\u313e \u3164\u313b\u3156\u313f \u3164\u313b\u3156\u3140 \u3164\u313b\u3156\u3141 \u3164\u313b\u3156\u3142 \u3164\u313b\u3156\u3143 \u3164\u313b\u3156\u3144 \u3164\u313b\u3156\u3145 \u3164\u313b\u3156\u3146 \u3164\u313b\u3156\u3147 \u3164\u313b\u3156\u3148 \u3164\u313b\u3156\u3149 \u3164\u313b\u3156\u314a \u3164\u313b\u3156\u314b \u3164\u313b\u3156\u314c \u3164\u313b\u3156\u314d \u3164\u313b\u3156\u314e \u3164\u313b\u3156\u314f \u3164\u313b\u3156\u3164 ",
-" row ab_c7_: \u3164\u313b\u3157\uca46 \u3164\u313b\u3157\u3131 \u3164\u313b\u3157\u3132 \u3164\u313b\u3157\u3133 \u3164\u313b\u3157\u3134 \u3164\u313b\u3157\u3135 \u3164\u313b\u3157\u3136 \u3164\u313b\u3157\u3137 \u3164\u313b\u3157\u3138 \u3164\u313b\u3157\u3139 \u3164\u313b\u3157\u313a \u3164\u313b\u3157\u313b \u3164\u313b\u3157\u313c \u3164\u313b\u3157\u313d \u3164\u313b\u3157\u313e \u3164\u313b\u3157\u313f \u3164\u313b\u3157\u3140 \u3164\u313b\u3157\u3141 \u3164\u313b\u3157\u3142 \u3164\u313b\u3157\u3143 \u3164\u313b\u3157\u3144 \u3164\u313b\u3157\u3145 \u3164\u313b\u3157\u3146 \u3164\u313b\u3157\u3147 \u3164\u313b\u3157\u3148 \u3164\u313b\u3157\u3149 \u3164\u313b\u3157\u314a \u3164\u313b\u3157\u314b \u3164\u313b\u3157\u314c \u3164\u313b\u3157\u314d \u3164\u313b\u3157\u314e \u3164\u313b\u3157\u314f \u3164\u313b\u3157\u3164 ",
-" row ab_c8_: \u3164\u313b\u3158\uca46 \u3164\u313b\u3158\u3131 \u3164\u313b\u3158\u3132 \u3164\u313b\u3158\u3133 \u3164\u313b\u3158\u3134 \u3164\u313b\u3158\u3135 \u3164\u313b\u3158\u3136 \u3164\u313b\u3158\u3137 \u3164\u313b\u3158\u3138 \u3164\u313b\u3158\u3139 \u3164\u313b\u3158\u313a \u3164\u313b\u3158\u313b \u3164\u313b\u3158\u313c \u3164\u313b\u3158\u313d \u3164\u313b\u3158\u313e \u3164\u313b\u3158\u313f \u3164\u313b\u3158\u3140 \u3164\u313b\u3158\u3141 \u3164\u313b\u3158\u3142 \u3164\u313b\u3158\u3143 \u3164\u313b\u3158\u3144 \u3164\u313b\u3158\u3145 \u3164\u313b\u3158\u3146 \u3164\u313b\u3158\u3147 \u3164\u313b\u3158\u3148 \u3164\u313b\u3158\u3149 \u3164\u313b\u3158\u314a \u3164\u313b\u3158\u314b \u3164\u313b\u3158\u314c \u3164\u313b\u3158\u314d \u3164\u313b\u3158\u314e \u3164\u313b\u3158\u314f \u3164\u313b\u3158\u3164 ",
-" row ab_c9_: \u3164\u313b\u3159\uca46 \u3164\u313b\u3159\u3131 \u3164\u313b\u3159\u3132 \u3164\u313b\u3159\u3133 \u3164\u313b\u3159\u3134 \u3164\u313b\u3159\u3135 \u3164\u313b\u3159\u3136 \u3164\u313b\u3159\u3137 \u3164\u313b\u3159\u3138 \u3164\u313b\u3159\u3139 \u3164\u313b\u3159\u313a \u3164\u313b\u3159\u313b \u3164\u313b\u3159\u313c \u3164\u313b\u3159\u313d \u3164\u313b\u3159\u313e \u3164\u313b\u3159\u313f \u3164\u313b\u3159\u3140 \u3164\u313b\u3159\u3141 \u3164\u313b\u3159\u3142 \u3164\u313b\u3159\u3143 \u3164\u313b\u3159\u3144 \u3164\u313b\u3159\u3145 \u3164\u313b\u3159\u3146 \u3164\u313b\u3159\u3147 \u3164\u313b\u3159\u3148 \u3164\u313b\u3159\u3149 \u3164\u313b\u3159\u314a \u3164\u313b\u3159\u314b \u3164\u313b\u3159\u314c \u3164\u313b\u3159\u314d \u3164\u313b\u3159\u314e \u3164\u313b\u3159\u314f \u3164\u313b\u3159\u3164 ",
-" row ab_ca_: \u3164\u313b\u315a\uca46 \u3164\u313b\u315a\u3131 \u3164\u313b\u315a\u3132 \u3164\u313b\u315a\u3133 \u3164\u313b\u315a\u3134 \u3164\u313b\u315a\u3135 \u3164\u313b\u315a\u3136 \u3164\u313b\u315a\u3137 \u3164\u313b\u315a\u3138 \u3164\u313b\u315a\u3139 \u3164\u313b\u315a\u313a \u3164\u313b\u315a\u313b \u3164\u313b\u315a\u313c \u3164\u313b\u315a\u313d \u3164\u313b\u315a\u313e \u3164\u313b\u315a\u313f \u3164\u313b\u315a\u3140 \u3164\u313b\u315a\u3141 \u3164\u313b\u315a\u3142 \u3164\u313b\u315a\u3143 \u3164\u313b\u315a\u3144 \u3164\u313b\u315a\u3145 \u3164\u313b\u315a\u3146 \u3164\u313b\u315a\u3147 \u3164\u313b\u315a\u3148 \u3164\u313b\u315a\u3149 \u3164\u313b\u315a\u314a \u3164\u313b\u315a\u314b \u3164\u313b\u315a\u314c \u3164\u313b\u315a\u314d \u3164\u313b\u315a\u314e \u3164\u313b\u315a\u314f \u3164\u313b\u315a\u3164 ",
-" row ab_cb_: \u3164\u313b\u315b\uca46 \u3164\u313b\u315b\u3131 \u3164\u313b\u315b\u3132 \u3164\u313b\u315b\u3133 \u3164\u313b\u315b\u3134 \u3164\u313b\u315b\u3135 \u3164\u313b\u315b\u3136 \u3164\u313b\u315b\u3137 \u3164\u313b\u315b\u3138 \u3164\u313b\u315b\u3139 \u3164\u313b\u315b\u313a \u3164\u313b\u315b\u313b \u3164\u313b\u315b\u313c \u3164\u313b\u315b\u313d \u3164\u313b\u315b\u313e \u3164\u313b\u315b\u313f \u3164\u313b\u315b\u3140 \u3164\u313b\u315b\u3141 \u3164\u313b\u315b\u3142 \u3164\u313b\u315b\u3143 \u3164\u313b\u315b\u3144 \u3164\u313b\u315b\u3145 \u3164\u313b\u315b\u3146 \u3164\u313b\u315b\u3147 \u3164\u313b\u315b\u3148 \u3164\u313b\u315b\u3149 \u3164\u313b\u315b\u314a \u3164\u313b\u315b\u314b \u3164\u313b\u315b\u314c \u3164\u313b\u315b\u314d \u3164\u313b\u315b\u314e \u3164\u313b\u315b\u314f \u3164\u313b\u315b\u3164 ",
-" row ab_cc_: \u3164\u313b\u315c\uca46 \u3164\u313b\u315c\u3131 \u3164\u313b\u315c\u3132 \u3164\u313b\u315c\u3133 \u3164\u313b\u315c\u3134 \u3164\u313b\u315c\u3135 \u3164\u313b\u315c\u3136 \u3164\u313b\u315c\u3137 \u3164\u313b\u315c\u3138 \u3164\u313b\u315c\u3139 \u3164\u313b\u315c\u313a \u3164\u313b\u315c\u313b \u3164\u313b\u315c\u313c \u3164\u313b\u315c\u313d \u3164\u313b\u315c\u313e \u3164\u313b\u315c\u313f \u3164\u313b\u315c\u3140 \u3164\u313b\u315c\u3141 \u3164\u313b\u315c\u3142 \u3164\u313b\u315c\u3143 \u3164\u313b\u315c\u3144 \u3164\u313b\u315c\u3145 \u3164\u313b\u315c\u3146 \u3164\u313b\u315c\u3147 \u3164\u313b\u315c\u3148 \u3164\u313b\u315c\u3149 \u3164\u313b\u315c\u314a \u3164\u313b\u315c\u314b \u3164\u313b\u315c\u314c \u3164\u313b\u315c\u314d \u3164\u313b\u315c\u314e \u3164\u313b\u315c\u314f \u3164\u313b\u315c\u3164 ",
-" row ab_cd_: \u3164\u313b\u315d\uca46 \u3164\u313b\u315d\u3131 \u3164\u313b\u315d\u3132 \u3164\u313b\u315d\u3133 \u3164\u313b\u315d\u3134 \u3164\u313b\u315d\u3135 \u3164\u313b\u315d\u3136 \u3164\u313b\u315d\u3137 \u3164\u313b\u315d\u3138 \u3164\u313b\u315d\u3139 \u3164\u313b\u315d\u313a \u3164\u313b\u315d\u313b \u3164\u313b\u315d\u313c \u3164\u313b\u315d\u313d \u3164\u313b\u315d\u313e \u3164\u313b\u315d\u313f \u3164\u313b\u315d\u3140 \u3164\u313b\u315d\u3141 \u3164\u313b\u315d\u3142 \u3164\u313b\u315d\u3143 \u3164\u313b\u315d\u3144 \u3164\u313b\u315d\u3145 \u3164\u313b\u315d\u3146 \u3164\u313b\u315d\u3147 \u3164\u313b\u315d\u3148 \u3164\u313b\u315d\u3149 \u3164\u313b\u315d\u314a \u3164\u313b\u315d\u314b \u3164\u313b\u315d\u314c \u3164\u313b\u315d\u314d \u3164\u313b\u315d\u314e \u3164\u313b\u315d\u314f \u3164\u313b\u315d\u3164 ",
-" row ab_ce_: \u3164\u313b\u315e\uca46 \u3164\u313b\u315e\u3131 \u3164\u313b\u315e\u3132 \u3164\u313b\u315e\u3133 \u3164\u313b\u315e\u3134 \u3164\u313b\u315e\u3135 \u3164\u313b\u315e\u3136 \u3164\u313b\u315e\u3137 \u3164\u313b\u315e\u3138 \u3164\u313b\u315e\u3139 \u3164\u313b\u315e\u313a \u3164\u313b\u315e\u313b \u3164\u313b\u315e\u313c \u3164\u313b\u315e\u313d \u3164\u313b\u315e\u313e \u3164\u313b\u315e\u313f \u3164\u313b\u315e\u3140 \u3164\u313b\u315e\u3141 \u3164\u313b\u315e\u3142 \u3164\u313b\u315e\u3143 \u3164\u313b\u315e\u3144 \u3164\u313b\u315e\u3145 \u3164\u313b\u315e\u3146 \u3164\u313b\u315e\u3147 \u3164\u313b\u315e\u3148 \u3164\u313b\u315e\u3149 \u3164\u313b\u315e\u314a \u3164\u313b\u315e\u314b \u3164\u313b\u315e\u314c \u3164\u313b\u315e\u314d \u3164\u313b\u315e\u314e \u3164\u313b\u315e\u314f \u3164\u313b\u315e\u3164 ",
-" row ab_cf_: \u3164\u313b\u315f\uca46 \u3164\u313b\u315f\u3131 \u3164\u313b\u315f\u3132 \u3164\u313b\u315f\u3133 \u3164\u313b\u315f\u3134 \u3164\u313b\u315f\u3135 \u3164\u313b\u315f\u3136 \u3164\u313b\u315f\u3137 \u3164\u313b\u315f\u3138 \u3164\u313b\u315f\u3139 \u3164\u313b\u315f\u313a \u3164\u313b\u315f\u313b \u3164\u313b\u315f\u313c \u3164\u313b\u315f\u313d \u3164\u313b\u315f\u313e \u3164\u313b\u315f\u313f \u3164\u313b\u315f\u3140 \u3164\u313b\u315f\u3141 \u3164\u313b\u315f\u3142 \u3164\u313b\u315f\u3143 \u3164\u313b\u315f\u3144 \u3164\u313b\u315f\u3145 \u3164\u313b\u315f\u3146 \u3164\u313b\u315f\u3147 \u3164\u313b\u315f\u3148 \u3164\u313b\u315f\u3149 \u3164\u313b\u315f\u314a \u3164\u313b\u315f\u314b \u3164\u313b\u315f\u314c \u3164\u313b\u315f\u314d \u3164\u313b\u315f\u314e \u3164\u313b\u315f\u314f \u3164\u313b\u315f\u3164 ",
-" row ab_d0_: \u3164\u313b\u3160\uca46 \u3164\u313b\u3160\u3131 \u3164\u313b\u3160\u3132 \u3164\u313b\u3160\u3133 \u3164\u313b\u3160\u3134 \u3164\u313b\u3160\u3135 \u3164\u313b\u3160\u3136 \u3164\u313b\u3160\u3137 \u3164\u313b\u3160\u3138 \u3164\u313b\u3160\u3139 \u3164\u313b\u3160\u313a \u3164\u313b\u3160\u313b \u3164\u313b\u3160\u313c \u3164\u313b\u3160\u313d \u3164\u313b\u3160\u313e \u3164\u313b\u3160\u313f \u3164\u313b\u3160\u3140 \u3164\u313b\u3160\u3141 \u3164\u313b\u3160\u3142 \u3164\u313b\u3160\u3143 \u3164\u313b\u3160\u3144 \u3164\u313b\u3160\u3145 \u3164\u313b\u3160\u3146 \u3164\u313b\u3160\u3147 \u3164\u313b\u3160\u3148 \u3164\u313b\u3160\u3149 \u3164\u313b\u3160\u314a \u3164\u313b\u3160\u314b \u3164\u313b\u3160\u314c \u3164\u313b\u3160\u314d \u3164\u313b\u3160\u314e \u3164\u313b\u3160\u314f \u3164\u313b\u3160\u3164 ",
-" row ab_d1_: \u3164\u313b\u3161\uca46 \u3164\u313b\u3161\u3131 \u3164\u313b\u3161\u3132 \u3164\u313b\u3161\u3133 \u3164\u313b\u3161\u3134 \u3164\u313b\u3161\u3135 \u3164\u313b\u3161\u3136 \u3164\u313b\u3161\u3137 \u3164\u313b\u3161\u3138 \u3164\u313b\u3161\u3139 \u3164\u313b\u3161\u313a \u3164\u313b\u3161\u313b \u3164\u313b\u3161\u313c \u3164\u313b\u3161\u313d \u3164\u313b\u3161\u313e \u3164\u313b\u3161\u313f \u3164\u313b\u3161\u3140 \u3164\u313b\u3161\u3141 \u3164\u313b\u3161\u3142 \u3164\u313b\u3161\u3143 \u3164\u313b\u3161\u3144 \u3164\u313b\u3161\u3145 \u3164\u313b\u3161\u3146 \u3164\u313b\u3161\u3147 \u3164\u313b\u3161\u3148 \u3164\u313b\u3161\u3149 \u3164\u313b\u3161\u314a \u3164\u313b\u3161\u314b \u3164\u313b\u3161\u314c \u3164\u313b\u3161\u314d \u3164\u313b\u3161\u314e \u3164\u313b\u3161\u314f \u3164\u313b\u3161\u3164 ",
-" row ab_d2_: \u3164\u313b\u3162\uca46 \u3164\u313b\u3162\u3131 \u3164\u313b\u3162\u3132 \u3164\u313b\u3162\u3133 \u3164\u313b\u3162\u3134 \u3164\u313b\u3162\u3135 \u3164\u313b\u3162\u3136 \u3164\u313b\u3162\u3137 \u3164\u313b\u3162\u3138 \u3164\u313b\u3162\u3139 \u3164\u313b\u3162\u313a \u3164\u313b\u3162\u313b \u3164\u313b\u3162\u313c \u3164\u313b\u3162\u313d \u3164\u313b\u3162\u313e \u3164\u313b\u3162\u313f \u3164\u313b\u3162\u3140 \u3164\u313b\u3162\u3141 \u3164\u313b\u3162\u3142 \u3164\u313b\u3162\u3143 \u3164\u313b\u3162\u3144 \u3164\u313b\u3162\u3145 \u3164\u313b\u3162\u3146 \u3164\u313b\u3162\u3147 \u3164\u313b\u3162\u3148 \u3164\u313b\u3162\u3149 \u3164\u313b\u3162\u314a \u3164\u313b\u3162\u314b \u3164\u313b\u3162\u314c \u3164\u313b\u3162\u314d \u3164\u313b\u3162\u314e \u3164\u313b\u3162\u314f \u3164\u313b\u3162\u3164 ",
-" row ab_d3_: \u3164\u313b\u3163\uca46 \u3164\u313b\u3163\u3131 \u3164\u313b\u3163\u3132 \u3164\u313b\u3163\u3133 \u3164\u313b\u3163\u3134 \u3164\u313b\u3163\u3135 \u3164\u313b\u3163\u3136 \u3164\u313b\u3163\u3137 \u3164\u313b\u3163\u3138 \u3164\u313b\u3163\u3139 \u3164\u313b\u3163\u313a \u3164\u313b\u3163\u313b \u3164\u313b\u3163\u313c \u3164\u313b\u3163\u313d \u3164\u313b\u3163\u313e \u3164\u313b\u3163\u313f \u3164\u313b\u3163\u3140 \u3164\u313b\u3163\u3141 \u3164\u313b\u3163\u3142 \u3164\u313b\u3163\u3143 \u3164\u313b\u3163\u3144 \u3164\u313b\u3163\u3145 \u3164\u313b\u3163\u3146 \u3164\u313b\u3163\u3147 \u3164\u313b\u3163\u3148 \u3164\u313b\u3163\u3149 \u3164\u313b\u3163\u314a \u3164\u313b\u3163\u314b \u3164\u313b\u3163\u314c \u3164\u313b\u3163\u314d \u3164\u313b\u3163\u314e \u3164\u313b\u3163\u314f \u3164\u313b\u3163\u3164 ",
-" row ab_d4_: \u3164\u313b\u3164\uca46 \u3164\u313b\u3164\u3131 \u3164\u313b\u3164\u3132 \u3164\u313b\u3164\u3133 \u3164\u313b\u3164\u3134 \u3164\u313b\u3164\u3135 \u3164\u313b\u3164\u3136 \u3164\u313b\u3164\u3137 \u3164\u313b\u3164\u3138 \u3164\u313b\u3164\u3139 \u3164\u313b\u3164\u313a \u3164\u313b\u3164\u313b \u3164\u313b\u3164\u313c \u3164\u313b\u3164\u313d \u3164\u313b\u3164\u313e \u3164\u313b\u3164\u313f \u3164\u313b\u3164\u3140 \u3164\u313b\u3164\u3141 \u3164\u313b\u3164\u3142 \u3164\u313b\u3164\u3143 \u3164\u313b\u3164\u3144 \u3164\u313b\u3164\u3145 \u3164\u313b\u3164\u3146 \u3164\u313b\u3164\u3147 \u3164\u313b\u3164\u3148 \u3164\u313b\u3164\u3149 \u3164\u313b\u3164\u314a \u3164\u313b\u3164\u314b \u3164\u313b\u3164\u314c \u3164\u313b\u3164\u314d \u3164\u313b\u3164\u314e \u3164\u313b\u3164\u314f \u3164\u313b\u3164\u3164 ",
-" row ac_be_: \u3164\u313c\u314e\uca46 \u3164\u313c\u314e\u3131 \u3164\u313c\u314e\u3132 \u3164\u313c\u314e\u3133 \u3164\u313c\u314e\u3134 \u3164\u313c\u314e\u3135 \u3164\u313c\u314e\u3136 \u3164\u313c\u314e\u3137 \u3164\u313c\u314e\u3138 \u3164\u313c\u314e\u3139 \u3164\u313c\u314e\u313a \u3164\u313c\u314e\u313b \u3164\u313c\u314e\u313c \u3164\u313c\u314e\u313d \u3164\u313c\u314e\u313e \u3164\u313c\u314e\u313f \u3164\u313c\u314e\u3140 \u3164\u313c\u314e\u3141 \u3164\u313c\u314e\u3142 \u3164\u313c\u314e\u3143 \u3164\u313c\u314e\u3144 \u3164\u313c\u314e\u3145 \u3164\u313c\u314e\u3146 \u3164\u313c\u314e\u3147 \u3164\u313c\u314e\u3148 \u3164\u313c\u314e\u3149 \u3164\u313c\u314e\u314a \u3164\u313c\u314e\u314b \u3164\u313c\u314e\u314c \u3164\u313c\u314e\u314d \u3164\u313c\u314e\u314e \u3164\u313c\u314e\u314f \u3164\u313c\u314e\u3164 ",
-" row ac_bf_: \u3164\u313c\u314f\uca46 \u3164\u313c\u314f\u3131 \u3164\u313c\u314f\u3132 \u3164\u313c\u314f\u3133 \u3164\u313c\u314f\u3134 \u3164\u313c\u314f\u3135 \u3164\u313c\u314f\u3136 \u3164\u313c\u314f\u3137 \u3164\u313c\u314f\u3138 \u3164\u313c\u314f\u3139 \u3164\u313c\u314f\u313a \u3164\u313c\u314f\u313b \u3164\u313c\u314f\u313c \u3164\u313c\u314f\u313d \u3164\u313c\u314f\u313e \u3164\u313c\u314f\u313f \u3164\u313c\u314f\u3140 \u3164\u313c\u314f\u3141 \u3164\u313c\u314f\u3142 \u3164\u313c\u314f\u3143 \u3164\u313c\u314f\u3144 \u3164\u313c\u314f\u3145 \u3164\u313c\u314f\u3146 \u3164\u313c\u314f\u3147 \u3164\u313c\u314f\u3148 \u3164\u313c\u314f\u3149 \u3164\u313c\u314f\u314a \u3164\u313c\u314f\u314b \u3164\u313c\u314f\u314c \u3164\u313c\u314f\u314d \u3164\u313c\u314f\u314e \u3164\u313c\u314f\u314f \u3164\u313c\u314f\u3164 ",
-" row ac_c0_: \u3164\u313c\u3150\uca46 \u3164\u313c\u3150\u3131 \u3164\u313c\u3150\u3132 \u3164\u313c\u3150\u3133 \u3164\u313c\u3150\u3134 \u3164\u313c\u3150\u3135 \u3164\u313c\u3150\u3136 \u3164\u313c\u3150\u3137 \u3164\u313c\u3150\u3138 \u3164\u313c\u3150\u3139 \u3164\u313c\u3150\u313a \u3164\u313c\u3150\u313b \u3164\u313c\u3150\u313c \u3164\u313c\u3150\u313d \u3164\u313c\u3150\u313e \u3164\u313c\u3150\u313f \u3164\u313c\u3150\u3140 \u3164\u313c\u3150\u3141 \u3164\u313c\u3150\u3142 \u3164\u313c\u3150\u3143 \u3164\u313c\u3150\u3144 \u3164\u313c\u3150\u3145 \u3164\u313c\u3150\u3146 \u3164\u313c\u3150\u3147 \u3164\u313c\u3150\u3148 \u3164\u313c\u3150\u3149 \u3164\u313c\u3150\u314a \u3164\u313c\u3150\u314b \u3164\u313c\u3150\u314c \u3164\u313c\u3150\u314d \u3164\u313c\u3150\u314e \u3164\u313c\u3150\u314f \u3164\u313c\u3150\u3164 ",
-" row ac_c1_: \u3164\u313c\u3151\uca46 \u3164\u313c\u3151\u3131 \u3164\u313c\u3151\u3132 \u3164\u313c\u3151\u3133 \u3164\u313c\u3151\u3134 \u3164\u313c\u3151\u3135 \u3164\u313c\u3151\u3136 \u3164\u313c\u3151\u3137 \u3164\u313c\u3151\u3138 \u3164\u313c\u3151\u3139 \u3164\u313c\u3151\u313a \u3164\u313c\u3151\u313b \u3164\u313c\u3151\u313c \u3164\u313c\u3151\u313d \u3164\u313c\u3151\u313e \u3164\u313c\u3151\u313f \u3164\u313c\u3151\u3140 \u3164\u313c\u3151\u3141 \u3164\u313c\u3151\u3142 \u3164\u313c\u3151\u3143 \u3164\u313c\u3151\u3144 \u3164\u313c\u3151\u3145 \u3164\u313c\u3151\u3146 \u3164\u313c\u3151\u3147 \u3164\u313c\u3151\u3148 \u3164\u313c\u3151\u3149 \u3164\u313c\u3151\u314a \u3164\u313c\u3151\u314b \u3164\u313c\u3151\u314c \u3164\u313c\u3151\u314d \u3164\u313c\u3151\u314e \u3164\u313c\u3151\u314f \u3164\u313c\u3151\u3164 ",
-" row ac_c2_: \u3164\u313c\u3152\uca46 \u3164\u313c\u3152\u3131 \u3164\u313c\u3152\u3132 \u3164\u313c\u3152\u3133 \u3164\u313c\u3152\u3134 \u3164\u313c\u3152\u3135 \u3164\u313c\u3152\u3136 \u3164\u313c\u3152\u3137 \u3164\u313c\u3152\u3138 \u3164\u313c\u3152\u3139 \u3164\u313c\u3152\u313a \u3164\u313c\u3152\u313b \u3164\u313c\u3152\u313c \u3164\u313c\u3152\u313d \u3164\u313c\u3152\u313e \u3164\u313c\u3152\u313f \u3164\u313c\u3152\u3140 \u3164\u313c\u3152\u3141 \u3164\u313c\u3152\u3142 \u3164\u313c\u3152\u3143 \u3164\u313c\u3152\u3144 \u3164\u313c\u3152\u3145 \u3164\u313c\u3152\u3146 \u3164\u313c\u3152\u3147 \u3164\u313c\u3152\u3148 \u3164\u313c\u3152\u3149 \u3164\u313c\u3152\u314a \u3164\u313c\u3152\u314b \u3164\u313c\u3152\u314c \u3164\u313c\u3152\u314d \u3164\u313c\u3152\u314e \u3164\u313c\u3152\u314f \u3164\u313c\u3152\u3164 ",
-" row ac_c3_: \u3164\u313c\u3153\uca46 \u3164\u313c\u3153\u3131 \u3164\u313c\u3153\u3132 \u3164\u313c\u3153\u3133 \u3164\u313c\u3153\u3134 \u3164\u313c\u3153\u3135 \u3164\u313c\u3153\u3136 \u3164\u313c\u3153\u3137 \u3164\u313c\u3153\u3138 \u3164\u313c\u3153\u3139 \u3164\u313c\u3153\u313a \u3164\u313c\u3153\u313b \u3164\u313c\u3153\u313c \u3164\u313c\u3153\u313d \u3164\u313c\u3153\u313e \u3164\u313c\u3153\u313f \u3164\u313c\u3153\u3140 \u3164\u313c\u3153\u3141 \u3164\u313c\u3153\u3142 \u3164\u313c\u3153\u3143 \u3164\u313c\u3153\u3144 \u3164\u313c\u3153\u3145 \u3164\u313c\u3153\u3146 \u3164\u313c\u3153\u3147 \u3164\u313c\u3153\u3148 \u3164\u313c\u3153\u3149 \u3164\u313c\u3153\u314a \u3164\u313c\u3153\u314b \u3164\u313c\u3153\u314c \u3164\u313c\u3153\u314d \u3164\u313c\u3153\u314e \u3164\u313c\u3153\u314f \u3164\u313c\u3153\u3164 ",
-" row ac_c4_: \u3164\u313c\u3154\uca46 \u3164\u313c\u3154\u3131 \u3164\u313c\u3154\u3132 \u3164\u313c\u3154\u3133 \u3164\u313c\u3154\u3134 \u3164\u313c\u3154\u3135 \u3164\u313c\u3154\u3136 \u3164\u313c\u3154\u3137 \u3164\u313c\u3154\u3138 \u3164\u313c\u3154\u3139 \u3164\u313c\u3154\u313a \u3164\u313c\u3154\u313b \u3164\u313c\u3154\u313c \u3164\u313c\u3154\u313d \u3164\u313c\u3154\u313e \u3164\u313c\u3154\u313f \u3164\u313c\u3154\u3140 \u3164\u313c\u3154\u3141 \u3164\u313c\u3154\u3142 \u3164\u313c\u3154\u3143 \u3164\u313c\u3154\u3144 \u3164\u313c\u3154\u3145 \u3164\u313c\u3154\u3146 \u3164\u313c\u3154\u3147 \u3164\u313c\u3154\u3148 \u3164\u313c\u3154\u3149 \u3164\u313c\u3154\u314a \u3164\u313c\u3154\u314b \u3164\u313c\u3154\u314c \u3164\u313c\u3154\u314d \u3164\u313c\u3154\u314e \u3164\u313c\u3154\u314f \u3164\u313c\u3154\u3164 ",
-" row ac_c5_: \u3164\u313c\u3155\uca46 \u3164\u313c\u3155\u3131 \u3164\u313c\u3155\u3132 \u3164\u313c\u3155\u3133 \u3164\u313c\u3155\u3134 \u3164\u313c\u3155\u3135 \u3164\u313c\u3155\u3136 \u3164\u313c\u3155\u3137 \u3164\u313c\u3155\u3138 \u3164\u313c\u3155\u3139 \u3164\u313c\u3155\u313a \u3164\u313c\u3155\u313b \u3164\u313c\u3155\u313c \u3164\u313c\u3155\u313d \u3164\u313c\u3155\u313e \u3164\u313c\u3155\u313f \u3164\u313c\u3155\u3140 \u3164\u313c\u3155\u3141 \u3164\u313c\u3155\u3142 \u3164\u313c\u3155\u3143 \u3164\u313c\u3155\u3144 \u3164\u313c\u3155\u3145 \u3164\u313c\u3155\u3146 \u3164\u313c\u3155\u3147 \u3164\u313c\u3155\u3148 \u3164\u313c\u3155\u3149 \u3164\u313c\u3155\u314a \u3164\u313c\u3155\u314b \u3164\u313c\u3155\u314c \u3164\u313c\u3155\u314d \u3164\u313c\u3155\u314e \u3164\u313c\u3155\u314f \u3164\u313c\u3155\u3164 ",
-" row ac_c6_: \u3164\u313c\u3156\uca46 \u3164\u313c\u3156\u3131 \u3164\u313c\u3156\u3132 \u3164\u313c\u3156\u3133 \u3164\u313c\u3156\u3134 \u3164\u313c\u3156\u3135 \u3164\u313c\u3156\u3136 \u3164\u313c\u3156\u3137 \u3164\u313c\u3156\u3138 \u3164\u313c\u3156\u3139 \u3164\u313c\u3156\u313a \u3164\u313c\u3156\u313b \u3164\u313c\u3156\u313c \u3164\u313c\u3156\u313d \u3164\u313c\u3156\u313e \u3164\u313c\u3156\u313f \u3164\u313c\u3156\u3140 \u3164\u313c\u3156\u3141 \u3164\u313c\u3156\u3142 \u3164\u313c\u3156\u3143 \u3164\u313c\u3156\u3144 \u3164\u313c\u3156\u3145 \u3164\u313c\u3156\u3146 \u3164\u313c\u3156\u3147 \u3164\u313c\u3156\u3148 \u3164\u313c\u3156\u3149 \u3164\u313c\u3156\u314a \u3164\u313c\u3156\u314b \u3164\u313c\u3156\u314c \u3164\u313c\u3156\u314d \u3164\u313c\u3156\u314e \u3164\u313c\u3156\u314f \u3164\u313c\u3156\u3164 ",
-" row ac_c7_: \u3164\u313c\u3157\uca46 \u3164\u313c\u3157\u3131 \u3164\u313c\u3157\u3132 \u3164\u313c\u3157\u3133 \u3164\u313c\u3157\u3134 \u3164\u313c\u3157\u3135 \u3164\u313c\u3157\u3136 \u3164\u313c\u3157\u3137 \u3164\u313c\u3157\u3138 \u3164\u313c\u3157\u3139 \u3164\u313c\u3157\u313a \u3164\u313c\u3157\u313b \u3164\u313c\u3157\u313c \u3164\u313c\u3157\u313d \u3164\u313c\u3157\u313e \u3164\u313c\u3157\u313f \u3164\u313c\u3157\u3140 \u3164\u313c\u3157\u3141 \u3164\u313c\u3157\u3142 \u3164\u313c\u3157\u3143 \u3164\u313c\u3157\u3144 \u3164\u313c\u3157\u3145 \u3164\u313c\u3157\u3146 \u3164\u313c\u3157\u3147 \u3164\u313c\u3157\u3148 \u3164\u313c\u3157\u3149 \u3164\u313c\u3157\u314a \u3164\u313c\u3157\u314b \u3164\u313c\u3157\u314c \u3164\u313c\u3157\u314d \u3164\u313c\u3157\u314e \u3164\u313c\u3157\u314f \u3164\u313c\u3157\u3164 ",
-" row ac_c8_: \u3164\u313c\u3158\uca46 \u3164\u313c\u3158\u3131 \u3164\u313c\u3158\u3132 \u3164\u313c\u3158\u3133 \u3164\u313c\u3158\u3134 \u3164\u313c\u3158\u3135 \u3164\u313c\u3158\u3136 \u3164\u313c\u3158\u3137 \u3164\u313c\u3158\u3138 \u3164\u313c\u3158\u3139 \u3164\u313c\u3158\u313a \u3164\u313c\u3158\u313b \u3164\u313c\u3158\u313c \u3164\u313c\u3158\u313d \u3164\u313c\u3158\u313e \u3164\u313c\u3158\u313f \u3164\u313c\u3158\u3140 \u3164\u313c\u3158\u3141 \u3164\u313c\u3158\u3142 \u3164\u313c\u3158\u3143 \u3164\u313c\u3158\u3144 \u3164\u313c\u3158\u3145 \u3164\u313c\u3158\u3146 \u3164\u313c\u3158\u3147 \u3164\u313c\u3158\u3148 \u3164\u313c\u3158\u3149 \u3164\u313c\u3158\u314a \u3164\u313c\u3158\u314b \u3164\u313c\u3158\u314c \u3164\u313c\u3158\u314d \u3164\u313c\u3158\u314e \u3164\u313c\u3158\u314f \u3164\u313c\u3158\u3164 ",
-" row ac_c9_: \u3164\u313c\u3159\uca46 \u3164\u313c\u3159\u3131 \u3164\u313c\u3159\u3132 \u3164\u313c\u3159\u3133 \u3164\u313c\u3159\u3134 \u3164\u313c\u3159\u3135 \u3164\u313c\u3159\u3136 \u3164\u313c\u3159\u3137 \u3164\u313c\u3159\u3138 \u3164\u313c\u3159\u3139 \u3164\u313c\u3159\u313a \u3164\u313c\u3159\u313b \u3164\u313c\u3159\u313c \u3164\u313c\u3159\u313d \u3164\u313c\u3159\u313e \u3164\u313c\u3159\u313f \u3164\u313c\u3159\u3140 \u3164\u313c\u3159\u3141 \u3164\u313c\u3159\u3142 \u3164\u313c\u3159\u3143 \u3164\u313c\u3159\u3144 \u3164\u313c\u3159\u3145 \u3164\u313c\u3159\u3146 \u3164\u313c\u3159\u3147 \u3164\u313c\u3159\u3148 \u3164\u313c\u3159\u3149 \u3164\u313c\u3159\u314a \u3164\u313c\u3159\u314b \u3164\u313c\u3159\u314c \u3164\u313c\u3159\u314d \u3164\u313c\u3159\u314e \u3164\u313c\u3159\u314f \u3164\u313c\u3159\u3164 ",
-" row ac_ca_: \u3164\u313c\u315a\uca46 \u3164\u313c\u315a\u3131 \u3164\u313c\u315a\u3132 \u3164\u313c\u315a\u3133 \u3164\u313c\u315a\u3134 \u3164\u313c\u315a\u3135 \u3164\u313c\u315a\u3136 \u3164\u313c\u315a\u3137 \u3164\u313c\u315a\u3138 \u3164\u313c\u315a\u3139 \u3164\u313c\u315a\u313a \u3164\u313c\u315a\u313b \u3164\u313c\u315a\u313c \u3164\u313c\u315a\u313d \u3164\u313c\u315a\u313e \u3164\u313c\u315a\u313f \u3164\u313c\u315a\u3140 \u3164\u313c\u315a\u3141 \u3164\u313c\u315a\u3142 \u3164\u313c\u315a\u3143 \u3164\u313c\u315a\u3144 \u3164\u313c\u315a\u3145 \u3164\u313c\u315a\u3146 \u3164\u313c\u315a\u3147 \u3164\u313c\u315a\u3148 \u3164\u313c\u315a\u3149 \u3164\u313c\u315a\u314a \u3164\u313c\u315a\u314b \u3164\u313c\u315a\u314c \u3164\u313c\u315a\u314d \u3164\u313c\u315a\u314e \u3164\u313c\u315a\u314f \u3164\u313c\u315a\u3164 ",
-" row ac_cb_: \u3164\u313c\u315b\uca46 \u3164\u313c\u315b\u3131 \u3164\u313c\u315b\u3132 \u3164\u313c\u315b\u3133 \u3164\u313c\u315b\u3134 \u3164\u313c\u315b\u3135 \u3164\u313c\u315b\u3136 \u3164\u313c\u315b\u3137 \u3164\u313c\u315b\u3138 \u3164\u313c\u315b\u3139 \u3164\u313c\u315b\u313a \u3164\u313c\u315b\u313b \u3164\u313c\u315b\u313c \u3164\u313c\u315b\u313d \u3164\u313c\u315b\u313e \u3164\u313c\u315b\u313f \u3164\u313c\u315b\u3140 \u3164\u313c\u315b\u3141 \u3164\u313c\u315b\u3142 \u3164\u313c\u315b\u3143 \u3164\u313c\u315b\u3144 \u3164\u313c\u315b\u3145 \u3164\u313c\u315b\u3146 \u3164\u313c\u315b\u3147 \u3164\u313c\u315b\u3148 \u3164\u313c\u315b\u3149 \u3164\u313c\u315b\u314a \u3164\u313c\u315b\u314b \u3164\u313c\u315b\u314c \u3164\u313c\u315b\u314d \u3164\u313c\u315b\u314e \u3164\u313c\u315b\u314f \u3164\u313c\u315b\u3164 ",
-" row ac_cc_: \u3164\u313c\u315c\uca46 \u3164\u313c\u315c\u3131 \u3164\u313c\u315c\u3132 \u3164\u313c\u315c\u3133 \u3164\u313c\u315c\u3134 \u3164\u313c\u315c\u3135 \u3164\u313c\u315c\u3136 \u3164\u313c\u315c\u3137 \u3164\u313c\u315c\u3138 \u3164\u313c\u315c\u3139 \u3164\u313c\u315c\u313a \u3164\u313c\u315c\u313b \u3164\u313c\u315c\u313c \u3164\u313c\u315c\u313d \u3164\u313c\u315c\u313e \u3164\u313c\u315c\u313f \u3164\u313c\u315c\u3140 \u3164\u313c\u315c\u3141 \u3164\u313c\u315c\u3142 \u3164\u313c\u315c\u3143 \u3164\u313c\u315c\u3144 \u3164\u313c\u315c\u3145 \u3164\u313c\u315c\u3146 \u3164\u313c\u315c\u3147 \u3164\u313c\u315c\u3148 \u3164\u313c\u315c\u3149 \u3164\u313c\u315c\u314a \u3164\u313c\u315c\u314b \u3164\u313c\u315c\u314c \u3164\u313c\u315c\u314d \u3164\u313c\u315c\u314e \u3164\u313c\u315c\u314f \u3164\u313c\u315c\u3164 ",
-" row ac_cd_: \u3164\u313c\u315d\uca46 \u3164\u313c\u315d\u3131 \u3164\u313c\u315d\u3132 \u3164\u313c\u315d\u3133 \u3164\u313c\u315d\u3134 \u3164\u313c\u315d\u3135 \u3164\u313c\u315d\u3136 \u3164\u313c\u315d\u3137 \u3164\u313c\u315d\u3138 \u3164\u313c\u315d\u3139 \u3164\u313c\u315d\u313a \u3164\u313c\u315d\u313b \u3164\u313c\u315d\u313c \u3164\u313c\u315d\u313d \u3164\u313c\u315d\u313e \u3164\u313c\u315d\u313f \u3164\u313c\u315d\u3140 \u3164\u313c\u315d\u3141 \u3164\u313c\u315d\u3142 \u3164\u313c\u315d\u3143 \u3164\u313c\u315d\u3144 \u3164\u313c\u315d\u3145 \u3164\u313c\u315d\u3146 \u3164\u313c\u315d\u3147 \u3164\u313c\u315d\u3148 \u3164\u313c\u315d\u3149 \u3164\u313c\u315d\u314a \u3164\u313c\u315d\u314b \u3164\u313c\u315d\u314c \u3164\u313c\u315d\u314d \u3164\u313c\u315d\u314e \u3164\u313c\u315d\u314f \u3164\u313c\u315d\u3164 ",
-" row ac_ce_: \u3164\u313c\u315e\uca46 \u3164\u313c\u315e\u3131 \u3164\u313c\u315e\u3132 \u3164\u313c\u315e\u3133 \u3164\u313c\u315e\u3134 \u3164\u313c\u315e\u3135 \u3164\u313c\u315e\u3136 \u3164\u313c\u315e\u3137 \u3164\u313c\u315e\u3138 \u3164\u313c\u315e\u3139 \u3164\u313c\u315e\u313a \u3164\u313c\u315e\u313b \u3164\u313c\u315e\u313c \u3164\u313c\u315e\u313d \u3164\u313c\u315e\u313e \u3164\u313c\u315e\u313f \u3164\u313c\u315e\u3140 \u3164\u313c\u315e\u3141 \u3164\u313c\u315e\u3142 \u3164\u313c\u315e\u3143 \u3164\u313c\u315e\u3144 \u3164\u313c\u315e\u3145 \u3164\u313c\u315e\u3146 \u3164\u313c\u315e\u3147 \u3164\u313c\u315e\u3148 \u3164\u313c\u315e\u3149 \u3164\u313c\u315e\u314a \u3164\u313c\u315e\u314b \u3164\u313c\u315e\u314c \u3164\u313c\u315e\u314d \u3164\u313c\u315e\u314e \u3164\u313c\u315e\u314f \u3164\u313c\u315e\u3164 ",
-" row ac_cf_: \u3164\u313c\u315f\uca46 \u3164\u313c\u315f\u3131 \u3164\u313c\u315f\u3132 \u3164\u313c\u315f\u3133 \u3164\u313c\u315f\u3134 \u3164\u313c\u315f\u3135 \u3164\u313c\u315f\u3136 \u3164\u313c\u315f\u3137 \u3164\u313c\u315f\u3138 \u3164\u313c\u315f\u3139 \u3164\u313c\u315f\u313a \u3164\u313c\u315f\u313b \u3164\u313c\u315f\u313c \u3164\u313c\u315f\u313d \u3164\u313c\u315f\u313e \u3164\u313c\u315f\u313f \u3164\u313c\u315f\u3140 \u3164\u313c\u315f\u3141 \u3164\u313c\u315f\u3142 \u3164\u313c\u315f\u3143 \u3164\u313c\u315f\u3144 \u3164\u313c\u315f\u3145 \u3164\u313c\u315f\u3146 \u3164\u313c\u315f\u3147 \u3164\u313c\u315f\u3148 \u3164\u313c\u315f\u3149 \u3164\u313c\u315f\u314a \u3164\u313c\u315f\u314b \u3164\u313c\u315f\u314c \u3164\u313c\u315f\u314d \u3164\u313c\u315f\u314e \u3164\u313c\u315f\u314f \u3164\u313c\u315f\u3164 ",
-" row ac_d0_: \u3164\u313c\u3160\uca46 \u3164\u313c\u3160\u3131 \u3164\u313c\u3160\u3132 \u3164\u313c\u3160\u3133 \u3164\u313c\u3160\u3134 \u3164\u313c\u3160\u3135 \u3164\u313c\u3160\u3136 \u3164\u313c\u3160\u3137 \u3164\u313c\u3160\u3138 \u3164\u313c\u3160\u3139 \u3164\u313c\u3160\u313a \u3164\u313c\u3160\u313b \u3164\u313c\u3160\u313c \u3164\u313c\u3160\u313d \u3164\u313c\u3160\u313e \u3164\u313c\u3160\u313f \u3164\u313c\u3160\u3140 \u3164\u313c\u3160\u3141 \u3164\u313c\u3160\u3142 \u3164\u313c\u3160\u3143 \u3164\u313c\u3160\u3144 \u3164\u313c\u3160\u3145 \u3164\u313c\u3160\u3146 \u3164\u313c\u3160\u3147 \u3164\u313c\u3160\u3148 \u3164\u313c\u3160\u3149 \u3164\u313c\u3160\u314a \u3164\u313c\u3160\u314b \u3164\u313c\u3160\u314c \u3164\u313c\u3160\u314d \u3164\u313c\u3160\u314e \u3164\u313c\u3160\u314f \u3164\u313c\u3160\u3164 ",
-" row ac_d1_: \u3164\u313c\u3161\uca46 \u3164\u313c\u3161\u3131 \u3164\u313c\u3161\u3132 \u3164\u313c\u3161\u3133 \u3164\u313c\u3161\u3134 \u3164\u313c\u3161\u3135 \u3164\u313c\u3161\u3136 \u3164\u313c\u3161\u3137 \u3164\u313c\u3161\u3138 \u3164\u313c\u3161\u3139 \u3164\u313c\u3161\u313a \u3164\u313c\u3161\u313b \u3164\u313c\u3161\u313c \u3164\u313c\u3161\u313d \u3164\u313c\u3161\u313e \u3164\u313c\u3161\u313f \u3164\u313c\u3161\u3140 \u3164\u313c\u3161\u3141 \u3164\u313c\u3161\u3142 \u3164\u313c\u3161\u3143 \u3164\u313c\u3161\u3144 \u3164\u313c\u3161\u3145 \u3164\u313c\u3161\u3146 \u3164\u313c\u3161\u3147 \u3164\u313c\u3161\u3148 \u3164\u313c\u3161\u3149 \u3164\u313c\u3161\u314a \u3164\u313c\u3161\u314b \u3164\u313c\u3161\u314c \u3164\u313c\u3161\u314d \u3164\u313c\u3161\u314e \u3164\u313c\u3161\u314f \u3164\u313c\u3161\u3164 ",
-" row ac_d2_: \u3164\u313c\u3162\uca46 \u3164\u313c\u3162\u3131 \u3164\u313c\u3162\u3132 \u3164\u313c\u3162\u3133 \u3164\u313c\u3162\u3134 \u3164\u313c\u3162\u3135 \u3164\u313c\u3162\u3136 \u3164\u313c\u3162\u3137 \u3164\u313c\u3162\u3138 \u3164\u313c\u3162\u3139 \u3164\u313c\u3162\u313a \u3164\u313c\u3162\u313b \u3164\u313c\u3162\u313c \u3164\u313c\u3162\u313d \u3164\u313c\u3162\u313e \u3164\u313c\u3162\u313f \u3164\u313c\u3162\u3140 \u3164\u313c\u3162\u3141 \u3164\u313c\u3162\u3142 \u3164\u313c\u3162\u3143 \u3164\u313c\u3162\u3144 \u3164\u313c\u3162\u3145 \u3164\u313c\u3162\u3146 \u3164\u313c\u3162\u3147 \u3164\u313c\u3162\u3148 \u3164\u313c\u3162\u3149 \u3164\u313c\u3162\u314a \u3164\u313c\u3162\u314b \u3164\u313c\u3162\u314c \u3164\u313c\u3162\u314d \u3164\u313c\u3162\u314e \u3164\u313c\u3162\u314f \u3164\u313c\u3162\u3164 ",
-" row ac_d3_: \u3164\u313c\u3163\uca46 \u3164\u313c\u3163\u3131 \u3164\u313c\u3163\u3132 \u3164\u313c\u3163\u3133 \u3164\u313c\u3163\u3134 \u3164\u313c\u3163\u3135 \u3164\u313c\u3163\u3136 \u3164\u313c\u3163\u3137 \u3164\u313c\u3163\u3138 \u3164\u313c\u3163\u3139 \u3164\u313c\u3163\u313a \u3164\u313c\u3163\u313b \u3164\u313c\u3163\u313c \u3164\u313c\u3163\u313d \u3164\u313c\u3163\u313e \u3164\u313c\u3163\u313f \u3164\u313c\u3163\u3140 \u3164\u313c\u3163\u3141 \u3164\u313c\u3163\u3142 \u3164\u313c\u3163\u3143 \u3164\u313c\u3163\u3144 \u3164\u313c\u3163\u3145 \u3164\u313c\u3163\u3146 \u3164\u313c\u3163\u3147 \u3164\u313c\u3163\u3148 \u3164\u313c\u3163\u3149 \u3164\u313c\u3163\u314a \u3164\u313c\u3163\u314b \u3164\u313c\u3163\u314c \u3164\u313c\u3163\u314d \u3164\u313c\u3163\u314e \u3164\u313c\u3163\u314f \u3164\u313c\u3163\u3164 ",
-" row ac_d4_: \u3164\u313c\u3164\uca46 \u3164\u313c\u3164\u3131 \u3164\u313c\u3164\u3132 \u3164\u313c\u3164\u3133 \u3164\u313c\u3164\u3134 \u3164\u313c\u3164\u3135 \u3164\u313c\u3164\u3136 \u3164\u313c\u3164\u3137 \u3164\u313c\u3164\u3138 \u3164\u313c\u3164\u3139 \u3164\u313c\u3164\u313a \u3164\u313c\u3164\u313b \u3164\u313c\u3164\u313c \u3164\u313c\u3164\u313d \u3164\u313c\u3164\u313e \u3164\u313c\u3164\u313f \u3164\u313c\u3164\u3140 \u3164\u313c\u3164\u3141 \u3164\u313c\u3164\u3142 \u3164\u313c\u3164\u3143 \u3164\u313c\u3164\u3144 \u3164\u313c\u3164\u3145 \u3164\u313c\u3164\u3146 \u3164\u313c\u3164\u3147 \u3164\u313c\u3164\u3148 \u3164\u313c\u3164\u3149 \u3164\u313c\u3164\u314a \u3164\u313c\u3164\u314b \u3164\u313c\u3164\u314c \u3164\u313c\u3164\u314d \u3164\u313c\u3164\u314e \u3164\u313c\u3164\u314f \u3164\u313c\u3164\u3164 ",
-" row ad_be_: \u3164\u313d\u314e\uca46 \u3164\u313d\u314e\u3131 \u3164\u313d\u314e\u3132 \u3164\u313d\u314e\u3133 \u3164\u313d\u314e\u3134 \u3164\u313d\u314e\u3135 \u3164\u313d\u314e\u3136 \u3164\u313d\u314e\u3137 \u3164\u313d\u314e\u3138 \u3164\u313d\u314e\u3139 \u3164\u313d\u314e\u313a \u3164\u313d\u314e\u313b \u3164\u313d\u314e\u313c \u3164\u313d\u314e\u313d \u3164\u313d\u314e\u313e \u3164\u313d\u314e\u313f \u3164\u313d\u314e\u3140 \u3164\u313d\u314e\u3141 \u3164\u313d\u314e\u3142 \u3164\u313d\u314e\u3143 \u3164\u313d\u314e\u3144 \u3164\u313d\u314e\u3145 \u3164\u313d\u314e\u3146 \u3164\u313d\u314e\u3147 \u3164\u313d\u314e\u3148 \u3164\u313d\u314e\u3149 \u3164\u313d\u314e\u314a \u3164\u313d\u314e\u314b \u3164\u313d\u314e\u314c \u3164\u313d\u314e\u314d \u3164\u313d\u314e\u314e \u3164\u313d\u314e\u314f \u3164\u313d\u314e\u3164 ",
-" row ad_bf_: \u3164\u313d\u314f\uca46 \u3164\u313d\u314f\u3131 \u3164\u313d\u314f\u3132 \u3164\u313d\u314f\u3133 \u3164\u313d\u314f\u3134 \u3164\u313d\u314f\u3135 \u3164\u313d\u314f\u3136 \u3164\u313d\u314f\u3137 \u3164\u313d\u314f\u3138 \u3164\u313d\u314f\u3139 \u3164\u313d\u314f\u313a \u3164\u313d\u314f\u313b \u3164\u313d\u314f\u313c \u3164\u313d\u314f\u313d \u3164\u313d\u314f\u313e \u3164\u313d\u314f\u313f \u3164\u313d\u314f\u3140 \u3164\u313d\u314f\u3141 \u3164\u313d\u314f\u3142 \u3164\u313d\u314f\u3143 \u3164\u313d\u314f\u3144 \u3164\u313d\u314f\u3145 \u3164\u313d\u314f\u3146 \u3164\u313d\u314f\u3147 \u3164\u313d\u314f\u3148 \u3164\u313d\u314f\u3149 \u3164\u313d\u314f\u314a \u3164\u313d\u314f\u314b \u3164\u313d\u314f\u314c \u3164\u313d\u314f\u314d \u3164\u313d\u314f\u314e \u3164\u313d\u314f\u314f \u3164\u313d\u314f\u3164 ",
-" row ad_c0_: \u3164\u313d\u3150\uca46 \u3164\u313d\u3150\u3131 \u3164\u313d\u3150\u3132 \u3164\u313d\u3150\u3133 \u3164\u313d\u3150\u3134 \u3164\u313d\u3150\u3135 \u3164\u313d\u3150\u3136 \u3164\u313d\u3150\u3137 \u3164\u313d\u3150\u3138 \u3164\u313d\u3150\u3139 \u3164\u313d\u3150\u313a \u3164\u313d\u3150\u313b \u3164\u313d\u3150\u313c \u3164\u313d\u3150\u313d \u3164\u313d\u3150\u313e \u3164\u313d\u3150\u313f \u3164\u313d\u3150\u3140 \u3164\u313d\u3150\u3141 \u3164\u313d\u3150\u3142 \u3164\u313d\u3150\u3143 \u3164\u313d\u3150\u3144 \u3164\u313d\u3150\u3145 \u3164\u313d\u3150\u3146 \u3164\u313d\u3150\u3147 \u3164\u313d\u3150\u3148 \u3164\u313d\u3150\u3149 \u3164\u313d\u3150\u314a \u3164\u313d\u3150\u314b \u3164\u313d\u3150\u314c \u3164\u313d\u3150\u314d \u3164\u313d\u3150\u314e \u3164\u313d\u3150\u314f \u3164\u313d\u3150\u3164 ",
-" row ad_c1_: \u3164\u313d\u3151\uca46 \u3164\u313d\u3151\u3131 \u3164\u313d\u3151\u3132 \u3164\u313d\u3151\u3133 \u3164\u313d\u3151\u3134 \u3164\u313d\u3151\u3135 \u3164\u313d\u3151\u3136 \u3164\u313d\u3151\u3137 \u3164\u313d\u3151\u3138 \u3164\u313d\u3151\u3139 \u3164\u313d\u3151\u313a \u3164\u313d\u3151\u313b \u3164\u313d\u3151\u313c \u3164\u313d\u3151\u313d \u3164\u313d\u3151\u313e \u3164\u313d\u3151\u313f \u3164\u313d\u3151\u3140 \u3164\u313d\u3151\u3141 \u3164\u313d\u3151\u3142 \u3164\u313d\u3151\u3143 \u3164\u313d\u3151\u3144 \u3164\u313d\u3151\u3145 \u3164\u313d\u3151\u3146 \u3164\u313d\u3151\u3147 \u3164\u313d\u3151\u3148 \u3164\u313d\u3151\u3149 \u3164\u313d\u3151\u314a \u3164\u313d\u3151\u314b \u3164\u313d\u3151\u314c \u3164\u313d\u3151\u314d \u3164\u313d\u3151\u314e \u3164\u313d\u3151\u314f \u3164\u313d\u3151\u3164 ",
-" row ad_c2_: \u3164\u313d\u3152\uca46 \u3164\u313d\u3152\u3131 \u3164\u313d\u3152\u3132 \u3164\u313d\u3152\u3133 \u3164\u313d\u3152\u3134 \u3164\u313d\u3152\u3135 \u3164\u313d\u3152\u3136 \u3164\u313d\u3152\u3137 \u3164\u313d\u3152\u3138 \u3164\u313d\u3152\u3139 \u3164\u313d\u3152\u313a \u3164\u313d\u3152\u313b \u3164\u313d\u3152\u313c \u3164\u313d\u3152\u313d \u3164\u313d\u3152\u313e \u3164\u313d\u3152\u313f \u3164\u313d\u3152\u3140 \u3164\u313d\u3152\u3141 \u3164\u313d\u3152\u3142 \u3164\u313d\u3152\u3143 \u3164\u313d\u3152\u3144 \u3164\u313d\u3152\u3145 \u3164\u313d\u3152\u3146 \u3164\u313d\u3152\u3147 \u3164\u313d\u3152\u3148 \u3164\u313d\u3152\u3149 \u3164\u313d\u3152\u314a \u3164\u313d\u3152\u314b \u3164\u313d\u3152\u314c \u3164\u313d\u3152\u314d \u3164\u313d\u3152\u314e \u3164\u313d\u3152\u314f \u3164\u313d\u3152\u3164 ",
-" row ad_c3_: \u3164\u313d\u3153\uca46 \u3164\u313d\u3153\u3131 \u3164\u313d\u3153\u3132 \u3164\u313d\u3153\u3133 \u3164\u313d\u3153\u3134 \u3164\u313d\u3153\u3135 \u3164\u313d\u3153\u3136 \u3164\u313d\u3153\u3137 \u3164\u313d\u3153\u3138 \u3164\u313d\u3153\u3139 \u3164\u313d\u3153\u313a \u3164\u313d\u3153\u313b \u3164\u313d\u3153\u313c \u3164\u313d\u3153\u313d \u3164\u313d\u3153\u313e \u3164\u313d\u3153\u313f \u3164\u313d\u3153\u3140 \u3164\u313d\u3153\u3141 \u3164\u313d\u3153\u3142 \u3164\u313d\u3153\u3143 \u3164\u313d\u3153\u3144 \u3164\u313d\u3153\u3145 \u3164\u313d\u3153\u3146 \u3164\u313d\u3153\u3147 \u3164\u313d\u3153\u3148 \u3164\u313d\u3153\u3149 \u3164\u313d\u3153\u314a \u3164\u313d\u3153\u314b \u3164\u313d\u3153\u314c \u3164\u313d\u3153\u314d \u3164\u313d\u3153\u314e \u3164\u313d\u3153\u314f \u3164\u313d\u3153\u3164 ",
-" row ad_c4_: \u3164\u313d\u3154\uca46 \u3164\u313d\u3154\u3131 \u3164\u313d\u3154\u3132 \u3164\u313d\u3154\u3133 \u3164\u313d\u3154\u3134 \u3164\u313d\u3154\u3135 \u3164\u313d\u3154\u3136 \u3164\u313d\u3154\u3137 \u3164\u313d\u3154\u3138 \u3164\u313d\u3154\u3139 \u3164\u313d\u3154\u313a \u3164\u313d\u3154\u313b \u3164\u313d\u3154\u313c \u3164\u313d\u3154\u313d \u3164\u313d\u3154\u313e \u3164\u313d\u3154\u313f \u3164\u313d\u3154\u3140 \u3164\u313d\u3154\u3141 \u3164\u313d\u3154\u3142 \u3164\u313d\u3154\u3143 \u3164\u313d\u3154\u3144 \u3164\u313d\u3154\u3145 \u3164\u313d\u3154\u3146 \u3164\u313d\u3154\u3147 \u3164\u313d\u3154\u3148 \u3164\u313d\u3154\u3149 \u3164\u313d\u3154\u314a \u3164\u313d\u3154\u314b \u3164\u313d\u3154\u314c \u3164\u313d\u3154\u314d \u3164\u313d\u3154\u314e \u3164\u313d\u3154\u314f \u3164\u313d\u3154\u3164 ",
-" row ad_c5_: \u3164\u313d\u3155\uca46 \u3164\u313d\u3155\u3131 \u3164\u313d\u3155\u3132 \u3164\u313d\u3155\u3133 \u3164\u313d\u3155\u3134 \u3164\u313d\u3155\u3135 \u3164\u313d\u3155\u3136 \u3164\u313d\u3155\u3137 \u3164\u313d\u3155\u3138 \u3164\u313d\u3155\u3139 \u3164\u313d\u3155\u313a \u3164\u313d\u3155\u313b \u3164\u313d\u3155\u313c \u3164\u313d\u3155\u313d \u3164\u313d\u3155\u313e \u3164\u313d\u3155\u313f \u3164\u313d\u3155\u3140 \u3164\u313d\u3155\u3141 \u3164\u313d\u3155\u3142 \u3164\u313d\u3155\u3143 \u3164\u313d\u3155\u3144 \u3164\u313d\u3155\u3145 \u3164\u313d\u3155\u3146 \u3164\u313d\u3155\u3147 \u3164\u313d\u3155\u3148 \u3164\u313d\u3155\u3149 \u3164\u313d\u3155\u314a \u3164\u313d\u3155\u314b \u3164\u313d\u3155\u314c \u3164\u313d\u3155\u314d \u3164\u313d\u3155\u314e \u3164\u313d\u3155\u314f \u3164\u313d\u3155\u3164 ",
-" row ad_c6_: \u3164\u313d\u3156\uca46 \u3164\u313d\u3156\u3131 \u3164\u313d\u3156\u3132 \u3164\u313d\u3156\u3133 \u3164\u313d\u3156\u3134 \u3164\u313d\u3156\u3135 \u3164\u313d\u3156\u3136 \u3164\u313d\u3156\u3137 \u3164\u313d\u3156\u3138 \u3164\u313d\u3156\u3139 \u3164\u313d\u3156\u313a \u3164\u313d\u3156\u313b \u3164\u313d\u3156\u313c \u3164\u313d\u3156\u313d \u3164\u313d\u3156\u313e \u3164\u313d\u3156\u313f \u3164\u313d\u3156\u3140 \u3164\u313d\u3156\u3141 \u3164\u313d\u3156\u3142 \u3164\u313d\u3156\u3143 \u3164\u313d\u3156\u3144 \u3164\u313d\u3156\u3145 \u3164\u313d\u3156\u3146 \u3164\u313d\u3156\u3147 \u3164\u313d\u3156\u3148 \u3164\u313d\u3156\u3149 \u3164\u313d\u3156\u314a \u3164\u313d\u3156\u314b \u3164\u313d\u3156\u314c \u3164\u313d\u3156\u314d \u3164\u313d\u3156\u314e \u3164\u313d\u3156\u314f \u3164\u313d\u3156\u3164 ",
-" row ad_c7_: \u3164\u313d\u3157\uca46 \u3164\u313d\u3157\u3131 \u3164\u313d\u3157\u3132 \u3164\u313d\u3157\u3133 \u3164\u313d\u3157\u3134 \u3164\u313d\u3157\u3135 \u3164\u313d\u3157\u3136 \u3164\u313d\u3157\u3137 \u3164\u313d\u3157\u3138 \u3164\u313d\u3157\u3139 \u3164\u313d\u3157\u313a \u3164\u313d\u3157\u313b \u3164\u313d\u3157\u313c \u3164\u313d\u3157\u313d \u3164\u313d\u3157\u313e \u3164\u313d\u3157\u313f \u3164\u313d\u3157\u3140 \u3164\u313d\u3157\u3141 \u3164\u313d\u3157\u3142 \u3164\u313d\u3157\u3143 \u3164\u313d\u3157\u3144 \u3164\u313d\u3157\u3145 \u3164\u313d\u3157\u3146 \u3164\u313d\u3157\u3147 \u3164\u313d\u3157\u3148 \u3164\u313d\u3157\u3149 \u3164\u313d\u3157\u314a \u3164\u313d\u3157\u314b \u3164\u313d\u3157\u314c \u3164\u313d\u3157\u314d \u3164\u313d\u3157\u314e \u3164\u313d\u3157\u314f \u3164\u313d\u3157\u3164 ",
-" row ad_c8_: \u3164\u313d\u3158\uca46 \u3164\u313d\u3158\u3131 \u3164\u313d\u3158\u3132 \u3164\u313d\u3158\u3133 \u3164\u313d\u3158\u3134 \u3164\u313d\u3158\u3135 \u3164\u313d\u3158\u3136 \u3164\u313d\u3158\u3137 \u3164\u313d\u3158\u3138 \u3164\u313d\u3158\u3139 \u3164\u313d\u3158\u313a \u3164\u313d\u3158\u313b \u3164\u313d\u3158\u313c \u3164\u313d\u3158\u313d \u3164\u313d\u3158\u313e \u3164\u313d\u3158\u313f \u3164\u313d\u3158\u3140 \u3164\u313d\u3158\u3141 \u3164\u313d\u3158\u3142 \u3164\u313d\u3158\u3143 \u3164\u313d\u3158\u3144 \u3164\u313d\u3158\u3145 \u3164\u313d\u3158\u3146 \u3164\u313d\u3158\u3147 \u3164\u313d\u3158\u3148 \u3164\u313d\u3158\u3149 \u3164\u313d\u3158\u314a \u3164\u313d\u3158\u314b \u3164\u313d\u3158\u314c \u3164\u313d\u3158\u314d \u3164\u313d\u3158\u314e \u3164\u313d\u3158\u314f \u3164\u313d\u3158\u3164 ",
-" row ad_c9_: \u3164\u313d\u3159\uca46 \u3164\u313d\u3159\u3131 \u3164\u313d\u3159\u3132 \u3164\u313d\u3159\u3133 \u3164\u313d\u3159\u3134 \u3164\u313d\u3159\u3135 \u3164\u313d\u3159\u3136 \u3164\u313d\u3159\u3137 \u3164\u313d\u3159\u3138 \u3164\u313d\u3159\u3139 \u3164\u313d\u3159\u313a \u3164\u313d\u3159\u313b \u3164\u313d\u3159\u313c \u3164\u313d\u3159\u313d \u3164\u313d\u3159\u313e \u3164\u313d\u3159\u313f \u3164\u313d\u3159\u3140 \u3164\u313d\u3159\u3141 \u3164\u313d\u3159\u3142 \u3164\u313d\u3159\u3143 \u3164\u313d\u3159\u3144 \u3164\u313d\u3159\u3145 \u3164\u313d\u3159\u3146 \u3164\u313d\u3159\u3147 \u3164\u313d\u3159\u3148 \u3164\u313d\u3159\u3149 \u3164\u313d\u3159\u314a \u3164\u313d\u3159\u314b \u3164\u313d\u3159\u314c \u3164\u313d\u3159\u314d \u3164\u313d\u3159\u314e \u3164\u313d\u3159\u314f \u3164\u313d\u3159\u3164 ",
-" row ad_ca_: \u3164\u313d\u315a\uca46 \u3164\u313d\u315a\u3131 \u3164\u313d\u315a\u3132 \u3164\u313d\u315a\u3133 \u3164\u313d\u315a\u3134 \u3164\u313d\u315a\u3135 \u3164\u313d\u315a\u3136 \u3164\u313d\u315a\u3137 \u3164\u313d\u315a\u3138 \u3164\u313d\u315a\u3139 \u3164\u313d\u315a\u313a \u3164\u313d\u315a\u313b \u3164\u313d\u315a\u313c \u3164\u313d\u315a\u313d \u3164\u313d\u315a\u313e \u3164\u313d\u315a\u313f \u3164\u313d\u315a\u3140 \u3164\u313d\u315a\u3141 \u3164\u313d\u315a\u3142 \u3164\u313d\u315a\u3143 \u3164\u313d\u315a\u3144 \u3164\u313d\u315a\u3145 \u3164\u313d\u315a\u3146 \u3164\u313d\u315a\u3147 \u3164\u313d\u315a\u3148 \u3164\u313d\u315a\u3149 \u3164\u313d\u315a\u314a \u3164\u313d\u315a\u314b \u3164\u313d\u315a\u314c \u3164\u313d\u315a\u314d \u3164\u313d\u315a\u314e \u3164\u313d\u315a\u314f \u3164\u313d\u315a\u3164 ",
-" row ad_cb_: \u3164\u313d\u315b\uca46 \u3164\u313d\u315b\u3131 \u3164\u313d\u315b\u3132 \u3164\u313d\u315b\u3133 \u3164\u313d\u315b\u3134 \u3164\u313d\u315b\u3135 \u3164\u313d\u315b\u3136 \u3164\u313d\u315b\u3137 \u3164\u313d\u315b\u3138 \u3164\u313d\u315b\u3139 \u3164\u313d\u315b\u313a \u3164\u313d\u315b\u313b \u3164\u313d\u315b\u313c \u3164\u313d\u315b\u313d \u3164\u313d\u315b\u313e \u3164\u313d\u315b\u313f \u3164\u313d\u315b\u3140 \u3164\u313d\u315b\u3141 \u3164\u313d\u315b\u3142 \u3164\u313d\u315b\u3143 \u3164\u313d\u315b\u3144 \u3164\u313d\u315b\u3145 \u3164\u313d\u315b\u3146 \u3164\u313d\u315b\u3147 \u3164\u313d\u315b\u3148 \u3164\u313d\u315b\u3149 \u3164\u313d\u315b\u314a \u3164\u313d\u315b\u314b \u3164\u313d\u315b\u314c \u3164\u313d\u315b\u314d \u3164\u313d\u315b\u314e \u3164\u313d\u315b\u314f \u3164\u313d\u315b\u3164 ",
-" row ad_cc_: \u3164\u313d\u315c\uca46 \u3164\u313d\u315c\u3131 \u3164\u313d\u315c\u3132 \u3164\u313d\u315c\u3133 \u3164\u313d\u315c\u3134 \u3164\u313d\u315c\u3135 \u3164\u313d\u315c\u3136 \u3164\u313d\u315c\u3137 \u3164\u313d\u315c\u3138 \u3164\u313d\u315c\u3139 \u3164\u313d\u315c\u313a \u3164\u313d\u315c\u313b \u3164\u313d\u315c\u313c \u3164\u313d\u315c\u313d \u3164\u313d\u315c\u313e \u3164\u313d\u315c\u313f \u3164\u313d\u315c\u3140 \u3164\u313d\u315c\u3141 \u3164\u313d\u315c\u3142 \u3164\u313d\u315c\u3143 \u3164\u313d\u315c\u3144 \u3164\u313d\u315c\u3145 \u3164\u313d\u315c\u3146 \u3164\u313d\u315c\u3147 \u3164\u313d\u315c\u3148 \u3164\u313d\u315c\u3149 \u3164\u313d\u315c\u314a \u3164\u313d\u315c\u314b \u3164\u313d\u315c\u314c \u3164\u313d\u315c\u314d \u3164\u313d\u315c\u314e \u3164\u313d\u315c\u314f \u3164\u313d\u315c\u3164 ",
-" row ad_cd_: \u3164\u313d\u315d\uca46 \u3164\u313d\u315d\u3131 \u3164\u313d\u315d\u3132 \u3164\u313d\u315d\u3133 \u3164\u313d\u315d\u3134 \u3164\u313d\u315d\u3135 \u3164\u313d\u315d\u3136 \u3164\u313d\u315d\u3137 \u3164\u313d\u315d\u3138 \u3164\u313d\u315d\u3139 \u3164\u313d\u315d\u313a \u3164\u313d\u315d\u313b \u3164\u313d\u315d\u313c \u3164\u313d\u315d\u313d \u3164\u313d\u315d\u313e \u3164\u313d\u315d\u313f \u3164\u313d\u315d\u3140 \u3164\u313d\u315d\u3141 \u3164\u313d\u315d\u3142 \u3164\u313d\u315d\u3143 \u3164\u313d\u315d\u3144 \u3164\u313d\u315d\u3145 \u3164\u313d\u315d\u3146 \u3164\u313d\u315d\u3147 \u3164\u313d\u315d\u3148 \u3164\u313d\u315d\u3149 \u3164\u313d\u315d\u314a \u3164\u313d\u315d\u314b \u3164\u313d\u315d\u314c \u3164\u313d\u315d\u314d \u3164\u313d\u315d\u314e \u3164\u313d\u315d\u314f \u3164\u313d\u315d\u3164 ",
-" row ad_ce_: \u3164\u313d\u315e\uca46 \u3164\u313d\u315e\u3131 \u3164\u313d\u315e\u3132 \u3164\u313d\u315e\u3133 \u3164\u313d\u315e\u3134 \u3164\u313d\u315e\u3135 \u3164\u313d\u315e\u3136 \u3164\u313d\u315e\u3137 \u3164\u313d\u315e\u3138 \u3164\u313d\u315e\u3139 \u3164\u313d\u315e\u313a \u3164\u313d\u315e\u313b \u3164\u313d\u315e\u313c \u3164\u313d\u315e\u313d \u3164\u313d\u315e\u313e \u3164\u313d\u315e\u313f \u3164\u313d\u315e\u3140 \u3164\u313d\u315e\u3141 \u3164\u313d\u315e\u3142 \u3164\u313d\u315e\u3143 \u3164\u313d\u315e\u3144 \u3164\u313d\u315e\u3145 \u3164\u313d\u315e\u3146 \u3164\u313d\u315e\u3147 \u3164\u313d\u315e\u3148 \u3164\u313d\u315e\u3149 \u3164\u313d\u315e\u314a \u3164\u313d\u315e\u314b \u3164\u313d\u315e\u314c \u3164\u313d\u315e\u314d \u3164\u313d\u315e\u314e \u3164\u313d\u315e\u314f \u3164\u313d\u315e\u3164 ",
-" row ad_cf_: \u3164\u313d\u315f\uca46 \u3164\u313d\u315f\u3131 \u3164\u313d\u315f\u3132 \u3164\u313d\u315f\u3133 \u3164\u313d\u315f\u3134 \u3164\u313d\u315f\u3135 \u3164\u313d\u315f\u3136 \u3164\u313d\u315f\u3137 \u3164\u313d\u315f\u3138 \u3164\u313d\u315f\u3139 \u3164\u313d\u315f\u313a \u3164\u313d\u315f\u313b \u3164\u313d\u315f\u313c \u3164\u313d\u315f\u313d \u3164\u313d\u315f\u313e \u3164\u313d\u315f\u313f \u3164\u313d\u315f\u3140 \u3164\u313d\u315f\u3141 \u3164\u313d\u315f\u3142 \u3164\u313d\u315f\u3143 \u3164\u313d\u315f\u3144 \u3164\u313d\u315f\u3145 \u3164\u313d\u315f\u3146 \u3164\u313d\u315f\u3147 \u3164\u313d\u315f\u3148 \u3164\u313d\u315f\u3149 \u3164\u313d\u315f\u314a \u3164\u313d\u315f\u314b \u3164\u313d\u315f\u314c \u3164\u313d\u315f\u314d \u3164\u313d\u315f\u314e \u3164\u313d\u315f\u314f \u3164\u313d\u315f\u3164 ",
-" row ad_d0_: \u3164\u313d\u3160\uca46 \u3164\u313d\u3160\u3131 \u3164\u313d\u3160\u3132 \u3164\u313d\u3160\u3133 \u3164\u313d\u3160\u3134 \u3164\u313d\u3160\u3135 \u3164\u313d\u3160\u3136 \u3164\u313d\u3160\u3137 \u3164\u313d\u3160\u3138 \u3164\u313d\u3160\u3139 \u3164\u313d\u3160\u313a \u3164\u313d\u3160\u313b \u3164\u313d\u3160\u313c \u3164\u313d\u3160\u313d \u3164\u313d\u3160\u313e \u3164\u313d\u3160\u313f \u3164\u313d\u3160\u3140 \u3164\u313d\u3160\u3141 \u3164\u313d\u3160\u3142 \u3164\u313d\u3160\u3143 \u3164\u313d\u3160\u3144 \u3164\u313d\u3160\u3145 \u3164\u313d\u3160\u3146 \u3164\u313d\u3160\u3147 \u3164\u313d\u3160\u3148 \u3164\u313d\u3160\u3149 \u3164\u313d\u3160\u314a \u3164\u313d\u3160\u314b \u3164\u313d\u3160\u314c \u3164\u313d\u3160\u314d \u3164\u313d\u3160\u314e \u3164\u313d\u3160\u314f \u3164\u313d\u3160\u3164 ",
-" row ad_d1_: \u3164\u313d\u3161\uca46 \u3164\u313d\u3161\u3131 \u3164\u313d\u3161\u3132 \u3164\u313d\u3161\u3133 \u3164\u313d\u3161\u3134 \u3164\u313d\u3161\u3135 \u3164\u313d\u3161\u3136 \u3164\u313d\u3161\u3137 \u3164\u313d\u3161\u3138 \u3164\u313d\u3161\u3139 \u3164\u313d\u3161\u313a \u3164\u313d\u3161\u313b \u3164\u313d\u3161\u313c \u3164\u313d\u3161\u313d \u3164\u313d\u3161\u313e \u3164\u313d\u3161\u313f \u3164\u313d\u3161\u3140 \u3164\u313d\u3161\u3141 \u3164\u313d\u3161\u3142 \u3164\u313d\u3161\u3143 \u3164\u313d\u3161\u3144 \u3164\u313d\u3161\u3145 \u3164\u313d\u3161\u3146 \u3164\u313d\u3161\u3147 \u3164\u313d\u3161\u3148 \u3164\u313d\u3161\u3149 \u3164\u313d\u3161\u314a \u3164\u313d\u3161\u314b \u3164\u313d\u3161\u314c \u3164\u313d\u3161\u314d \u3164\u313d\u3161\u314e \u3164\u313d\u3161\u314f \u3164\u313d\u3161\u3164 ",
-" row ad_d2_: \u3164\u313d\u3162\uca46 \u3164\u313d\u3162\u3131 \u3164\u313d\u3162\u3132 \u3164\u313d\u3162\u3133 \u3164\u313d\u3162\u3134 \u3164\u313d\u3162\u3135 \u3164\u313d\u3162\u3136 \u3164\u313d\u3162\u3137 \u3164\u313d\u3162\u3138 \u3164\u313d\u3162\u3139 \u3164\u313d\u3162\u313a \u3164\u313d\u3162\u313b \u3164\u313d\u3162\u313c \u3164\u313d\u3162\u313d \u3164\u313d\u3162\u313e \u3164\u313d\u3162\u313f \u3164\u313d\u3162\u3140 \u3164\u313d\u3162\u3141 \u3164\u313d\u3162\u3142 \u3164\u313d\u3162\u3143 \u3164\u313d\u3162\u3144 \u3164\u313d\u3162\u3145 \u3164\u313d\u3162\u3146 \u3164\u313d\u3162\u3147 \u3164\u313d\u3162\u3148 \u3164\u313d\u3162\u3149 \u3164\u313d\u3162\u314a \u3164\u313d\u3162\u314b \u3164\u313d\u3162\u314c \u3164\u313d\u3162\u314d \u3164\u313d\u3162\u314e \u3164\u313d\u3162\u314f \u3164\u313d\u3162\u3164 ",
-" row ad_d3_: \u3164\u313d\u3163\uca46 \u3164\u313d\u3163\u3131 \u3164\u313d\u3163\u3132 \u3164\u313d\u3163\u3133 \u3164\u313d\u3163\u3134 \u3164\u313d\u3163\u3135 \u3164\u313d\u3163\u3136 \u3164\u313d\u3163\u3137 \u3164\u313d\u3163\u3138 \u3164\u313d\u3163\u3139 \u3164\u313d\u3163\u313a \u3164\u313d\u3163\u313b \u3164\u313d\u3163\u313c \u3164\u313d\u3163\u313d \u3164\u313d\u3163\u313e \u3164\u313d\u3163\u313f \u3164\u313d\u3163\u3140 \u3164\u313d\u3163\u3141 \u3164\u313d\u3163\u3142 \u3164\u313d\u3163\u3143 \u3164\u313d\u3163\u3144 \u3164\u313d\u3163\u3145 \u3164\u313d\u3163\u3146 \u3164\u313d\u3163\u3147 \u3164\u313d\u3163\u3148 \u3164\u313d\u3163\u3149 \u3164\u313d\u3163\u314a \u3164\u313d\u3163\u314b \u3164\u313d\u3163\u314c \u3164\u313d\u3163\u314d \u3164\u313d\u3163\u314e \u3164\u313d\u3163\u314f \u3164\u313d\u3163\u3164 ",
-" row ad_d4_: \u3164\u313d\u3164\uca46 \u3164\u313d\u3164\u3131 \u3164\u313d\u3164\u3132 \u3164\u313d\u3164\u3133 \u3164\u313d\u3164\u3134 \u3164\u313d\u3164\u3135 \u3164\u313d\u3164\u3136 \u3164\u313d\u3164\u3137 \u3164\u313d\u3164\u3138 \u3164\u313d\u3164\u3139 \u3164\u313d\u3164\u313a \u3164\u313d\u3164\u313b \u3164\u313d\u3164\u313c \u3164\u313d\u3164\u313d \u3164\u313d\u3164\u313e \u3164\u313d\u3164\u313f \u3164\u313d\u3164\u3140 \u3164\u313d\u3164\u3141 \u3164\u313d\u3164\u3142 \u3164\u313d\u3164\u3143 \u3164\u313d\u3164\u3144 \u3164\u313d\u3164\u3145 \u3164\u313d\u3164\u3146 \u3164\u313d\u3164\u3147 \u3164\u313d\u3164\u3148 \u3164\u313d\u3164\u3149 \u3164\u313d\u3164\u314a \u3164\u313d\u3164\u314b \u3164\u313d\u3164\u314c \u3164\u313d\u3164\u314d \u3164\u313d\u3164\u314e \u3164\u313d\u3164\u314f \u3164\u313d\u3164\u3164 ",
-" row ae_be_: \u3164\u313e\u314e\uca46 \u3164\u313e\u314e\u3131 \u3164\u313e\u314e\u3132 \u3164\u313e\u314e\u3133 \u3164\u313e\u314e\u3134 \u3164\u313e\u314e\u3135 \u3164\u313e\u314e\u3136 \u3164\u313e\u314e\u3137 \u3164\u313e\u314e\u3138 \u3164\u313e\u314e\u3139 \u3164\u313e\u314e\u313a \u3164\u313e\u314e\u313b \u3164\u313e\u314e\u313c \u3164\u313e\u314e\u313d \u3164\u313e\u314e\u313e \u3164\u313e\u314e\u313f \u3164\u313e\u314e\u3140 \u3164\u313e\u314e\u3141 \u3164\u313e\u314e\u3142 \u3164\u313e\u314e\u3143 \u3164\u313e\u314e\u3144 \u3164\u313e\u314e\u3145 \u3164\u313e\u314e\u3146 \u3164\u313e\u314e\u3147 \u3164\u313e\u314e\u3148 \u3164\u313e\u314e\u3149 \u3164\u313e\u314e\u314a \u3164\u313e\u314e\u314b \u3164\u313e\u314e\u314c \u3164\u313e\u314e\u314d \u3164\u313e\u314e\u314e \u3164\u313e\u314e\u314f \u3164\u313e\u314e\u3164 ",
-" row ae_bf_: \u3164\u313e\u314f\uca46 \u3164\u313e\u314f\u3131 \u3164\u313e\u314f\u3132 \u3164\u313e\u314f\u3133 \u3164\u313e\u314f\u3134 \u3164\u313e\u314f\u3135 \u3164\u313e\u314f\u3136 \u3164\u313e\u314f\u3137 \u3164\u313e\u314f\u3138 \u3164\u313e\u314f\u3139 \u3164\u313e\u314f\u313a \u3164\u313e\u314f\u313b \u3164\u313e\u314f\u313c \u3164\u313e\u314f\u313d \u3164\u313e\u314f\u313e \u3164\u313e\u314f\u313f \u3164\u313e\u314f\u3140 \u3164\u313e\u314f\u3141 \u3164\u313e\u314f\u3142 \u3164\u313e\u314f\u3143 \u3164\u313e\u314f\u3144 \u3164\u313e\u314f\u3145 \u3164\u313e\u314f\u3146 \u3164\u313e\u314f\u3147 \u3164\u313e\u314f\u3148 \u3164\u313e\u314f\u3149 \u3164\u313e\u314f\u314a \u3164\u313e\u314f\u314b \u3164\u313e\u314f\u314c \u3164\u313e\u314f\u314d \u3164\u313e\u314f\u314e \u3164\u313e\u314f\u314f \u3164\u313e\u314f\u3164 ",
-" row ae_c0_: \u3164\u313e\u3150\uca46 \u3164\u313e\u3150\u3131 \u3164\u313e\u3150\u3132 \u3164\u313e\u3150\u3133 \u3164\u313e\u3150\u3134 \u3164\u313e\u3150\u3135 \u3164\u313e\u3150\u3136 \u3164\u313e\u3150\u3137 \u3164\u313e\u3150\u3138 \u3164\u313e\u3150\u3139 \u3164\u313e\u3150\u313a \u3164\u313e\u3150\u313b \u3164\u313e\u3150\u313c \u3164\u313e\u3150\u313d \u3164\u313e\u3150\u313e \u3164\u313e\u3150\u313f \u3164\u313e\u3150\u3140 \u3164\u313e\u3150\u3141 \u3164\u313e\u3150\u3142 \u3164\u313e\u3150\u3143 \u3164\u313e\u3150\u3144 \u3164\u313e\u3150\u3145 \u3164\u313e\u3150\u3146 \u3164\u313e\u3150\u3147 \u3164\u313e\u3150\u3148 \u3164\u313e\u3150\u3149 \u3164\u313e\u3150\u314a \u3164\u313e\u3150\u314b \u3164\u313e\u3150\u314c \u3164\u313e\u3150\u314d \u3164\u313e\u3150\u314e \u3164\u313e\u3150\u314f \u3164\u313e\u3150\u3164 ",
-" row ae_c1_: \u3164\u313e\u3151\uca46 \u3164\u313e\u3151\u3131 \u3164\u313e\u3151\u3132 \u3164\u313e\u3151\u3133 \u3164\u313e\u3151\u3134 \u3164\u313e\u3151\u3135 \u3164\u313e\u3151\u3136 \u3164\u313e\u3151\u3137 \u3164\u313e\u3151\u3138 \u3164\u313e\u3151\u3139 \u3164\u313e\u3151\u313a \u3164\u313e\u3151\u313b \u3164\u313e\u3151\u313c \u3164\u313e\u3151\u313d \u3164\u313e\u3151\u313e \u3164\u313e\u3151\u313f \u3164\u313e\u3151\u3140 \u3164\u313e\u3151\u3141 \u3164\u313e\u3151\u3142 \u3164\u313e\u3151\u3143 \u3164\u313e\u3151\u3144 \u3164\u313e\u3151\u3145 \u3164\u313e\u3151\u3146 \u3164\u313e\u3151\u3147 \u3164\u313e\u3151\u3148 \u3164\u313e\u3151\u3149 \u3164\u313e\u3151\u314a \u3164\u313e\u3151\u314b \u3164\u313e\u3151\u314c \u3164\u313e\u3151\u314d \u3164\u313e\u3151\u314e \u3164\u313e\u3151\u314f \u3164\u313e\u3151\u3164 ",
-" row ae_c2_: \u3164\u313e\u3152\uca46 \u3164\u313e\u3152\u3131 \u3164\u313e\u3152\u3132 \u3164\u313e\u3152\u3133 \u3164\u313e\u3152\u3134 \u3164\u313e\u3152\u3135 \u3164\u313e\u3152\u3136 \u3164\u313e\u3152\u3137 \u3164\u313e\u3152\u3138 \u3164\u313e\u3152\u3139 \u3164\u313e\u3152\u313a \u3164\u313e\u3152\u313b \u3164\u313e\u3152\u313c \u3164\u313e\u3152\u313d \u3164\u313e\u3152\u313e \u3164\u313e\u3152\u313f \u3164\u313e\u3152\u3140 \u3164\u313e\u3152\u3141 \u3164\u313e\u3152\u3142 \u3164\u313e\u3152\u3143 \u3164\u313e\u3152\u3144 \u3164\u313e\u3152\u3145 \u3164\u313e\u3152\u3146 \u3164\u313e\u3152\u3147 \u3164\u313e\u3152\u3148 \u3164\u313e\u3152\u3149 \u3164\u313e\u3152\u314a \u3164\u313e\u3152\u314b \u3164\u313e\u3152\u314c \u3164\u313e\u3152\u314d \u3164\u313e\u3152\u314e \u3164\u313e\u3152\u314f \u3164\u313e\u3152\u3164 ",
-" row ae_c3_: \u3164\u313e\u3153\uca46 \u3164\u313e\u3153\u3131 \u3164\u313e\u3153\u3132 \u3164\u313e\u3153\u3133 \u3164\u313e\u3153\u3134 \u3164\u313e\u3153\u3135 \u3164\u313e\u3153\u3136 \u3164\u313e\u3153\u3137 \u3164\u313e\u3153\u3138 \u3164\u313e\u3153\u3139 \u3164\u313e\u3153\u313a \u3164\u313e\u3153\u313b \u3164\u313e\u3153\u313c \u3164\u313e\u3153\u313d \u3164\u313e\u3153\u313e \u3164\u313e\u3153\u313f \u3164\u313e\u3153\u3140 \u3164\u313e\u3153\u3141 \u3164\u313e\u3153\u3142 \u3164\u313e\u3153\u3143 \u3164\u313e\u3153\u3144 \u3164\u313e\u3153\u3145 \u3164\u313e\u3153\u3146 \u3164\u313e\u3153\u3147 \u3164\u313e\u3153\u3148 \u3164\u313e\u3153\u3149 \u3164\u313e\u3153\u314a \u3164\u313e\u3153\u314b \u3164\u313e\u3153\u314c \u3164\u313e\u3153\u314d \u3164\u313e\u3153\u314e \u3164\u313e\u3153\u314f \u3164\u313e\u3153\u3164 ",
-" row ae_c4_: \u3164\u313e\u3154\uca46 \u3164\u313e\u3154\u3131 \u3164\u313e\u3154\u3132 \u3164\u313e\u3154\u3133 \u3164\u313e\u3154\u3134 \u3164\u313e\u3154\u3135 \u3164\u313e\u3154\u3136 \u3164\u313e\u3154\u3137 \u3164\u313e\u3154\u3138 \u3164\u313e\u3154\u3139 \u3164\u313e\u3154\u313a \u3164\u313e\u3154\u313b \u3164\u313e\u3154\u313c \u3164\u313e\u3154\u313d \u3164\u313e\u3154\u313e \u3164\u313e\u3154\u313f \u3164\u313e\u3154\u3140 \u3164\u313e\u3154\u3141 \u3164\u313e\u3154\u3142 \u3164\u313e\u3154\u3143 \u3164\u313e\u3154\u3144 \u3164\u313e\u3154\u3145 \u3164\u313e\u3154\u3146 \u3164\u313e\u3154\u3147 \u3164\u313e\u3154\u3148 \u3164\u313e\u3154\u3149 \u3164\u313e\u3154\u314a \u3164\u313e\u3154\u314b \u3164\u313e\u3154\u314c \u3164\u313e\u3154\u314d \u3164\u313e\u3154\u314e \u3164\u313e\u3154\u314f \u3164\u313e\u3154\u3164 ",
-" row ae_c5_: \u3164\u313e\u3155\uca46 \u3164\u313e\u3155\u3131 \u3164\u313e\u3155\u3132 \u3164\u313e\u3155\u3133 \u3164\u313e\u3155\u3134 \u3164\u313e\u3155\u3135 \u3164\u313e\u3155\u3136 \u3164\u313e\u3155\u3137 \u3164\u313e\u3155\u3138 \u3164\u313e\u3155\u3139 \u3164\u313e\u3155\u313a \u3164\u313e\u3155\u313b \u3164\u313e\u3155\u313c \u3164\u313e\u3155\u313d \u3164\u313e\u3155\u313e \u3164\u313e\u3155\u313f \u3164\u313e\u3155\u3140 \u3164\u313e\u3155\u3141 \u3164\u313e\u3155\u3142 \u3164\u313e\u3155\u3143 \u3164\u313e\u3155\u3144 \u3164\u313e\u3155\u3145 \u3164\u313e\u3155\u3146 \u3164\u313e\u3155\u3147 \u3164\u313e\u3155\u3148 \u3164\u313e\u3155\u3149 \u3164\u313e\u3155\u314a \u3164\u313e\u3155\u314b \u3164\u313e\u3155\u314c \u3164\u313e\u3155\u314d \u3164\u313e\u3155\u314e \u3164\u313e\u3155\u314f \u3164\u313e\u3155\u3164 ",
-" row ae_c6_: \u3164\u313e\u3156\uca46 \u3164\u313e\u3156\u3131 \u3164\u313e\u3156\u3132 \u3164\u313e\u3156\u3133 \u3164\u313e\u3156\u3134 \u3164\u313e\u3156\u3135 \u3164\u313e\u3156\u3136 \u3164\u313e\u3156\u3137 \u3164\u313e\u3156\u3138 \u3164\u313e\u3156\u3139 \u3164\u313e\u3156\u313a \u3164\u313e\u3156\u313b \u3164\u313e\u3156\u313c \u3164\u313e\u3156\u313d \u3164\u313e\u3156\u313e \u3164\u313e\u3156\u313f \u3164\u313e\u3156\u3140 \u3164\u313e\u3156\u3141 \u3164\u313e\u3156\u3142 \u3164\u313e\u3156\u3143 \u3164\u313e\u3156\u3144 \u3164\u313e\u3156\u3145 \u3164\u313e\u3156\u3146 \u3164\u313e\u3156\u3147 \u3164\u313e\u3156\u3148 \u3164\u313e\u3156\u3149 \u3164\u313e\u3156\u314a \u3164\u313e\u3156\u314b \u3164\u313e\u3156\u314c \u3164\u313e\u3156\u314d \u3164\u313e\u3156\u314e \u3164\u313e\u3156\u314f \u3164\u313e\u3156\u3164 ",
-" row ae_c7_: \u3164\u313e\u3157\uca46 \u3164\u313e\u3157\u3131 \u3164\u313e\u3157\u3132 \u3164\u313e\u3157\u3133 \u3164\u313e\u3157\u3134 \u3164\u313e\u3157\u3135 \u3164\u313e\u3157\u3136 \u3164\u313e\u3157\u3137 \u3164\u313e\u3157\u3138 \u3164\u313e\u3157\u3139 \u3164\u313e\u3157\u313a \u3164\u313e\u3157\u313b \u3164\u313e\u3157\u313c \u3164\u313e\u3157\u313d \u3164\u313e\u3157\u313e \u3164\u313e\u3157\u313f \u3164\u313e\u3157\u3140 \u3164\u313e\u3157\u3141 \u3164\u313e\u3157\u3142 \u3164\u313e\u3157\u3143 \u3164\u313e\u3157\u3144 \u3164\u313e\u3157\u3145 \u3164\u313e\u3157\u3146 \u3164\u313e\u3157\u3147 \u3164\u313e\u3157\u3148 \u3164\u313e\u3157\u3149 \u3164\u313e\u3157\u314a \u3164\u313e\u3157\u314b \u3164\u313e\u3157\u314c \u3164\u313e\u3157\u314d \u3164\u313e\u3157\u314e \u3164\u313e\u3157\u314f \u3164\u313e\u3157\u3164 ",
-" row ae_c8_: \u3164\u313e\u3158\uca46 \u3164\u313e\u3158\u3131 \u3164\u313e\u3158\u3132 \u3164\u313e\u3158\u3133 \u3164\u313e\u3158\u3134 \u3164\u313e\u3158\u3135 \u3164\u313e\u3158\u3136 \u3164\u313e\u3158\u3137 \u3164\u313e\u3158\u3138 \u3164\u313e\u3158\u3139 \u3164\u313e\u3158\u313a \u3164\u313e\u3158\u313b \u3164\u313e\u3158\u313c \u3164\u313e\u3158\u313d \u3164\u313e\u3158\u313e \u3164\u313e\u3158\u313f \u3164\u313e\u3158\u3140 \u3164\u313e\u3158\u3141 \u3164\u313e\u3158\u3142 \u3164\u313e\u3158\u3143 \u3164\u313e\u3158\u3144 \u3164\u313e\u3158\u3145 \u3164\u313e\u3158\u3146 \u3164\u313e\u3158\u3147 \u3164\u313e\u3158\u3148 \u3164\u313e\u3158\u3149 \u3164\u313e\u3158\u314a \u3164\u313e\u3158\u314b \u3164\u313e\u3158\u314c \u3164\u313e\u3158\u314d \u3164\u313e\u3158\u314e \u3164\u313e\u3158\u314f \u3164\u313e\u3158\u3164 ",
-" row ae_c9_: \u3164\u313e\u3159\uca46 \u3164\u313e\u3159\u3131 \u3164\u313e\u3159\u3132 \u3164\u313e\u3159\u3133 \u3164\u313e\u3159\u3134 \u3164\u313e\u3159\u3135 \u3164\u313e\u3159\u3136 \u3164\u313e\u3159\u3137 \u3164\u313e\u3159\u3138 \u3164\u313e\u3159\u3139 \u3164\u313e\u3159\u313a \u3164\u313e\u3159\u313b \u3164\u313e\u3159\u313c \u3164\u313e\u3159\u313d \u3164\u313e\u3159\u313e \u3164\u313e\u3159\u313f \u3164\u313e\u3159\u3140 \u3164\u313e\u3159\u3141 \u3164\u313e\u3159\u3142 \u3164\u313e\u3159\u3143 \u3164\u313e\u3159\u3144 \u3164\u313e\u3159\u3145 \u3164\u313e\u3159\u3146 \u3164\u313e\u3159\u3147 \u3164\u313e\u3159\u3148 \u3164\u313e\u3159\u3149 \u3164\u313e\u3159\u314a \u3164\u313e\u3159\u314b \u3164\u313e\u3159\u314c \u3164\u313e\u3159\u314d \u3164\u313e\u3159\u314e \u3164\u313e\u3159\u314f \u3164\u313e\u3159\u3164 ",
-" row ae_ca_: \u3164\u313e\u315a\uca46 \u3164\u313e\u315a\u3131 \u3164\u313e\u315a\u3132 \u3164\u313e\u315a\u3133 \u3164\u313e\u315a\u3134 \u3164\u313e\u315a\u3135 \u3164\u313e\u315a\u3136 \u3164\u313e\u315a\u3137 \u3164\u313e\u315a\u3138 \u3164\u313e\u315a\u3139 \u3164\u313e\u315a\u313a \u3164\u313e\u315a\u313b \u3164\u313e\u315a\u313c \u3164\u313e\u315a\u313d \u3164\u313e\u315a\u313e \u3164\u313e\u315a\u313f \u3164\u313e\u315a\u3140 \u3164\u313e\u315a\u3141 \u3164\u313e\u315a\u3142 \u3164\u313e\u315a\u3143 \u3164\u313e\u315a\u3144 \u3164\u313e\u315a\u3145 \u3164\u313e\u315a\u3146 \u3164\u313e\u315a\u3147 \u3164\u313e\u315a\u3148 \u3164\u313e\u315a\u3149 \u3164\u313e\u315a\u314a \u3164\u313e\u315a\u314b \u3164\u313e\u315a\u314c \u3164\u313e\u315a\u314d \u3164\u313e\u315a\u314e \u3164\u313e\u315a\u314f \u3164\u313e\u315a\u3164 ",
-" row ae_cb_: \u3164\u313e\u315b\uca46 \u3164\u313e\u315b\u3131 \u3164\u313e\u315b\u3132 \u3164\u313e\u315b\u3133 \u3164\u313e\u315b\u3134 \u3164\u313e\u315b\u3135 \u3164\u313e\u315b\u3136 \u3164\u313e\u315b\u3137 \u3164\u313e\u315b\u3138 \u3164\u313e\u315b\u3139 \u3164\u313e\u315b\u313a \u3164\u313e\u315b\u313b \u3164\u313e\u315b\u313c \u3164\u313e\u315b\u313d \u3164\u313e\u315b\u313e \u3164\u313e\u315b\u313f \u3164\u313e\u315b\u3140 \u3164\u313e\u315b\u3141 \u3164\u313e\u315b\u3142 \u3164\u313e\u315b\u3143 \u3164\u313e\u315b\u3144 \u3164\u313e\u315b\u3145 \u3164\u313e\u315b\u3146 \u3164\u313e\u315b\u3147 \u3164\u313e\u315b\u3148 \u3164\u313e\u315b\u3149 \u3164\u313e\u315b\u314a \u3164\u313e\u315b\u314b \u3164\u313e\u315b\u314c \u3164\u313e\u315b\u314d \u3164\u313e\u315b\u314e \u3164\u313e\u315b\u314f \u3164\u313e\u315b\u3164 ",
-" row ae_cc_: \u3164\u313e\u315c\uca46 \u3164\u313e\u315c\u3131 \u3164\u313e\u315c\u3132 \u3164\u313e\u315c\u3133 \u3164\u313e\u315c\u3134 \u3164\u313e\u315c\u3135 \u3164\u313e\u315c\u3136 \u3164\u313e\u315c\u3137 \u3164\u313e\u315c\u3138 \u3164\u313e\u315c\u3139 \u3164\u313e\u315c\u313a \u3164\u313e\u315c\u313b \u3164\u313e\u315c\u313c \u3164\u313e\u315c\u313d \u3164\u313e\u315c\u313e \u3164\u313e\u315c\u313f \u3164\u313e\u315c\u3140 \u3164\u313e\u315c\u3141 \u3164\u313e\u315c\u3142 \u3164\u313e\u315c\u3143 \u3164\u313e\u315c\u3144 \u3164\u313e\u315c\u3145 \u3164\u313e\u315c\u3146 \u3164\u313e\u315c\u3147 \u3164\u313e\u315c\u3148 \u3164\u313e\u315c\u3149 \u3164\u313e\u315c\u314a \u3164\u313e\u315c\u314b \u3164\u313e\u315c\u314c \u3164\u313e\u315c\u314d \u3164\u313e\u315c\u314e \u3164\u313e\u315c\u314f \u3164\u313e\u315c\u3164 ",
-" row ae_cd_: \u3164\u313e\u315d\uca46 \u3164\u313e\u315d\u3131 \u3164\u313e\u315d\u3132 \u3164\u313e\u315d\u3133 \u3164\u313e\u315d\u3134 \u3164\u313e\u315d\u3135 \u3164\u313e\u315d\u3136 \u3164\u313e\u315d\u3137 \u3164\u313e\u315d\u3138 \u3164\u313e\u315d\u3139 \u3164\u313e\u315d\u313a \u3164\u313e\u315d\u313b \u3164\u313e\u315d\u313c \u3164\u313e\u315d\u313d \u3164\u313e\u315d\u313e \u3164\u313e\u315d\u313f \u3164\u313e\u315d\u3140 \u3164\u313e\u315d\u3141 \u3164\u313e\u315d\u3142 \u3164\u313e\u315d\u3143 \u3164\u313e\u315d\u3144 \u3164\u313e\u315d\u3145 \u3164\u313e\u315d\u3146 \u3164\u313e\u315d\u3147 \u3164\u313e\u315d\u3148 \u3164\u313e\u315d\u3149 \u3164\u313e\u315d\u314a \u3164\u313e\u315d\u314b \u3164\u313e\u315d\u314c \u3164\u313e\u315d\u314d \u3164\u313e\u315d\u314e \u3164\u313e\u315d\u314f \u3164\u313e\u315d\u3164 ",
-" row ae_ce_: \u3164\u313e\u315e\uca46 \u3164\u313e\u315e\u3131 \u3164\u313e\u315e\u3132 \u3164\u313e\u315e\u3133 \u3164\u313e\u315e\u3134 \u3164\u313e\u315e\u3135 \u3164\u313e\u315e\u3136 \u3164\u313e\u315e\u3137 \u3164\u313e\u315e\u3138 \u3164\u313e\u315e\u3139 \u3164\u313e\u315e\u313a \u3164\u313e\u315e\u313b \u3164\u313e\u315e\u313c \u3164\u313e\u315e\u313d \u3164\u313e\u315e\u313e \u3164\u313e\u315e\u313f \u3164\u313e\u315e\u3140 \u3164\u313e\u315e\u3141 \u3164\u313e\u315e\u3142 \u3164\u313e\u315e\u3143 \u3164\u313e\u315e\u3144 \u3164\u313e\u315e\u3145 \u3164\u313e\u315e\u3146 \u3164\u313e\u315e\u3147 \u3164\u313e\u315e\u3148 \u3164\u313e\u315e\u3149 \u3164\u313e\u315e\u314a \u3164\u313e\u315e\u314b \u3164\u313e\u315e\u314c \u3164\u313e\u315e\u314d \u3164\u313e\u315e\u314e \u3164\u313e\u315e\u314f \u3164\u313e\u315e\u3164 ",
-" row ae_cf_: \u3164\u313e\u315f\uca46 \u3164\u313e\u315f\u3131 \u3164\u313e\u315f\u3132 \u3164\u313e\u315f\u3133 \u3164\u313e\u315f\u3134 \u3164\u313e\u315f\u3135 \u3164\u313e\u315f\u3136 \u3164\u313e\u315f\u3137 \u3164\u313e\u315f\u3138 \u3164\u313e\u315f\u3139 \u3164\u313e\u315f\u313a \u3164\u313e\u315f\u313b \u3164\u313e\u315f\u313c \u3164\u313e\u315f\u313d \u3164\u313e\u315f\u313e \u3164\u313e\u315f\u313f \u3164\u313e\u315f\u3140 \u3164\u313e\u315f\u3141 \u3164\u313e\u315f\u3142 \u3164\u313e\u315f\u3143 \u3164\u313e\u315f\u3144 \u3164\u313e\u315f\u3145 \u3164\u313e\u315f\u3146 \u3164\u313e\u315f\u3147 \u3164\u313e\u315f\u3148 \u3164\u313e\u315f\u3149 \u3164\u313e\u315f\u314a \u3164\u313e\u315f\u314b \u3164\u313e\u315f\u314c \u3164\u313e\u315f\u314d \u3164\u313e\u315f\u314e \u3164\u313e\u315f\u314f \u3164\u313e\u315f\u3164 ",
-" row ae_d0_: \u3164\u313e\u3160\uca46 \u3164\u313e\u3160\u3131 \u3164\u313e\u3160\u3132 \u3164\u313e\u3160\u3133 \u3164\u313e\u3160\u3134 \u3164\u313e\u3160\u3135 \u3164\u313e\u3160\u3136 \u3164\u313e\u3160\u3137 \u3164\u313e\u3160\u3138 \u3164\u313e\u3160\u3139 \u3164\u313e\u3160\u313a \u3164\u313e\u3160\u313b \u3164\u313e\u3160\u313c \u3164\u313e\u3160\u313d \u3164\u313e\u3160\u313e \u3164\u313e\u3160\u313f \u3164\u313e\u3160\u3140 \u3164\u313e\u3160\u3141 \u3164\u313e\u3160\u3142 \u3164\u313e\u3160\u3143 \u3164\u313e\u3160\u3144 \u3164\u313e\u3160\u3145 \u3164\u313e\u3160\u3146 \u3164\u313e\u3160\u3147 \u3164\u313e\u3160\u3148 \u3164\u313e\u3160\u3149 \u3164\u313e\u3160\u314a \u3164\u313e\u3160\u314b \u3164\u313e\u3160\u314c \u3164\u313e\u3160\u314d \u3164\u313e\u3160\u314e \u3164\u313e\u3160\u314f \u3164\u313e\u3160\u3164 ",
-" row ae_d1_: \u3164\u313e\u3161\uca46 \u3164\u313e\u3161\u3131 \u3164\u313e\u3161\u3132 \u3164\u313e\u3161\u3133 \u3164\u313e\u3161\u3134 \u3164\u313e\u3161\u3135 \u3164\u313e\u3161\u3136 \u3164\u313e\u3161\u3137 \u3164\u313e\u3161\u3138 \u3164\u313e\u3161\u3139 \u3164\u313e\u3161\u313a \u3164\u313e\u3161\u313b \u3164\u313e\u3161\u313c \u3164\u313e\u3161\u313d \u3164\u313e\u3161\u313e \u3164\u313e\u3161\u313f \u3164\u313e\u3161\u3140 \u3164\u313e\u3161\u3141 \u3164\u313e\u3161\u3142 \u3164\u313e\u3161\u3143 \u3164\u313e\u3161\u3144 \u3164\u313e\u3161\u3145 \u3164\u313e\u3161\u3146 \u3164\u313e\u3161\u3147 \u3164\u313e\u3161\u3148 \u3164\u313e\u3161\u3149 \u3164\u313e\u3161\u314a \u3164\u313e\u3161\u314b \u3164\u313e\u3161\u314c \u3164\u313e\u3161\u314d \u3164\u313e\u3161\u314e \u3164\u313e\u3161\u314f \u3164\u313e\u3161\u3164 ",
-" row ae_d2_: \u3164\u313e\u3162\uca46 \u3164\u313e\u3162\u3131 \u3164\u313e\u3162\u3132 \u3164\u313e\u3162\u3133 \u3164\u313e\u3162\u3134 \u3164\u313e\u3162\u3135 \u3164\u313e\u3162\u3136 \u3164\u313e\u3162\u3137 \u3164\u313e\u3162\u3138 \u3164\u313e\u3162\u3139 \u3164\u313e\u3162\u313a \u3164\u313e\u3162\u313b \u3164\u313e\u3162\u313c \u3164\u313e\u3162\u313d \u3164\u313e\u3162\u313e \u3164\u313e\u3162\u313f \u3164\u313e\u3162\u3140 \u3164\u313e\u3162\u3141 \u3164\u313e\u3162\u3142 \u3164\u313e\u3162\u3143 \u3164\u313e\u3162\u3144 \u3164\u313e\u3162\u3145 \u3164\u313e\u3162\u3146 \u3164\u313e\u3162\u3147 \u3164\u313e\u3162\u3148 \u3164\u313e\u3162\u3149 \u3164\u313e\u3162\u314a \u3164\u313e\u3162\u314b \u3164\u313e\u3162\u314c \u3164\u313e\u3162\u314d \u3164\u313e\u3162\u314e \u3164\u313e\u3162\u314f \u3164\u313e\u3162\u3164 ",
-" row ae_d3_: \u3164\u313e\u3163\uca46 \u3164\u313e\u3163\u3131 \u3164\u313e\u3163\u3132 \u3164\u313e\u3163\u3133 \u3164\u313e\u3163\u3134 \u3164\u313e\u3163\u3135 \u3164\u313e\u3163\u3136 \u3164\u313e\u3163\u3137 \u3164\u313e\u3163\u3138 \u3164\u313e\u3163\u3139 \u3164\u313e\u3163\u313a \u3164\u313e\u3163\u313b \u3164\u313e\u3163\u313c \u3164\u313e\u3163\u313d \u3164\u313e\u3163\u313e \u3164\u313e\u3163\u313f \u3164\u313e\u3163\u3140 \u3164\u313e\u3163\u3141 \u3164\u313e\u3163\u3142 \u3164\u313e\u3163\u3143 \u3164\u313e\u3163\u3144 \u3164\u313e\u3163\u3145 \u3164\u313e\u3163\u3146 \u3164\u313e\u3163\u3147 \u3164\u313e\u3163\u3148 \u3164\u313e\u3163\u3149 \u3164\u313e\u3163\u314a \u3164\u313e\u3163\u314b \u3164\u313e\u3163\u314c \u3164\u313e\u3163\u314d \u3164\u313e\u3163\u314e \u3164\u313e\u3163\u314f \u3164\u313e\u3163\u3164 ",
-" row ae_d4_: \u3164\u313e\u3164\uca46 \u3164\u313e\u3164\u3131 \u3164\u313e\u3164\u3132 \u3164\u313e\u3164\u3133 \u3164\u313e\u3164\u3134 \u3164\u313e\u3164\u3135 \u3164\u313e\u3164\u3136 \u3164\u313e\u3164\u3137 \u3164\u313e\u3164\u3138 \u3164\u313e\u3164\u3139 \u3164\u313e\u3164\u313a \u3164\u313e\u3164\u313b \u3164\u313e\u3164\u313c \u3164\u313e\u3164\u313d \u3164\u313e\u3164\u313e \u3164\u313e\u3164\u313f \u3164\u313e\u3164\u3140 \u3164\u313e\u3164\u3141 \u3164\u313e\u3164\u3142 \u3164\u313e\u3164\u3143 \u3164\u313e\u3164\u3144 \u3164\u313e\u3164\u3145 \u3164\u313e\u3164\u3146 \u3164\u313e\u3164\u3147 \u3164\u313e\u3164\u3148 \u3164\u313e\u3164\u3149 \u3164\u313e\u3164\u314a \u3164\u313e\u3164\u314b \u3164\u313e\u3164\u314c \u3164\u313e\u3164\u314d \u3164\u313e\u3164\u314e \u3164\u313e\u3164\u314f \u3164\u313e\u3164\u3164 ",
-" row af_be_: \u3164\u313f\u314e\uca46 \u3164\u313f\u314e\u3131 \u3164\u313f\u314e\u3132 \u3164\u313f\u314e\u3133 \u3164\u313f\u314e\u3134 \u3164\u313f\u314e\u3135 \u3164\u313f\u314e\u3136 \u3164\u313f\u314e\u3137 \u3164\u313f\u314e\u3138 \u3164\u313f\u314e\u3139 \u3164\u313f\u314e\u313a \u3164\u313f\u314e\u313b \u3164\u313f\u314e\u313c \u3164\u313f\u314e\u313d \u3164\u313f\u314e\u313e \u3164\u313f\u314e\u313f \u3164\u313f\u314e\u3140 \u3164\u313f\u314e\u3141 \u3164\u313f\u314e\u3142 \u3164\u313f\u314e\u3143 \u3164\u313f\u314e\u3144 \u3164\u313f\u314e\u3145 \u3164\u313f\u314e\u3146 \u3164\u313f\u314e\u3147 \u3164\u313f\u314e\u3148 \u3164\u313f\u314e\u3149 \u3164\u313f\u314e\u314a \u3164\u313f\u314e\u314b \u3164\u313f\u314e\u314c \u3164\u313f\u314e\u314d \u3164\u313f\u314e\u314e \u3164\u313f\u314e\u314f \u3164\u313f\u314e\u3164 ",
-" row af_bf_: \u3164\u313f\u314f\uca46 \u3164\u313f\u314f\u3131 \u3164\u313f\u314f\u3132 \u3164\u313f\u314f\u3133 \u3164\u313f\u314f\u3134 \u3164\u313f\u314f\u3135 \u3164\u313f\u314f\u3136 \u3164\u313f\u314f\u3137 \u3164\u313f\u314f\u3138 \u3164\u313f\u314f\u3139 \u3164\u313f\u314f\u313a \u3164\u313f\u314f\u313b \u3164\u313f\u314f\u313c \u3164\u313f\u314f\u313d \u3164\u313f\u314f\u313e \u3164\u313f\u314f\u313f \u3164\u313f\u314f\u3140 \u3164\u313f\u314f\u3141 \u3164\u313f\u314f\u3142 \u3164\u313f\u314f\u3143 \u3164\u313f\u314f\u3144 \u3164\u313f\u314f\u3145 \u3164\u313f\u314f\u3146 \u3164\u313f\u314f\u3147 \u3164\u313f\u314f\u3148 \u3164\u313f\u314f\u3149 \u3164\u313f\u314f\u314a \u3164\u313f\u314f\u314b \u3164\u313f\u314f\u314c \u3164\u313f\u314f\u314d \u3164\u313f\u314f\u314e \u3164\u313f\u314f\u314f \u3164\u313f\u314f\u3164 ",
-" row af_c0_: \u3164\u313f\u3150\uca46 \u3164\u313f\u3150\u3131 \u3164\u313f\u3150\u3132 \u3164\u313f\u3150\u3133 \u3164\u313f\u3150\u3134 \u3164\u313f\u3150\u3135 \u3164\u313f\u3150\u3136 \u3164\u313f\u3150\u3137 \u3164\u313f\u3150\u3138 \u3164\u313f\u3150\u3139 \u3164\u313f\u3150\u313a \u3164\u313f\u3150\u313b \u3164\u313f\u3150\u313c \u3164\u313f\u3150\u313d \u3164\u313f\u3150\u313e \u3164\u313f\u3150\u313f \u3164\u313f\u3150\u3140 \u3164\u313f\u3150\u3141 \u3164\u313f\u3150\u3142 \u3164\u313f\u3150\u3143 \u3164\u313f\u3150\u3144 \u3164\u313f\u3150\u3145 \u3164\u313f\u3150\u3146 \u3164\u313f\u3150\u3147 \u3164\u313f\u3150\u3148 \u3164\u313f\u3150\u3149 \u3164\u313f\u3150\u314a \u3164\u313f\u3150\u314b \u3164\u313f\u3150\u314c \u3164\u313f\u3150\u314d \u3164\u313f\u3150\u314e \u3164\u313f\u3150\u314f \u3164\u313f\u3150\u3164 ",
-" row af_c1_: \u3164\u313f\u3151\uca46 \u3164\u313f\u3151\u3131 \u3164\u313f\u3151\u3132 \u3164\u313f\u3151\u3133 \u3164\u313f\u3151\u3134 \u3164\u313f\u3151\u3135 \u3164\u313f\u3151\u3136 \u3164\u313f\u3151\u3137 \u3164\u313f\u3151\u3138 \u3164\u313f\u3151\u3139 \u3164\u313f\u3151\u313a \u3164\u313f\u3151\u313b \u3164\u313f\u3151\u313c \u3164\u313f\u3151\u313d \u3164\u313f\u3151\u313e \u3164\u313f\u3151\u313f \u3164\u313f\u3151\u3140 \u3164\u313f\u3151\u3141 \u3164\u313f\u3151\u3142 \u3164\u313f\u3151\u3143 \u3164\u313f\u3151\u3144 \u3164\u313f\u3151\u3145 \u3164\u313f\u3151\u3146 \u3164\u313f\u3151\u3147 \u3164\u313f\u3151\u3148 \u3164\u313f\u3151\u3149 \u3164\u313f\u3151\u314a \u3164\u313f\u3151\u314b \u3164\u313f\u3151\u314c \u3164\u313f\u3151\u314d \u3164\u313f\u3151\u314e \u3164\u313f\u3151\u314f \u3164\u313f\u3151\u3164 ",
-" row af_c2_: \u3164\u313f\u3152\uca46 \u3164\u313f\u3152\u3131 \u3164\u313f\u3152\u3132 \u3164\u313f\u3152\u3133 \u3164\u313f\u3152\u3134 \u3164\u313f\u3152\u3135 \u3164\u313f\u3152\u3136 \u3164\u313f\u3152\u3137 \u3164\u313f\u3152\u3138 \u3164\u313f\u3152\u3139 \u3164\u313f\u3152\u313a \u3164\u313f\u3152\u313b \u3164\u313f\u3152\u313c \u3164\u313f\u3152\u313d \u3164\u313f\u3152\u313e \u3164\u313f\u3152\u313f \u3164\u313f\u3152\u3140 \u3164\u313f\u3152\u3141 \u3164\u313f\u3152\u3142 \u3164\u313f\u3152\u3143 \u3164\u313f\u3152\u3144 \u3164\u313f\u3152\u3145 \u3164\u313f\u3152\u3146 \u3164\u313f\u3152\u3147 \u3164\u313f\u3152\u3148 \u3164\u313f\u3152\u3149 \u3164\u313f\u3152\u314a \u3164\u313f\u3152\u314b \u3164\u313f\u3152\u314c \u3164\u313f\u3152\u314d \u3164\u313f\u3152\u314e \u3164\u313f\u3152\u314f \u3164\u313f\u3152\u3164 ",
-" row af_c3_: \u3164\u313f\u3153\uca46 \u3164\u313f\u3153\u3131 \u3164\u313f\u3153\u3132 \u3164\u313f\u3153\u3133 \u3164\u313f\u3153\u3134 \u3164\u313f\u3153\u3135 \u3164\u313f\u3153\u3136 \u3164\u313f\u3153\u3137 \u3164\u313f\u3153\u3138 \u3164\u313f\u3153\u3139 \u3164\u313f\u3153\u313a \u3164\u313f\u3153\u313b \u3164\u313f\u3153\u313c \u3164\u313f\u3153\u313d \u3164\u313f\u3153\u313e \u3164\u313f\u3153\u313f \u3164\u313f\u3153\u3140 \u3164\u313f\u3153\u3141 \u3164\u313f\u3153\u3142 \u3164\u313f\u3153\u3143 \u3164\u313f\u3153\u3144 \u3164\u313f\u3153\u3145 \u3164\u313f\u3153\u3146 \u3164\u313f\u3153\u3147 \u3164\u313f\u3153\u3148 \u3164\u313f\u3153\u3149 \u3164\u313f\u3153\u314a \u3164\u313f\u3153\u314b \u3164\u313f\u3153\u314c \u3164\u313f\u3153\u314d \u3164\u313f\u3153\u314e \u3164\u313f\u3153\u314f \u3164\u313f\u3153\u3164 ",
-" row af_c4_: \u3164\u313f\u3154\uca46 \u3164\u313f\u3154\u3131 \u3164\u313f\u3154\u3132 \u3164\u313f\u3154\u3133 \u3164\u313f\u3154\u3134 \u3164\u313f\u3154\u3135 \u3164\u313f\u3154\u3136 \u3164\u313f\u3154\u3137 \u3164\u313f\u3154\u3138 \u3164\u313f\u3154\u3139 \u3164\u313f\u3154\u313a \u3164\u313f\u3154\u313b \u3164\u313f\u3154\u313c \u3164\u313f\u3154\u313d \u3164\u313f\u3154\u313e \u3164\u313f\u3154\u313f \u3164\u313f\u3154\u3140 \u3164\u313f\u3154\u3141 \u3164\u313f\u3154\u3142 \u3164\u313f\u3154\u3143 \u3164\u313f\u3154\u3144 \u3164\u313f\u3154\u3145 \u3164\u313f\u3154\u3146 \u3164\u313f\u3154\u3147 \u3164\u313f\u3154\u3148 \u3164\u313f\u3154\u3149 \u3164\u313f\u3154\u314a \u3164\u313f\u3154\u314b \u3164\u313f\u3154\u314c \u3164\u313f\u3154\u314d \u3164\u313f\u3154\u314e \u3164\u313f\u3154\u314f \u3164\u313f\u3154\u3164 ",
-" row af_c5_: \u3164\u313f\u3155\uca46 \u3164\u313f\u3155\u3131 \u3164\u313f\u3155\u3132 \u3164\u313f\u3155\u3133 \u3164\u313f\u3155\u3134 \u3164\u313f\u3155\u3135 \u3164\u313f\u3155\u3136 \u3164\u313f\u3155\u3137 \u3164\u313f\u3155\u3138 \u3164\u313f\u3155\u3139 \u3164\u313f\u3155\u313a \u3164\u313f\u3155\u313b \u3164\u313f\u3155\u313c \u3164\u313f\u3155\u313d \u3164\u313f\u3155\u313e \u3164\u313f\u3155\u313f \u3164\u313f\u3155\u3140 \u3164\u313f\u3155\u3141 \u3164\u313f\u3155\u3142 \u3164\u313f\u3155\u3143 \u3164\u313f\u3155\u3144 \u3164\u313f\u3155\u3145 \u3164\u313f\u3155\u3146 \u3164\u313f\u3155\u3147 \u3164\u313f\u3155\u3148 \u3164\u313f\u3155\u3149 \u3164\u313f\u3155\u314a \u3164\u313f\u3155\u314b \u3164\u313f\u3155\u314c \u3164\u313f\u3155\u314d \u3164\u313f\u3155\u314e \u3164\u313f\u3155\u314f \u3164\u313f\u3155\u3164 ",
-" row af_c6_: \u3164\u313f\u3156\uca46 \u3164\u313f\u3156\u3131 \u3164\u313f\u3156\u3132 \u3164\u313f\u3156\u3133 \u3164\u313f\u3156\u3134 \u3164\u313f\u3156\u3135 \u3164\u313f\u3156\u3136 \u3164\u313f\u3156\u3137 \u3164\u313f\u3156\u3138 \u3164\u313f\u3156\u3139 \u3164\u313f\u3156\u313a \u3164\u313f\u3156\u313b \u3164\u313f\u3156\u313c \u3164\u313f\u3156\u313d \u3164\u313f\u3156\u313e \u3164\u313f\u3156\u313f \u3164\u313f\u3156\u3140 \u3164\u313f\u3156\u3141 \u3164\u313f\u3156\u3142 \u3164\u313f\u3156\u3143 \u3164\u313f\u3156\u3144 \u3164\u313f\u3156\u3145 \u3164\u313f\u3156\u3146 \u3164\u313f\u3156\u3147 \u3164\u313f\u3156\u3148 \u3164\u313f\u3156\u3149 \u3164\u313f\u3156\u314a \u3164\u313f\u3156\u314b \u3164\u313f\u3156\u314c \u3164\u313f\u3156\u314d \u3164\u313f\u3156\u314e \u3164\u313f\u3156\u314f \u3164\u313f\u3156\u3164 ",
-" row af_c7_: \u3164\u313f\u3157\uca46 \u3164\u313f\u3157\u3131 \u3164\u313f\u3157\u3132 \u3164\u313f\u3157\u3133 \u3164\u313f\u3157\u3134 \u3164\u313f\u3157\u3135 \u3164\u313f\u3157\u3136 \u3164\u313f\u3157\u3137 \u3164\u313f\u3157\u3138 \u3164\u313f\u3157\u3139 \u3164\u313f\u3157\u313a \u3164\u313f\u3157\u313b \u3164\u313f\u3157\u313c \u3164\u313f\u3157\u313d \u3164\u313f\u3157\u313e \u3164\u313f\u3157\u313f \u3164\u313f\u3157\u3140 \u3164\u313f\u3157\u3141 \u3164\u313f\u3157\u3142 \u3164\u313f\u3157\u3143 \u3164\u313f\u3157\u3144 \u3164\u313f\u3157\u3145 \u3164\u313f\u3157\u3146 \u3164\u313f\u3157\u3147 \u3164\u313f\u3157\u3148 \u3164\u313f\u3157\u3149 \u3164\u313f\u3157\u314a \u3164\u313f\u3157\u314b \u3164\u313f\u3157\u314c \u3164\u313f\u3157\u314d \u3164\u313f\u3157\u314e \u3164\u313f\u3157\u314f \u3164\u313f\u3157\u3164 ",
-" row af_c8_: \u3164\u313f\u3158\uca46 \u3164\u313f\u3158\u3131 \u3164\u313f\u3158\u3132 \u3164\u313f\u3158\u3133 \u3164\u313f\u3158\u3134 \u3164\u313f\u3158\u3135 \u3164\u313f\u3158\u3136 \u3164\u313f\u3158\u3137 \u3164\u313f\u3158\u3138 \u3164\u313f\u3158\u3139 \u3164\u313f\u3158\u313a \u3164\u313f\u3158\u313b \u3164\u313f\u3158\u313c \u3164\u313f\u3158\u313d \u3164\u313f\u3158\u313e \u3164\u313f\u3158\u313f \u3164\u313f\u3158\u3140 \u3164\u313f\u3158\u3141 \u3164\u313f\u3158\u3142 \u3164\u313f\u3158\u3143 \u3164\u313f\u3158\u3144 \u3164\u313f\u3158\u3145 \u3164\u313f\u3158\u3146 \u3164\u313f\u3158\u3147 \u3164\u313f\u3158\u3148 \u3164\u313f\u3158\u3149 \u3164\u313f\u3158\u314a \u3164\u313f\u3158\u314b \u3164\u313f\u3158\u314c \u3164\u313f\u3158\u314d \u3164\u313f\u3158\u314e \u3164\u313f\u3158\u314f \u3164\u313f\u3158\u3164 ",
-" row af_c9_: \u3164\u313f\u3159\uca46 \u3164\u313f\u3159\u3131 \u3164\u313f\u3159\u3132 \u3164\u313f\u3159\u3133 \u3164\u313f\u3159\u3134 \u3164\u313f\u3159\u3135 \u3164\u313f\u3159\u3136 \u3164\u313f\u3159\u3137 \u3164\u313f\u3159\u3138 \u3164\u313f\u3159\u3139 \u3164\u313f\u3159\u313a \u3164\u313f\u3159\u313b \u3164\u313f\u3159\u313c \u3164\u313f\u3159\u313d \u3164\u313f\u3159\u313e \u3164\u313f\u3159\u313f \u3164\u313f\u3159\u3140 \u3164\u313f\u3159\u3141 \u3164\u313f\u3159\u3142 \u3164\u313f\u3159\u3143 \u3164\u313f\u3159\u3144 \u3164\u313f\u3159\u3145 \u3164\u313f\u3159\u3146 \u3164\u313f\u3159\u3147 \u3164\u313f\u3159\u3148 \u3164\u313f\u3159\u3149 \u3164\u313f\u3159\u314a \u3164\u313f\u3159\u314b \u3164\u313f\u3159\u314c \u3164\u313f\u3159\u314d \u3164\u313f\u3159\u314e \u3164\u313f\u3159\u314f \u3164\u313f\u3159\u3164 ",
-" row af_ca_: \u3164\u313f\u315a\uca46 \u3164\u313f\u315a\u3131 \u3164\u313f\u315a\u3132 \u3164\u313f\u315a\u3133 \u3164\u313f\u315a\u3134 \u3164\u313f\u315a\u3135 \u3164\u313f\u315a\u3136 \u3164\u313f\u315a\u3137 \u3164\u313f\u315a\u3138 \u3164\u313f\u315a\u3139 \u3164\u313f\u315a\u313a \u3164\u313f\u315a\u313b \u3164\u313f\u315a\u313c \u3164\u313f\u315a\u313d \u3164\u313f\u315a\u313e \u3164\u313f\u315a\u313f \u3164\u313f\u315a\u3140 \u3164\u313f\u315a\u3141 \u3164\u313f\u315a\u3142 \u3164\u313f\u315a\u3143 \u3164\u313f\u315a\u3144 \u3164\u313f\u315a\u3145 \u3164\u313f\u315a\u3146 \u3164\u313f\u315a\u3147 \u3164\u313f\u315a\u3148 \u3164\u313f\u315a\u3149 \u3164\u313f\u315a\u314a \u3164\u313f\u315a\u314b \u3164\u313f\u315a\u314c \u3164\u313f\u315a\u314d \u3164\u313f\u315a\u314e \u3164\u313f\u315a\u314f \u3164\u313f\u315a\u3164 ",
-" row af_cb_: \u3164\u313f\u315b\uca46 \u3164\u313f\u315b\u3131 \u3164\u313f\u315b\u3132 \u3164\u313f\u315b\u3133 \u3164\u313f\u315b\u3134 \u3164\u313f\u315b\u3135 \u3164\u313f\u315b\u3136 \u3164\u313f\u315b\u3137 \u3164\u313f\u315b\u3138 \u3164\u313f\u315b\u3139 \u3164\u313f\u315b\u313a \u3164\u313f\u315b\u313b \u3164\u313f\u315b\u313c \u3164\u313f\u315b\u313d \u3164\u313f\u315b\u313e \u3164\u313f\u315b\u313f \u3164\u313f\u315b\u3140 \u3164\u313f\u315b\u3141 \u3164\u313f\u315b\u3142 \u3164\u313f\u315b\u3143 \u3164\u313f\u315b\u3144 \u3164\u313f\u315b\u3145 \u3164\u313f\u315b\u3146 \u3164\u313f\u315b\u3147 \u3164\u313f\u315b\u3148 \u3164\u313f\u315b\u3149 \u3164\u313f\u315b\u314a \u3164\u313f\u315b\u314b \u3164\u313f\u315b\u314c \u3164\u313f\u315b\u314d \u3164\u313f\u315b\u314e \u3164\u313f\u315b\u314f \u3164\u313f\u315b\u3164 ",
-" row af_cc_: \u3164\u313f\u315c\uca46 \u3164\u313f\u315c\u3131 \u3164\u313f\u315c\u3132 \u3164\u313f\u315c\u3133 \u3164\u313f\u315c\u3134 \u3164\u313f\u315c\u3135 \u3164\u313f\u315c\u3136 \u3164\u313f\u315c\u3137 \u3164\u313f\u315c\u3138 \u3164\u313f\u315c\u3139 \u3164\u313f\u315c\u313a \u3164\u313f\u315c\u313b \u3164\u313f\u315c\u313c \u3164\u313f\u315c\u313d \u3164\u313f\u315c\u313e \u3164\u313f\u315c\u313f \u3164\u313f\u315c\u3140 \u3164\u313f\u315c\u3141 \u3164\u313f\u315c\u3142 \u3164\u313f\u315c\u3143 \u3164\u313f\u315c\u3144 \u3164\u313f\u315c\u3145 \u3164\u313f\u315c\u3146 \u3164\u313f\u315c\u3147 \u3164\u313f\u315c\u3148 \u3164\u313f\u315c\u3149 \u3164\u313f\u315c\u314a \u3164\u313f\u315c\u314b \u3164\u313f\u315c\u314c \u3164\u313f\u315c\u314d \u3164\u313f\u315c\u314e \u3164\u313f\u315c\u314f \u3164\u313f\u315c\u3164 ",
-" row af_cd_: \u3164\u313f\u315d\uca46 \u3164\u313f\u315d\u3131 \u3164\u313f\u315d\u3132 \u3164\u313f\u315d\u3133 \u3164\u313f\u315d\u3134 \u3164\u313f\u315d\u3135 \u3164\u313f\u315d\u3136 \u3164\u313f\u315d\u3137 \u3164\u313f\u315d\u3138 \u3164\u313f\u315d\u3139 \u3164\u313f\u315d\u313a \u3164\u313f\u315d\u313b \u3164\u313f\u315d\u313c \u3164\u313f\u315d\u313d \u3164\u313f\u315d\u313e \u3164\u313f\u315d\u313f \u3164\u313f\u315d\u3140 \u3164\u313f\u315d\u3141 \u3164\u313f\u315d\u3142 \u3164\u313f\u315d\u3143 \u3164\u313f\u315d\u3144 \u3164\u313f\u315d\u3145 \u3164\u313f\u315d\u3146 \u3164\u313f\u315d\u3147 \u3164\u313f\u315d\u3148 \u3164\u313f\u315d\u3149 \u3164\u313f\u315d\u314a \u3164\u313f\u315d\u314b \u3164\u313f\u315d\u314c \u3164\u313f\u315d\u314d \u3164\u313f\u315d\u314e \u3164\u313f\u315d\u314f \u3164\u313f\u315d\u3164 ",
-" row af_ce_: \u3164\u313f\u315e\uca46 \u3164\u313f\u315e\u3131 \u3164\u313f\u315e\u3132 \u3164\u313f\u315e\u3133 \u3164\u313f\u315e\u3134 \u3164\u313f\u315e\u3135 \u3164\u313f\u315e\u3136 \u3164\u313f\u315e\u3137 \u3164\u313f\u315e\u3138 \u3164\u313f\u315e\u3139 \u3164\u313f\u315e\u313a \u3164\u313f\u315e\u313b \u3164\u313f\u315e\u313c \u3164\u313f\u315e\u313d \u3164\u313f\u315e\u313e \u3164\u313f\u315e\u313f \u3164\u313f\u315e\u3140 \u3164\u313f\u315e\u3141 \u3164\u313f\u315e\u3142 \u3164\u313f\u315e\u3143 \u3164\u313f\u315e\u3144 \u3164\u313f\u315e\u3145 \u3164\u313f\u315e\u3146 \u3164\u313f\u315e\u3147 \u3164\u313f\u315e\u3148 \u3164\u313f\u315e\u3149 \u3164\u313f\u315e\u314a \u3164\u313f\u315e\u314b \u3164\u313f\u315e\u314c \u3164\u313f\u315e\u314d \u3164\u313f\u315e\u314e \u3164\u313f\u315e\u314f \u3164\u313f\u315e\u3164 ",
-" row af_cf_: \u3164\u313f\u315f\uca46 \u3164\u313f\u315f\u3131 \u3164\u313f\u315f\u3132 \u3164\u313f\u315f\u3133 \u3164\u313f\u315f\u3134 \u3164\u313f\u315f\u3135 \u3164\u313f\u315f\u3136 \u3164\u313f\u315f\u3137 \u3164\u313f\u315f\u3138 \u3164\u313f\u315f\u3139 \u3164\u313f\u315f\u313a \u3164\u313f\u315f\u313b \u3164\u313f\u315f\u313c \u3164\u313f\u315f\u313d \u3164\u313f\u315f\u313e \u3164\u313f\u315f\u313f \u3164\u313f\u315f\u3140 \u3164\u313f\u315f\u3141 \u3164\u313f\u315f\u3142 \u3164\u313f\u315f\u3143 \u3164\u313f\u315f\u3144 \u3164\u313f\u315f\u3145 \u3164\u313f\u315f\u3146 \u3164\u313f\u315f\u3147 \u3164\u313f\u315f\u3148 \u3164\u313f\u315f\u3149 \u3164\u313f\u315f\u314a \u3164\u313f\u315f\u314b \u3164\u313f\u315f\u314c \u3164\u313f\u315f\u314d \u3164\u313f\u315f\u314e \u3164\u313f\u315f\u314f \u3164\u313f\u315f\u3164 ",
-" row af_d0_: \u3164\u313f\u3160\uca46 \u3164\u313f\u3160\u3131 \u3164\u313f\u3160\u3132 \u3164\u313f\u3160\u3133 \u3164\u313f\u3160\u3134 \u3164\u313f\u3160\u3135 \u3164\u313f\u3160\u3136 \u3164\u313f\u3160\u3137 \u3164\u313f\u3160\u3138 \u3164\u313f\u3160\u3139 \u3164\u313f\u3160\u313a \u3164\u313f\u3160\u313b \u3164\u313f\u3160\u313c \u3164\u313f\u3160\u313d \u3164\u313f\u3160\u313e \u3164\u313f\u3160\u313f \u3164\u313f\u3160\u3140 \u3164\u313f\u3160\u3141 \u3164\u313f\u3160\u3142 \u3164\u313f\u3160\u3143 \u3164\u313f\u3160\u3144 \u3164\u313f\u3160\u3145 \u3164\u313f\u3160\u3146 \u3164\u313f\u3160\u3147 \u3164\u313f\u3160\u3148 \u3164\u313f\u3160\u3149 \u3164\u313f\u3160\u314a \u3164\u313f\u3160\u314b \u3164\u313f\u3160\u314c \u3164\u313f\u3160\u314d \u3164\u313f\u3160\u314e \u3164\u313f\u3160\u314f \u3164\u313f\u3160\u3164 ",
-" row af_d1_: \u3164\u313f\u3161\uca46 \u3164\u313f\u3161\u3131 \u3164\u313f\u3161\u3132 \u3164\u313f\u3161\u3133 \u3164\u313f\u3161\u3134 \u3164\u313f\u3161\u3135 \u3164\u313f\u3161\u3136 \u3164\u313f\u3161\u3137 \u3164\u313f\u3161\u3138 \u3164\u313f\u3161\u3139 \u3164\u313f\u3161\u313a \u3164\u313f\u3161\u313b \u3164\u313f\u3161\u313c \u3164\u313f\u3161\u313d \u3164\u313f\u3161\u313e \u3164\u313f\u3161\u313f \u3164\u313f\u3161\u3140 \u3164\u313f\u3161\u3141 \u3164\u313f\u3161\u3142 \u3164\u313f\u3161\u3143 \u3164\u313f\u3161\u3144 \u3164\u313f\u3161\u3145 \u3164\u313f\u3161\u3146 \u3164\u313f\u3161\u3147 \u3164\u313f\u3161\u3148 \u3164\u313f\u3161\u3149 \u3164\u313f\u3161\u314a \u3164\u313f\u3161\u314b \u3164\u313f\u3161\u314c \u3164\u313f\u3161\u314d \u3164\u313f\u3161\u314e \u3164\u313f\u3161\u314f \u3164\u313f\u3161\u3164 ",
-" row af_d2_: \u3164\u313f\u3162\uca46 \u3164\u313f\u3162\u3131 \u3164\u313f\u3162\u3132 \u3164\u313f\u3162\u3133 \u3164\u313f\u3162\u3134 \u3164\u313f\u3162\u3135 \u3164\u313f\u3162\u3136 \u3164\u313f\u3162\u3137 \u3164\u313f\u3162\u3138 \u3164\u313f\u3162\u3139 \u3164\u313f\u3162\u313a \u3164\u313f\u3162\u313b \u3164\u313f\u3162\u313c \u3164\u313f\u3162\u313d \u3164\u313f\u3162\u313e \u3164\u313f\u3162\u313f \u3164\u313f\u3162\u3140 \u3164\u313f\u3162\u3141 \u3164\u313f\u3162\u3142 \u3164\u313f\u3162\u3143 \u3164\u313f\u3162\u3144 \u3164\u313f\u3162\u3145 \u3164\u313f\u3162\u3146 \u3164\u313f\u3162\u3147 \u3164\u313f\u3162\u3148 \u3164\u313f\u3162\u3149 \u3164\u313f\u3162\u314a \u3164\u313f\u3162\u314b \u3164\u313f\u3162\u314c \u3164\u313f\u3162\u314d \u3164\u313f\u3162\u314e \u3164\u313f\u3162\u314f \u3164\u313f\u3162\u3164 ",
-" row af_d3_: \u3164\u313f\u3163\uca46 \u3164\u313f\u3163\u3131 \u3164\u313f\u3163\u3132 \u3164\u313f\u3163\u3133 \u3164\u313f\u3163\u3134 \u3164\u313f\u3163\u3135 \u3164\u313f\u3163\u3136 \u3164\u313f\u3163\u3137 \u3164\u313f\u3163\u3138 \u3164\u313f\u3163\u3139 \u3164\u313f\u3163\u313a \u3164\u313f\u3163\u313b \u3164\u313f\u3163\u313c \u3164\u313f\u3163\u313d \u3164\u313f\u3163\u313e \u3164\u313f\u3163\u313f \u3164\u313f\u3163\u3140 \u3164\u313f\u3163\u3141 \u3164\u313f\u3163\u3142 \u3164\u313f\u3163\u3143 \u3164\u313f\u3163\u3144 \u3164\u313f\u3163\u3145 \u3164\u313f\u3163\u3146 \u3164\u313f\u3163\u3147 \u3164\u313f\u3163\u3148 \u3164\u313f\u3163\u3149 \u3164\u313f\u3163\u314a \u3164\u313f\u3163\u314b \u3164\u313f\u3163\u314c \u3164\u313f\u3163\u314d \u3164\u313f\u3163\u314e \u3164\u313f\u3163\u314f \u3164\u313f\u3163\u3164 ",
-" row af_d4_: \u3164\u313f\u3164\uca46 \u3164\u313f\u3164\u3131 \u3164\u313f\u3164\u3132 \u3164\u313f\u3164\u3133 \u3164\u313f\u3164\u3134 \u3164\u313f\u3164\u3135 \u3164\u313f\u3164\u3136 \u3164\u313f\u3164\u3137 \u3164\u313f\u3164\u3138 \u3164\u313f\u3164\u3139 \u3164\u313f\u3164\u313a \u3164\u313f\u3164\u313b \u3164\u313f\u3164\u313c \u3164\u313f\u3164\u313d \u3164\u313f\u3164\u313e \u3164\u313f\u3164\u313f \u3164\u313f\u3164\u3140 \u3164\u313f\u3164\u3141 \u3164\u313f\u3164\u3142 \u3164\u313f\u3164\u3143 \u3164\u313f\u3164\u3144 \u3164\u313f\u3164\u3145 \u3164\u313f\u3164\u3146 \u3164\u313f\u3164\u3147 \u3164\u313f\u3164\u3148 \u3164\u313f\u3164\u3149 \u3164\u313f\u3164\u314a \u3164\u313f\u3164\u314b \u3164\u313f\u3164\u314c \u3164\u313f\u3164\u314d \u3164\u313f\u3164\u314e \u3164\u313f\u3164\u314f \u3164\u313f\u3164\u3164 ",
-" row b0_be_: \u3164\u3140\u314e\uca46 \u3164\u3140\u314e\u3131 \u3164\u3140\u314e\u3132 \u3164\u3140\u314e\u3133 \u3164\u3140\u314e\u3134 \u3164\u3140\u314e\u3135 \u3164\u3140\u314e\u3136 \u3164\u3140\u314e\u3137 \u3164\u3140\u314e\u3138 \u3164\u3140\u314e\u3139 \u3164\u3140\u314e\u313a \u3164\u3140\u314e\u313b \u3164\u3140\u314e\u313c \u3164\u3140\u314e\u313d \u3164\u3140\u314e\u313e \u3164\u3140\u314e\u313f \u3164\u3140\u314e\u3140 \u3164\u3140\u314e\u3141 \u3164\u3140\u314e\u3142 \u3164\u3140\u314e\u3143 \u3164\u3140\u314e\u3144 \u3164\u3140\u314e\u3145 \u3164\u3140\u314e\u3146 \u3164\u3140\u314e\u3147 \u3164\u3140\u314e\u3148 \u3164\u3140\u314e\u3149 \u3164\u3140\u314e\u314a \u3164\u3140\u314e\u314b \u3164\u3140\u314e\u314c \u3164\u3140\u314e\u314d \u3164\u3140\u314e\u314e \u3164\u3140\u314e\u314f \u3164\u3140\u314e\u3164 ",
-" row b0_bf_: \u3164\u3140\u314f\uca46 \u3164\u3140\u314f\u3131 \u3164\u3140\u314f\u3132 \u3164\u3140\u314f\u3133 \u3164\u3140\u314f\u3134 \u3164\u3140\u314f\u3135 \u3164\u3140\u314f\u3136 \u3164\u3140\u314f\u3137 \u3164\u3140\u314f\u3138 \u3164\u3140\u314f\u3139 \u3164\u3140\u314f\u313a \u3164\u3140\u314f\u313b \u3164\u3140\u314f\u313c \u3164\u3140\u314f\u313d \u3164\u3140\u314f\u313e \u3164\u3140\u314f\u313f \u3164\u3140\u314f\u3140 \u3164\u3140\u314f\u3141 \u3164\u3140\u314f\u3142 \u3164\u3140\u314f\u3143 \u3164\u3140\u314f\u3144 \u3164\u3140\u314f\u3145 \u3164\u3140\u314f\u3146 \u3164\u3140\u314f\u3147 \u3164\u3140\u314f\u3148 \u3164\u3140\u314f\u3149 \u3164\u3140\u314f\u314a \u3164\u3140\u314f\u314b \u3164\u3140\u314f\u314c \u3164\u3140\u314f\u314d \u3164\u3140\u314f\u314e \u3164\u3140\u314f\u314f \u3164\u3140\u314f\u3164 ",
-" row b0_c0_: \u3164\u3140\u3150\uca46 \u3164\u3140\u3150\u3131 \u3164\u3140\u3150\u3132 \u3164\u3140\u3150\u3133 \u3164\u3140\u3150\u3134 \u3164\u3140\u3150\u3135 \u3164\u3140\u3150\u3136 \u3164\u3140\u3150\u3137 \u3164\u3140\u3150\u3138 \u3164\u3140\u3150\u3139 \u3164\u3140\u3150\u313a \u3164\u3140\u3150\u313b \u3164\u3140\u3150\u313c \u3164\u3140\u3150\u313d \u3164\u3140\u3150\u313e \u3164\u3140\u3150\u313f \u3164\u3140\u3150\u3140 \u3164\u3140\u3150\u3141 \u3164\u3140\u3150\u3142 \u3164\u3140\u3150\u3143 \u3164\u3140\u3150\u3144 \u3164\u3140\u3150\u3145 \u3164\u3140\u3150\u3146 \u3164\u3140\u3150\u3147 \u3164\u3140\u3150\u3148 \u3164\u3140\u3150\u3149 \u3164\u3140\u3150\u314a \u3164\u3140\u3150\u314b \u3164\u3140\u3150\u314c \u3164\u3140\u3150\u314d \u3164\u3140\u3150\u314e \u3164\u3140\u3150\u314f \u3164\u3140\u3150\u3164 ",
-" row b0_c1_: \u3164\u3140\u3151\uca46 \u3164\u3140\u3151\u3131 \u3164\u3140\u3151\u3132 \u3164\u3140\u3151\u3133 \u3164\u3140\u3151\u3134 \u3164\u3140\u3151\u3135 \u3164\u3140\u3151\u3136 \u3164\u3140\u3151\u3137 \u3164\u3140\u3151\u3138 \u3164\u3140\u3151\u3139 \u3164\u3140\u3151\u313a \u3164\u3140\u3151\u313b \u3164\u3140\u3151\u313c \u3164\u3140\u3151\u313d \u3164\u3140\u3151\u313e \u3164\u3140\u3151\u313f \u3164\u3140\u3151\u3140 \u3164\u3140\u3151\u3141 \u3164\u3140\u3151\u3142 \u3164\u3140\u3151\u3143 \u3164\u3140\u3151\u3144 \u3164\u3140\u3151\u3145 \u3164\u3140\u3151\u3146 \u3164\u3140\u3151\u3147 \u3164\u3140\u3151\u3148 \u3164\u3140\u3151\u3149 \u3164\u3140\u3151\u314a \u3164\u3140\u3151\u314b \u3164\u3140\u3151\u314c \u3164\u3140\u3151\u314d \u3164\u3140\u3151\u314e \u3164\u3140\u3151\u314f \u3164\u3140\u3151\u3164 ",
-" row b0_c2_: \u3164\u3140\u3152\uca46 \u3164\u3140\u3152\u3131 \u3164\u3140\u3152\u3132 \u3164\u3140\u3152\u3133 \u3164\u3140\u3152\u3134 \u3164\u3140\u3152\u3135 \u3164\u3140\u3152\u3136 \u3164\u3140\u3152\u3137 \u3164\u3140\u3152\u3138 \u3164\u3140\u3152\u3139 \u3164\u3140\u3152\u313a \u3164\u3140\u3152\u313b \u3164\u3140\u3152\u313c \u3164\u3140\u3152\u313d \u3164\u3140\u3152\u313e \u3164\u3140\u3152\u313f \u3164\u3140\u3152\u3140 \u3164\u3140\u3152\u3141 \u3164\u3140\u3152\u3142 \u3164\u3140\u3152\u3143 \u3164\u3140\u3152\u3144 \u3164\u3140\u3152\u3145 \u3164\u3140\u3152\u3146 \u3164\u3140\u3152\u3147 \u3164\u3140\u3152\u3148 \u3164\u3140\u3152\u3149 \u3164\u3140\u3152\u314a \u3164\u3140\u3152\u314b \u3164\u3140\u3152\u314c \u3164\u3140\u3152\u314d \u3164\u3140\u3152\u314e \u3164\u3140\u3152\u314f \u3164\u3140\u3152\u3164 ",
-" row b0_c3_: \u3164\u3140\u3153\uca46 \u3164\u3140\u3153\u3131 \u3164\u3140\u3153\u3132 \u3164\u3140\u3153\u3133 \u3164\u3140\u3153\u3134 \u3164\u3140\u3153\u3135 \u3164\u3140\u3153\u3136 \u3164\u3140\u3153\u3137 \u3164\u3140\u3153\u3138 \u3164\u3140\u3153\u3139 \u3164\u3140\u3153\u313a \u3164\u3140\u3153\u313b \u3164\u3140\u3153\u313c \u3164\u3140\u3153\u313d \u3164\u3140\u3153\u313e \u3164\u3140\u3153\u313f \u3164\u3140\u3153\u3140 \u3164\u3140\u3153\u3141 \u3164\u3140\u3153\u3142 \u3164\u3140\u3153\u3143 \u3164\u3140\u3153\u3144 \u3164\u3140\u3153\u3145 \u3164\u3140\u3153\u3146 \u3164\u3140\u3153\u3147 \u3164\u3140\u3153\u3148 \u3164\u3140\u3153\u3149 \u3164\u3140\u3153\u314a \u3164\u3140\u3153\u314b \u3164\u3140\u3153\u314c \u3164\u3140\u3153\u314d \u3164\u3140\u3153\u314e \u3164\u3140\u3153\u314f \u3164\u3140\u3153\u3164 ",
-" row b0_c4_: \u3164\u3140\u3154\uca46 \u3164\u3140\u3154\u3131 \u3164\u3140\u3154\u3132 \u3164\u3140\u3154\u3133 \u3164\u3140\u3154\u3134 \u3164\u3140\u3154\u3135 \u3164\u3140\u3154\u3136 \u3164\u3140\u3154\u3137 \u3164\u3140\u3154\u3138 \u3164\u3140\u3154\u3139 \u3164\u3140\u3154\u313a \u3164\u3140\u3154\u313b \u3164\u3140\u3154\u313c \u3164\u3140\u3154\u313d \u3164\u3140\u3154\u313e \u3164\u3140\u3154\u313f \u3164\u3140\u3154\u3140 \u3164\u3140\u3154\u3141 \u3164\u3140\u3154\u3142 \u3164\u3140\u3154\u3143 \u3164\u3140\u3154\u3144 \u3164\u3140\u3154\u3145 \u3164\u3140\u3154\u3146 \u3164\u3140\u3154\u3147 \u3164\u3140\u3154\u3148 \u3164\u3140\u3154\u3149 \u3164\u3140\u3154\u314a \u3164\u3140\u3154\u314b \u3164\u3140\u3154\u314c \u3164\u3140\u3154\u314d \u3164\u3140\u3154\u314e \u3164\u3140\u3154\u314f \u3164\u3140\u3154\u3164 ",
-" row b0_c5_: \u3164\u3140\u3155\uca46 \u3164\u3140\u3155\u3131 \u3164\u3140\u3155\u3132 \u3164\u3140\u3155\u3133 \u3164\u3140\u3155\u3134 \u3164\u3140\u3155\u3135 \u3164\u3140\u3155\u3136 \u3164\u3140\u3155\u3137 \u3164\u3140\u3155\u3138 \u3164\u3140\u3155\u3139 \u3164\u3140\u3155\u313a \u3164\u3140\u3155\u313b \u3164\u3140\u3155\u313c \u3164\u3140\u3155\u313d \u3164\u3140\u3155\u313e \u3164\u3140\u3155\u313f \u3164\u3140\u3155\u3140 \u3164\u3140\u3155\u3141 \u3164\u3140\u3155\u3142 \u3164\u3140\u3155\u3143 \u3164\u3140\u3155\u3144 \u3164\u3140\u3155\u3145 \u3164\u3140\u3155\u3146 \u3164\u3140\u3155\u3147 \u3164\u3140\u3155\u3148 \u3164\u3140\u3155\u3149 \u3164\u3140\u3155\u314a \u3164\u3140\u3155\u314b \u3164\u3140\u3155\u314c \u3164\u3140\u3155\u314d \u3164\u3140\u3155\u314e \u3164\u3140\u3155\u314f \u3164\u3140\u3155\u3164 ",
-" row b0_c6_: \u3164\u3140\u3156\uca46 \u3164\u3140\u3156\u3131 \u3164\u3140\u3156\u3132 \u3164\u3140\u3156\u3133 \u3164\u3140\u3156\u3134 \u3164\u3140\u3156\u3135 \u3164\u3140\u3156\u3136 \u3164\u3140\u3156\u3137 \u3164\u3140\u3156\u3138 \u3164\u3140\u3156\u3139 \u3164\u3140\u3156\u313a \u3164\u3140\u3156\u313b \u3164\u3140\u3156\u313c \u3164\u3140\u3156\u313d \u3164\u3140\u3156\u313e \u3164\u3140\u3156\u313f \u3164\u3140\u3156\u3140 \u3164\u3140\u3156\u3141 \u3164\u3140\u3156\u3142 \u3164\u3140\u3156\u3143 \u3164\u3140\u3156\u3144 \u3164\u3140\u3156\u3145 \u3164\u3140\u3156\u3146 \u3164\u3140\u3156\u3147 \u3164\u3140\u3156\u3148 \u3164\u3140\u3156\u3149 \u3164\u3140\u3156\u314a \u3164\u3140\u3156\u314b \u3164\u3140\u3156\u314c \u3164\u3140\u3156\u314d \u3164\u3140\u3156\u314e \u3164\u3140\u3156\u314f \u3164\u3140\u3156\u3164 ",
-" row b0_c7_: \u3164\u3140\u3157\uca46 \u3164\u3140\u3157\u3131 \u3164\u3140\u3157\u3132 \u3164\u3140\u3157\u3133 \u3164\u3140\u3157\u3134 \u3164\u3140\u3157\u3135 \u3164\u3140\u3157\u3136 \u3164\u3140\u3157\u3137 \u3164\u3140\u3157\u3138 \u3164\u3140\u3157\u3139 \u3164\u3140\u3157\u313a \u3164\u3140\u3157\u313b \u3164\u3140\u3157\u313c \u3164\u3140\u3157\u313d \u3164\u3140\u3157\u313e \u3164\u3140\u3157\u313f \u3164\u3140\u3157\u3140 \u3164\u3140\u3157\u3141 \u3164\u3140\u3157\u3142 \u3164\u3140\u3157\u3143 \u3164\u3140\u3157\u3144 \u3164\u3140\u3157\u3145 \u3164\u3140\u3157\u3146 \u3164\u3140\u3157\u3147 \u3164\u3140\u3157\u3148 \u3164\u3140\u3157\u3149 \u3164\u3140\u3157\u314a \u3164\u3140\u3157\u314b \u3164\u3140\u3157\u314c \u3164\u3140\u3157\u314d \u3164\u3140\u3157\u314e \u3164\u3140\u3157\u314f \u3164\u3140\u3157\u3164 ",
-" row b0_c8_: \u3164\u3140\u3158\uca46 \u3164\u3140\u3158\u3131 \u3164\u3140\u3158\u3132 \u3164\u3140\u3158\u3133 \u3164\u3140\u3158\u3134 \u3164\u3140\u3158\u3135 \u3164\u3140\u3158\u3136 \u3164\u3140\u3158\u3137 \u3164\u3140\u3158\u3138 \u3164\u3140\u3158\u3139 \u3164\u3140\u3158\u313a \u3164\u3140\u3158\u313b \u3164\u3140\u3158\u313c \u3164\u3140\u3158\u313d \u3164\u3140\u3158\u313e \u3164\u3140\u3158\u313f \u3164\u3140\u3158\u3140 \u3164\u3140\u3158\u3141 \u3164\u3140\u3158\u3142 \u3164\u3140\u3158\u3143 \u3164\u3140\u3158\u3144 \u3164\u3140\u3158\u3145 \u3164\u3140\u3158\u3146 \u3164\u3140\u3158\u3147 \u3164\u3140\u3158\u3148 \u3164\u3140\u3158\u3149 \u3164\u3140\u3158\u314a \u3164\u3140\u3158\u314b \u3164\u3140\u3158\u314c \u3164\u3140\u3158\u314d \u3164\u3140\u3158\u314e \u3164\u3140\u3158\u314f \u3164\u3140\u3158\u3164 ",
-" row b0_c9_: \u3164\u3140\u3159\uca46 \u3164\u3140\u3159\u3131 \u3164\u3140\u3159\u3132 \u3164\u3140\u3159\u3133 \u3164\u3140\u3159\u3134 \u3164\u3140\u3159\u3135 \u3164\u3140\u3159\u3136 \u3164\u3140\u3159\u3137 \u3164\u3140\u3159\u3138 \u3164\u3140\u3159\u3139 \u3164\u3140\u3159\u313a \u3164\u3140\u3159\u313b \u3164\u3140\u3159\u313c \u3164\u3140\u3159\u313d \u3164\u3140\u3159\u313e \u3164\u3140\u3159\u313f \u3164\u3140\u3159\u3140 \u3164\u3140\u3159\u3141 \u3164\u3140\u3159\u3142 \u3164\u3140\u3159\u3143 \u3164\u3140\u3159\u3144 \u3164\u3140\u3159\u3145 \u3164\u3140\u3159\u3146 \u3164\u3140\u3159\u3147 \u3164\u3140\u3159\u3148 \u3164\u3140\u3159\u3149 \u3164\u3140\u3159\u314a \u3164\u3140\u3159\u314b \u3164\u3140\u3159\u314c \u3164\u3140\u3159\u314d \u3164\u3140\u3159\u314e \u3164\u3140\u3159\u314f \u3164\u3140\u3159\u3164 ",
-" row b0_ca_: \u3164\u3140\u315a\uca46 \u3164\u3140\u315a\u3131 \u3164\u3140\u315a\u3132 \u3164\u3140\u315a\u3133 \u3164\u3140\u315a\u3134 \u3164\u3140\u315a\u3135 \u3164\u3140\u315a\u3136 \u3164\u3140\u315a\u3137 \u3164\u3140\u315a\u3138 \u3164\u3140\u315a\u3139 \u3164\u3140\u315a\u313a \u3164\u3140\u315a\u313b \u3164\u3140\u315a\u313c \u3164\u3140\u315a\u313d \u3164\u3140\u315a\u313e \u3164\u3140\u315a\u313f \u3164\u3140\u315a\u3140 \u3164\u3140\u315a\u3141 \u3164\u3140\u315a\u3142 \u3164\u3140\u315a\u3143 \u3164\u3140\u315a\u3144 \u3164\u3140\u315a\u3145 \u3164\u3140\u315a\u3146 \u3164\u3140\u315a\u3147 \u3164\u3140\u315a\u3148 \u3164\u3140\u315a\u3149 \u3164\u3140\u315a\u314a \u3164\u3140\u315a\u314b \u3164\u3140\u315a\u314c \u3164\u3140\u315a\u314d \u3164\u3140\u315a\u314e \u3164\u3140\u315a\u314f \u3164\u3140\u315a\u3164 ",
-" row b0_cb_: \u3164\u3140\u315b\uca46 \u3164\u3140\u315b\u3131 \u3164\u3140\u315b\u3132 \u3164\u3140\u315b\u3133 \u3164\u3140\u315b\u3134 \u3164\u3140\u315b\u3135 \u3164\u3140\u315b\u3136 \u3164\u3140\u315b\u3137 \u3164\u3140\u315b\u3138 \u3164\u3140\u315b\u3139 \u3164\u3140\u315b\u313a \u3164\u3140\u315b\u313b \u3164\u3140\u315b\u313c \u3164\u3140\u315b\u313d \u3164\u3140\u315b\u313e \u3164\u3140\u315b\u313f \u3164\u3140\u315b\u3140 \u3164\u3140\u315b\u3141 \u3164\u3140\u315b\u3142 \u3164\u3140\u315b\u3143 \u3164\u3140\u315b\u3144 \u3164\u3140\u315b\u3145 \u3164\u3140\u315b\u3146 \u3164\u3140\u315b\u3147 \u3164\u3140\u315b\u3148 \u3164\u3140\u315b\u3149 \u3164\u3140\u315b\u314a \u3164\u3140\u315b\u314b \u3164\u3140\u315b\u314c \u3164\u3140\u315b\u314d \u3164\u3140\u315b\u314e \u3164\u3140\u315b\u314f \u3164\u3140\u315b\u3164 ",
-" row b0_cc_: \u3164\u3140\u315c\uca46 \u3164\u3140\u315c\u3131 \u3164\u3140\u315c\u3132 \u3164\u3140\u315c\u3133 \u3164\u3140\u315c\u3134 \u3164\u3140\u315c\u3135 \u3164\u3140\u315c\u3136 \u3164\u3140\u315c\u3137 \u3164\u3140\u315c\u3138 \u3164\u3140\u315c\u3139 \u3164\u3140\u315c\u313a \u3164\u3140\u315c\u313b \u3164\u3140\u315c\u313c \u3164\u3140\u315c\u313d \u3164\u3140\u315c\u313e \u3164\u3140\u315c\u313f \u3164\u3140\u315c\u3140 \u3164\u3140\u315c\u3141 \u3164\u3140\u315c\u3142 \u3164\u3140\u315c\u3143 \u3164\u3140\u315c\u3144 \u3164\u3140\u315c\u3145 \u3164\u3140\u315c\u3146 \u3164\u3140\u315c\u3147 \u3164\u3140\u315c\u3148 \u3164\u3140\u315c\u3149 \u3164\u3140\u315c\u314a \u3164\u3140\u315c\u314b \u3164\u3140\u315c\u314c \u3164\u3140\u315c\u314d \u3164\u3140\u315c\u314e \u3164\u3140\u315c\u314f \u3164\u3140\u315c\u3164 ",
-" row b0_cd_: \u3164\u3140\u315d\uca46 \u3164\u3140\u315d\u3131 \u3164\u3140\u315d\u3132 \u3164\u3140\u315d\u3133 \u3164\u3140\u315d\u3134 \u3164\u3140\u315d\u3135 \u3164\u3140\u315d\u3136 \u3164\u3140\u315d\u3137 \u3164\u3140\u315d\u3138 \u3164\u3140\u315d\u3139 \u3164\u3140\u315d\u313a \u3164\u3140\u315d\u313b \u3164\u3140\u315d\u313c \u3164\u3140\u315d\u313d \u3164\u3140\u315d\u313e \u3164\u3140\u315d\u313f \u3164\u3140\u315d\u3140 \u3164\u3140\u315d\u3141 \u3164\u3140\u315d\u3142 \u3164\u3140\u315d\u3143 \u3164\u3140\u315d\u3144 \u3164\u3140\u315d\u3145 \u3164\u3140\u315d\u3146 \u3164\u3140\u315d\u3147 \u3164\u3140\u315d\u3148 \u3164\u3140\u315d\u3149 \u3164\u3140\u315d\u314a \u3164\u3140\u315d\u314b \u3164\u3140\u315d\u314c \u3164\u3140\u315d\u314d \u3164\u3140\u315d\u314e \u3164\u3140\u315d\u314f \u3164\u3140\u315d\u3164 ",
-" row b0_ce_: \u3164\u3140\u315e\uca46 \u3164\u3140\u315e\u3131 \u3164\u3140\u315e\u3132 \u3164\u3140\u315e\u3133 \u3164\u3140\u315e\u3134 \u3164\u3140\u315e\u3135 \u3164\u3140\u315e\u3136 \u3164\u3140\u315e\u3137 \u3164\u3140\u315e\u3138 \u3164\u3140\u315e\u3139 \u3164\u3140\u315e\u313a \u3164\u3140\u315e\u313b \u3164\u3140\u315e\u313c \u3164\u3140\u315e\u313d \u3164\u3140\u315e\u313e \u3164\u3140\u315e\u313f \u3164\u3140\u315e\u3140 \u3164\u3140\u315e\u3141 \u3164\u3140\u315e\u3142 \u3164\u3140\u315e\u3143 \u3164\u3140\u315e\u3144 \u3164\u3140\u315e\u3145 \u3164\u3140\u315e\u3146 \u3164\u3140\u315e\u3147 \u3164\u3140\u315e\u3148 \u3164\u3140\u315e\u3149 \u3164\u3140\u315e\u314a \u3164\u3140\u315e\u314b \u3164\u3140\u315e\u314c \u3164\u3140\u315e\u314d \u3164\u3140\u315e\u314e \u3164\u3140\u315e\u314f \u3164\u3140\u315e\u3164 ",
-" row b0_cf_: \u3164\u3140\u315f\uca46 \u3164\u3140\u315f\u3131 \u3164\u3140\u315f\u3132 \u3164\u3140\u315f\u3133 \u3164\u3140\u315f\u3134 \u3164\u3140\u315f\u3135 \u3164\u3140\u315f\u3136 \u3164\u3140\u315f\u3137 \u3164\u3140\u315f\u3138 \u3164\u3140\u315f\u3139 \u3164\u3140\u315f\u313a \u3164\u3140\u315f\u313b \u3164\u3140\u315f\u313c \u3164\u3140\u315f\u313d \u3164\u3140\u315f\u313e \u3164\u3140\u315f\u313f \u3164\u3140\u315f\u3140 \u3164\u3140\u315f\u3141 \u3164\u3140\u315f\u3142 \u3164\u3140\u315f\u3143 \u3164\u3140\u315f\u3144 \u3164\u3140\u315f\u3145 \u3164\u3140\u315f\u3146 \u3164\u3140\u315f\u3147 \u3164\u3140\u315f\u3148 \u3164\u3140\u315f\u3149 \u3164\u3140\u315f\u314a \u3164\u3140\u315f\u314b \u3164\u3140\u315f\u314c \u3164\u3140\u315f\u314d \u3164\u3140\u315f\u314e \u3164\u3140\u315f\u314f \u3164\u3140\u315f\u3164 ",
-" row b0_d0_: \u3164\u3140\u3160\uca46 \u3164\u3140\u3160\u3131 \u3164\u3140\u3160\u3132 \u3164\u3140\u3160\u3133 \u3164\u3140\u3160\u3134 \u3164\u3140\u3160\u3135 \u3164\u3140\u3160\u3136 \u3164\u3140\u3160\u3137 \u3164\u3140\u3160\u3138 \u3164\u3140\u3160\u3139 \u3164\u3140\u3160\u313a \u3164\u3140\u3160\u313b \u3164\u3140\u3160\u313c \u3164\u3140\u3160\u313d \u3164\u3140\u3160\u313e \u3164\u3140\u3160\u313f \u3164\u3140\u3160\u3140 \u3164\u3140\u3160\u3141 \u3164\u3140\u3160\u3142 \u3164\u3140\u3160\u3143 \u3164\u3140\u3160\u3144 \u3164\u3140\u3160\u3145 \u3164\u3140\u3160\u3146 \u3164\u3140\u3160\u3147 \u3164\u3140\u3160\u3148 \u3164\u3140\u3160\u3149 \u3164\u3140\u3160\u314a \u3164\u3140\u3160\u314b \u3164\u3140\u3160\u314c \u3164\u3140\u3160\u314d \u3164\u3140\u3160\u314e \u3164\u3140\u3160\u314f \u3164\u3140\u3160\u3164 ",
-" row b0_d1_: \u3164\u3140\u3161\uca46 \u3164\u3140\u3161\u3131 \u3164\u3140\u3161\u3132 \u3164\u3140\u3161\u3133 \u3164\u3140\u3161\u3134 \u3164\u3140\u3161\u3135 \u3164\u3140\u3161\u3136 \u3164\u3140\u3161\u3137 \u3164\u3140\u3161\u3138 \u3164\u3140\u3161\u3139 \u3164\u3140\u3161\u313a \u3164\u3140\u3161\u313b \u3164\u3140\u3161\u313c \u3164\u3140\u3161\u313d \u3164\u3140\u3161\u313e \u3164\u3140\u3161\u313f \u3164\u3140\u3161\u3140 \u3164\u3140\u3161\u3141 \u3164\u3140\u3161\u3142 \u3164\u3140\u3161\u3143 \u3164\u3140\u3161\u3144 \u3164\u3140\u3161\u3145 \u3164\u3140\u3161\u3146 \u3164\u3140\u3161\u3147 \u3164\u3140\u3161\u3148 \u3164\u3140\u3161\u3149 \u3164\u3140\u3161\u314a \u3164\u3140\u3161\u314b \u3164\u3140\u3161\u314c \u3164\u3140\u3161\u314d \u3164\u3140\u3161\u314e \u3164\u3140\u3161\u314f \u3164\u3140\u3161\u3164 ",
-" row b0_d2_: \u3164\u3140\u3162\uca46 \u3164\u3140\u3162\u3131 \u3164\u3140\u3162\u3132 \u3164\u3140\u3162\u3133 \u3164\u3140\u3162\u3134 \u3164\u3140\u3162\u3135 \u3164\u3140\u3162\u3136 \u3164\u3140\u3162\u3137 \u3164\u3140\u3162\u3138 \u3164\u3140\u3162\u3139 \u3164\u3140\u3162\u313a \u3164\u3140\u3162\u313b \u3164\u3140\u3162\u313c \u3164\u3140\u3162\u313d \u3164\u3140\u3162\u313e \u3164\u3140\u3162\u313f \u3164\u3140\u3162\u3140 \u3164\u3140\u3162\u3141 \u3164\u3140\u3162\u3142 \u3164\u3140\u3162\u3143 \u3164\u3140\u3162\u3144 \u3164\u3140\u3162\u3145 \u3164\u3140\u3162\u3146 \u3164\u3140\u3162\u3147 \u3164\u3140\u3162\u3148 \u3164\u3140\u3162\u3149 \u3164\u3140\u3162\u314a \u3164\u3140\u3162\u314b \u3164\u3140\u3162\u314c \u3164\u3140\u3162\u314d \u3164\u3140\u3162\u314e \u3164\u3140\u3162\u314f \u3164\u3140\u3162\u3164 ",
-" row b0_d3_: \u3164\u3140\u3163\uca46 \u3164\u3140\u3163\u3131 \u3164\u3140\u3163\u3132 \u3164\u3140\u3163\u3133 \u3164\u3140\u3163\u3134 \u3164\u3140\u3163\u3135 \u3164\u3140\u3163\u3136 \u3164\u3140\u3163\u3137 \u3164\u3140\u3163\u3138 \u3164\u3140\u3163\u3139 \u3164\u3140\u3163\u313a \u3164\u3140\u3163\u313b \u3164\u3140\u3163\u313c \u3164\u3140\u3163\u313d \u3164\u3140\u3163\u313e \u3164\u3140\u3163\u313f \u3164\u3140\u3163\u3140 \u3164\u3140\u3163\u3141 \u3164\u3140\u3163\u3142 \u3164\u3140\u3163\u3143 \u3164\u3140\u3163\u3144 \u3164\u3140\u3163\u3145 \u3164\u3140\u3163\u3146 \u3164\u3140\u3163\u3147 \u3164\u3140\u3163\u3148 \u3164\u3140\u3163\u3149 \u3164\u3140\u3163\u314a \u3164\u3140\u3163\u314b \u3164\u3140\u3163\u314c \u3164\u3140\u3163\u314d \u3164\u3140\u3163\u314e \u3164\u3140\u3163\u314f \u3164\u3140\u3163\u3164 ",
-" row b0_d4_: \u3164\u3140\u3164\uca46 \u3164\u3140\u3164\u3131 \u3164\u3140\u3164\u3132 \u3164\u3140\u3164\u3133 \u3164\u3140\u3164\u3134 \u3164\u3140\u3164\u3135 \u3164\u3140\u3164\u3136 \u3164\u3140\u3164\u3137 \u3164\u3140\u3164\u3138 \u3164\u3140\u3164\u3139 \u3164\u3140\u3164\u313a \u3164\u3140\u3164\u313b \u3164\u3140\u3164\u313c \u3164\u3140\u3164\u313d \u3164\u3140\u3164\u313e \u3164\u3140\u3164\u313f \u3164\u3140\u3164\u3140 \u3164\u3140\u3164\u3141 \u3164\u3140\u3164\u3142 \u3164\u3140\u3164\u3143 \u3164\u3140\u3164\u3144 \u3164\u3140\u3164\u3145 \u3164\u3140\u3164\u3146 \u3164\u3140\u3164\u3147 \u3164\u3140\u3164\u3148 \u3164\u3140\u3164\u3149 \u3164\u3140\u3164\u314a \u3164\u3140\u3164\u314b \u3164\u3140\u3164\u314c \u3164\u3140\u3164\u314d \u3164\u3140\u3164\u314e \u3164\u3140\u3164\u314f \u3164\u3140\u3164\u3164 ",
-" row b1_be_: \u3164\u3141\u314e\uca46 \u3164\u3141\u314e\u3131 \u3164\u3141\u314e\u3132 \u3164\u3141\u314e\u3133 \u3164\u3141\u314e\u3134 \u3164\u3141\u314e\u3135 \u3164\u3141\u314e\u3136 \u3164\u3141\u314e\u3137 \u3164\u3141\u314e\u3138 \u3164\u3141\u314e\u3139 \u3164\u3141\u314e\u313a \u3164\u3141\u314e\u313b \u3164\u3141\u314e\u313c \u3164\u3141\u314e\u313d \u3164\u3141\u314e\u313e \u3164\u3141\u314e\u313f \u3164\u3141\u314e\u3140 \u3164\u3141\u314e\u3141 \u3164\u3141\u314e\u3142 \u3164\u3141\u314e\u3143 \u3164\u3141\u314e\u3144 \u3164\u3141\u314e\u3145 \u3164\u3141\u314e\u3146 \u3164\u3141\u314e\u3147 \u3164\u3141\u314e\u3148 \u3164\u3141\u314e\u3149 \u3164\u3141\u314e\u314a \u3164\u3141\u314e\u314b \u3164\u3141\u314e\u314c \u3164\u3141\u314e\u314d \u3164\u3141\u314e\u314e \u3164\u3141\u314e\u314f \u3164\u3141\u314e\u3164 ",
-" row b1_bf_: \u3164\u3141\u314f\uca46 \ub9c9 \ub9ca \ub9cb \ub9cc \ub9cd \ub9ce \ub9cf \u3164\u3141\u314f\u3138 \ub9d0 \ub9d1 \ub9d2 \ub9d3 \ub9d4 \ub9d5 \ub9d6 \ub9d7 \ub9d8 \ub9d9 \u3164\u3141\u314f\u3143 \ub9da \ub9db \ub9dc \ub9dd \ub9de \u3164\u3141\u314f\u3149 \ub9df \ub9e0 \ub9e1 \ub9e2 \ub9e3 \u3164\u3141\u314f\u314f \ub9c8 ",
-" row b1_c0_: \u3164\u3141\u3150\uca46 \ub9e5 \ub9e6 \ub9e7 \ub9e8 \ub9e9 \ub9ea \ub9eb \u3164\u3141\u3150\u3138 \ub9ec \ub9ed \ub9ee \ub9ef \ub9f0 \ub9f1 \ub9f2 \ub9f3 \ub9f4 \ub9f5 \u3164\u3141\u3150\u3143 \ub9f6 \ub9f7 \ub9f8 \ub9f9 \ub9fa \u3164\u3141\u3150\u3149 \ub9fb \ub9fc \ub9fd \ub9fe \ub9ff \u3164\u3141\u3150\u314f \ub9e4 ",
-" row b1_c1_: \u3164\u3141\u3151\uca46 \uba01 \uba02 \uba03 \uba04 \uba05 \uba06 \uba07 \u3164\u3141\u3151\u3138 \uba08 \uba09 \uba0a \uba0b \uba0c \uba0d \uba0e \uba0f \uba10 \uba11 \u3164\u3141\u3151\u3143 \uba12 \uba13 \uba14 \uba15 \uba16 \u3164\u3141\u3151\u3149 \uba17 \uba18 \uba19 \uba1a \uba1b \u3164\u3141\u3151\u314f \uba00 ",
-" row b1_c2_: \u3164\u3141\u3152\uca46 \uba1d \uba1e \uba1f \uba20 \uba21 \uba22 \uba23 \u3164\u3141\u3152\u3138 \uba24 \uba25 \uba26 \uba27 \uba28 \uba29 \uba2a \uba2b \uba2c \uba2d \u3164\u3141\u3152\u3143 \uba2e \uba2f \uba30 \uba31 \uba32 \u3164\u3141\u3152\u3149 \uba33 \uba34 \uba35 \uba36 \uba37 \u3164\u3141\u3152\u314f \uba1c ",
-" row b1_c3_: \u3164\u3141\u3153\uca46 \uba39 \uba3a \uba3b \uba3c \uba3d \uba3e \uba3f \u3164\u3141\u3153\u3138 \uba40 \uba41 \uba42 \uba43 \uba44 \uba45 \uba46 \uba47 \uba48 \uba49 \u3164\u3141\u3153\u3143 \uba4a \uba4b \uba4c \uba4d \uba4e \u3164\u3141\u3153\u3149 \uba4f \uba50 \uba51 \uba52 \uba53 \u3164\u3141\u3153\u314f \uba38 ",
-" row b1_c4_: \u3164\u3141\u3154\uca46 \uba55 \uba56 \uba57 \uba58 \uba59 \uba5a \uba5b \u3164\u3141\u3154\u3138 \uba5c \uba5d \uba5e \uba5f \uba60 \uba61 \uba62 \uba63 \uba64 \uba65 \u3164\u3141\u3154\u3143 \uba66 \uba67 \uba68 \uba69 \uba6a \u3164\u3141\u3154\u3149 \uba6b \uba6c \uba6d \uba6e \uba6f \u3164\u3141\u3154\u314f \uba54 ",
-" row b1_c5_: \u3164\u3141\u3155\uca46 \uba71 \uba72 \uba73 \uba74 \uba75 \uba76 \uba77 \u3164\u3141\u3155\u3138 \uba78 \uba79 \uba7a \uba7b \uba7c \uba7d \uba7e \uba7f \uba80 \uba81 \u3164\u3141\u3155\u3143 \uba82 \uba83 \uba84 \uba85 \uba86 \u3164\u3141\u3155\u3149 \uba87 \uba88 \uba89 \uba8a \uba8b \u3164\u3141\u3155\u314f \uba70 ",
-" row b1_c6_: \u3164\u3141\u3156\uca46 \uba8d \uba8e \uba8f \uba90 \uba91 \uba92 \uba93 \u3164\u3141\u3156\u3138 \uba94 \uba95 \uba96 \uba97 \uba98 \uba99 \uba9a \uba9b \uba9c \uba9d \u3164\u3141\u3156\u3143 \uba9e \uba9f \ubaa0 \ubaa1 \ubaa2 \u3164\u3141\u3156\u3149 \ubaa3 \ubaa4 \ubaa5 \ubaa6 \ubaa7 \u3164\u3141\u3156\u314f \uba8c ",
-" row b1_c7_: \u3164\u3141\u3157\uca46 \ubaa9 \ubaaa \ubaab \ubaac \ubaad \ubaae \ubaaf \u3164\u3141\u3157\u3138 \ubab0 \ubab1 \ubab2 \ubab3 \ubab4 \ubab5 \ubab6 \ubab7 \ubab8 \ubab9 \u3164\u3141\u3157\u3143 \ubaba \ubabb \ubabc \ubabd \ubabe \u3164\u3141\u3157\u3149 \ubabf \ubac0 \ubac1 \ubac2 \ubac3 \u3164\u3141\u3157\u314f \ubaa8 ",
-" row b1_c8_: \u3164\u3141\u3158\uca46 \ubac5 \ubac6 \ubac7 \ubac8 \ubac9 \ubaca \ubacb \u3164\u3141\u3158\u3138 \ubacc \ubacd \ubace \ubacf \ubad0 \ubad1 \ubad2 \ubad3 \ubad4 \ubad5 \u3164\u3141\u3158\u3143 \ubad6 \ubad7 \ubad8 \ubad9 \ubada \u3164\u3141\u3158\u3149 \ubadb \ubadc \ubadd \ubade \ubadf \u3164\u3141\u3158\u314f \ubac4 ",
-" row b1_c9_: \u3164\u3141\u3159\uca46 \ubae1 \ubae2 \ubae3 \ubae4 \ubae5 \ubae6 \ubae7 \u3164\u3141\u3159\u3138 \ubae8 \ubae9 \ubaea \ubaeb \ubaec \ubaed \ubaee \ubaef \ubaf0 \ubaf1 \u3164\u3141\u3159\u3143 \ubaf2 \ubaf3 \ubaf4 \ubaf5 \ubaf6 \u3164\u3141\u3159\u3149 \ubaf7 \ubaf8 \ubaf9 \ubafa \ubafb \u3164\u3141\u3159\u314f \ubae0 ",
-" row b1_ca_: \u3164\u3141\u315a\uca46 \ubafd \ubafe \ubaff \ubb00 \ubb01 \ubb02 \ubb03 \u3164\u3141\u315a\u3138 \ubb04 \ubb05 \ubb06 \ubb07 \ubb08 \ubb09 \ubb0a \ubb0b \ubb0c \ubb0d \u3164\u3141\u315a\u3143 \ubb0e \ubb0f \ubb10 \ubb11 \ubb12 \u3164\u3141\u315a\u3149 \ubb13 \ubb14 \ubb15 \ubb16 \ubb17 \u3164\u3141\u315a\u314f \ubafc ",
-" row b1_cb_: \u3164\u3141\u315b\uca46 \ubb19 \ubb1a \ubb1b \ubb1c \ubb1d \ubb1e \ubb1f \u3164\u3141\u315b\u3138 \ubb20 \ubb21 \ubb22 \ubb23 \ubb24 \ubb25 \ubb26 \ubb27 \ubb28 \ubb29 \u3164\u3141\u315b\u3143 \ubb2a \ubb2b \ubb2c \ubb2d \ubb2e \u3164\u3141\u315b\u3149 \ubb2f \ubb30 \ubb31 \ubb32 \ubb33 \u3164\u3141\u315b\u314f \ubb18 ",
-" row b1_cc_: \u3164\u3141\u315c\uca46 \ubb35 \ubb36 \ubb37 \ubb38 \ubb39 \ubb3a \ubb3b \u3164\u3141\u315c\u3138 \ubb3c \ubb3d \ubb3e \ubb3f \ubb40 \ubb41 \ubb42 \ubb43 \ubb44 \ubb45 \u3164\u3141\u315c\u3143 \ubb46 \ubb47 \ubb48 \ubb49 \ubb4a \u3164\u3141\u315c\u3149 \ubb4b \ubb4c \ubb4d \ubb4e \ubb4f \u3164\u3141\u315c\u314f \ubb34 ",
-" row b1_cd_: \u3164\u3141\u315d\uca46 \ubb51 \ubb52 \ubb53 \ubb54 \ubb55 \ubb56 \ubb57 \u3164\u3141\u315d\u3138 \ubb58 \ubb59 \ubb5a \ubb5b \ubb5c \ubb5d \ubb5e \ubb5f \ubb60 \ubb61 \u3164\u3141\u315d\u3143 \ubb62 \ubb63 \ubb64 \ubb65 \ubb66 \u3164\u3141\u315d\u3149 \ubb67 \ubb68 \ubb69 \ubb6a \ubb6b \u3164\u3141\u315d\u314f \ubb50 ",
-" row b1_ce_: \u3164\u3141\u315e\uca46 \ubb6d \ubb6e \ubb6f \ubb70 \ubb71 \ubb72 \ubb73 \u3164\u3141\u315e\u3138 \ubb74 \ubb75 \ubb76 \ubb77 \ubb78 \ubb79 \ubb7a \ubb7b \ubb7c \ubb7d \u3164\u3141\u315e\u3143 \ubb7e \ubb7f \ubb80 \ubb81 \ubb82 \u3164\u3141\u315e\u3149 \ubb83 \ubb84 \ubb85 \ubb86 \ubb87 \u3164\u3141\u315e\u314f \ubb6c ",
-" row b1_cf_: \u3164\u3141\u315f\uca46 \ubb89 \ubb8a \ubb8b \ubb8c \ubb8d \ubb8e \ubb8f \u3164\u3141\u315f\u3138 \ubb90 \ubb91 \ubb92 \ubb93 \ubb94 \ubb95 \ubb96 \ubb97 \ubb98 \ubb99 \u3164\u3141\u315f\u3143 \ubb9a \ubb9b \ubb9c \ubb9d \ubb9e \u3164\u3141\u315f\u3149 \ubb9f \ubba0 \ubba1 \ubba2 \ubba3 \u3164\u3141\u315f\u314f \ubb88 ",
-" row b1_d0_: \u3164\u3141\u3160\uca46 \ubba5 \ubba6 \ubba7 \ubba8 \ubba9 \ubbaa \ubbab \u3164\u3141\u3160\u3138 \ubbac \ubbad \ubbae \ubbaf \ubbb0 \ubbb1 \ubbb2 \ubbb3 \ubbb4 \ubbb5 \u3164\u3141\u3160\u3143 \ubbb6 \ubbb7 \ubbb8 \ubbb9 \ubbba \u3164\u3141\u3160\u3149 \ubbbb \ubbbc \ubbbd \ubbbe \ubbbf \u3164\u3141\u3160\u314f \ubba4 ",
-" row b1_d1_: \u3164\u3141\u3161\uca46 \ubbc1 \ubbc2 \ubbc3 \ubbc4 \ubbc5 \ubbc6 \ubbc7 \u3164\u3141\u3161\u3138 \ubbc8 \ubbc9 \ubbca \ubbcb \ubbcc \ubbcd \ubbce \ubbcf \ubbd0 \ubbd1 \u3164\u3141\u3161\u3143 \ubbd2 \ubbd3 \ubbd4 \ubbd5 \ubbd6 \u3164\u3141\u3161\u3149 \ubbd7 \ubbd8 \ubbd9 \ubbda \ubbdb \u3164\u3141\u3161\u314f \ubbc0 ",
-" row b1_d2_: \u3164\u3141\u3162\uca46 \ubbdd \ubbde \ubbdf \ubbe0 \ubbe1 \ubbe2 \ubbe3 \u3164\u3141\u3162\u3138 \ubbe4 \ubbe5 \ubbe6 \ubbe7 \ubbe8 \ubbe9 \ubbea \ubbeb \ubbec \ubbed \u3164\u3141\u3162\u3143 \ubbee \ubbef \ubbf0 \ubbf1 \ubbf2 \u3164\u3141\u3162\u3149 \ubbf3 \ubbf4 \ubbf5 \ubbf6 \ubbf7 \u3164\u3141\u3162\u314f \ubbdc ",
-" row b1_d3_: \u3164\u3141\u3163\uca46 \ubbf9 \ubbfa \ubbfb \ubbfc \ubbfd \ubbfe \ubbff \u3164\u3141\u3163\u3138 \ubc00 \ubc01 \ubc02 \ubc03 \ubc04 \ubc05 \ubc06 \ubc07 \ubc08 \ubc09 \u3164\u3141\u3163\u3143 \ubc0a \ubc0b \ubc0c \ubc0d \ubc0e \u3164\u3141\u3163\u3149 \ubc0f \ubc10 \ubc11 \ubc12 \ubc13 \u3164\u3141\u3163\u314f \ubbf8 ",
-" row b1_d4_: \u3164\u3141\u3164\uca46 \u3164\u3141\u3164\u3131 \u3164\u3141\u3164\u3132 \u3164\u3141\u3164\u3133 \u3164\u3141\u3164\u3134 \u3164\u3141\u3164\u3135 \u3164\u3141\u3164\u3136 \u3164\u3141\u3164\u3137 \u3164\u3141\u3164\u3138 \u3164\u3141\u3164\u3139 \u3164\u3141\u3164\u313a \u3164\u3141\u3164\u313b \u3164\u3141\u3164\u313c \u3164\u3141\u3164\u313d \u3164\u3141\u3164\u313e \u3164\u3141\u3164\u313f \u3164\u3141\u3164\u3140 \u3164\u3141\u3164\u3141 \u3164\u3141\u3164\u3142 \u3164\u3141\u3164\u3143 \u3164\u3141\u3164\u3144 \u3164\u3141\u3164\u3145 \u3164\u3141\u3164\u3146 \u3164\u3141\u3164\u3147 \u3164\u3141\u3164\u3148 \u3164\u3141\u3164\u3149 \u3164\u3141\u3164\u314a \u3164\u3141\u3164\u314b \u3164\u3141\u3164\u314c \u3164\u3141\u3164\u314d \u3164\u3141\u3164\u314e \u3164\u3141\u3164\u314f \u3164\u3141\u3164\u3164 ",
-" row b2_be_: \u3164\u3142\u314e\uca46 \u3164\u3142\u314e\u3131 \u3164\u3142\u314e\u3132 \u3164\u3142\u314e\u3133 \u3164\u3142\u314e\u3134 \u3164\u3142\u314e\u3135 \u3164\u3142\u314e\u3136 \u3164\u3142\u314e\u3137 \u3164\u3142\u314e\u3138 \u3164\u3142\u314e\u3139 \u3164\u3142\u314e\u313a \u3164\u3142\u314e\u313b \u3164\u3142\u314e\u313c \u3164\u3142\u314e\u313d \u3164\u3142\u314e\u313e \u3164\u3142\u314e\u313f \u3164\u3142\u314e\u3140 \u3164\u3142\u314e\u3141 \u3164\u3142\u314e\u3142 \u3164\u3142\u314e\u3143 \u3164\u3142\u314e\u3144 \u3164\u3142\u314e\u3145 \u3164\u3142\u314e\u3146 \u3164\u3142\u314e\u3147 \u3164\u3142\u314e\u3148 \u3164\u3142\u314e\u3149 \u3164\u3142\u314e\u314a \u3164\u3142\u314e\u314b \u3164\u3142\u314e\u314c \u3164\u3142\u314e\u314d \u3164\u3142\u314e\u314e \u3164\u3142\u314e\u314f \u3164\u3142\u314e\u3164 ",
-" row b2_bf_: \u3164\u3142\u314f\uca46 \ubc15 \ubc16 \ubc17 \ubc18 \ubc19 \ubc1a \ubc1b \u3164\u3142\u314f\u3138 \ubc1c \ubc1d \ubc1e \ubc1f \ubc20 \ubc21 \ubc22 \ubc23 \ubc24 \ubc25 \u3164\u3142\u314f\u3143 \ubc26 \ubc27 \ubc28 \ubc29 \ubc2a \u3164\u3142\u314f\u3149 \ubc2b \ubc2c \ubc2d \ubc2e \ubc2f \u3164\u3142\u314f\u314f \ubc14 ",
-" row b2_c0_: \u3164\u3142\u3150\uca46 \ubc31 \ubc32 \ubc33 \ubc34 \ubc35 \ubc36 \ubc37 \u3164\u3142\u3150\u3138 \ubc38 \ubc39 \ubc3a \ubc3b \ubc3c \ubc3d \ubc3e \ubc3f \ubc40 \ubc41 \u3164\u3142\u3150\u3143 \ubc42 \ubc43 \ubc44 \ubc45 \ubc46 \u3164\u3142\u3150\u3149 \ubc47 \ubc48 \ubc49 \ubc4a \ubc4b \u3164\u3142\u3150\u314f \ubc30 ",
-" row b2_c1_: \u3164\u3142\u3151\uca46 \ubc4d \ubc4e \ubc4f \ubc50 \ubc51 \ubc52 \ubc53 \u3164\u3142\u3151\u3138 \ubc54 \ubc55 \ubc56 \ubc57 \ubc58 \ubc59 \ubc5a \ubc5b \ubc5c \ubc5d \u3164\u3142\u3151\u3143 \ubc5e \ubc5f \ubc60 \ubc61 \ubc62 \u3164\u3142\u3151\u3149 \ubc63 \ubc64 \ubc65 \ubc66 \ubc67 \u3164\u3142\u3151\u314f \ubc4c ",
-" row b2_c2_: \u3164\u3142\u3152\uca46 \ubc69 \ubc6a \ubc6b \ubc6c \ubc6d \ubc6e \ubc6f \u3164\u3142\u3152\u3138 \ubc70 \ubc71 \ubc72 \ubc73 \ubc74 \ubc75 \ubc76 \ubc77 \ubc78 \ubc79 \u3164\u3142\u3152\u3143 \ubc7a \ubc7b \ubc7c \ubc7d \ubc7e \u3164\u3142\u3152\u3149 \ubc7f \ubc80 \ubc81 \ubc82 \ubc83 \u3164\u3142\u3152\u314f \ubc68 ",
-" row b2_c3_: \u3164\u3142\u3153\uca46 \ubc85 \ubc86 \ubc87 \ubc88 \ubc89 \ubc8a \ubc8b \u3164\u3142\u3153\u3138 \ubc8c \ubc8d \ubc8e \ubc8f \ubc90 \ubc91 \ubc92 \ubc93 \ubc94 \ubc95 \u3164\u3142\u3153\u3143 \ubc96 \ubc97 \ubc98 \ubc99 \ubc9a \u3164\u3142\u3153\u3149 \ubc9b \ubc9c \ubc9d \ubc9e \ubc9f \u3164\u3142\u3153\u314f \ubc84 ",
-" row b2_c4_: \u3164\u3142\u3154\uca46 \ubca1 \ubca2 \ubca3 \ubca4 \ubca5 \ubca6 \ubca7 \u3164\u3142\u3154\u3138 \ubca8 \ubca9 \ubcaa \ubcab \ubcac \ubcad \ubcae \ubcaf \ubcb0 \ubcb1 \u3164\u3142\u3154\u3143 \ubcb2 \ubcb3 \ubcb4 \ubcb5 \ubcb6 \u3164\u3142\u3154\u3149 \ubcb7 \ubcb8 \ubcb9 \ubcba \ubcbb \u3164\u3142\u3154\u314f \ubca0 ",
-" row b2_c5_: \u3164\u3142\u3155\uca46 \ubcbd \ubcbe \ubcbf \ubcc0 \ubcc1 \ubcc2 \ubcc3 \u3164\u3142\u3155\u3138 \ubcc4 \ubcc5 \ubcc6 \ubcc7 \ubcc8 \ubcc9 \ubcca \ubccb \ubccc \ubccd \u3164\u3142\u3155\u3143 \ubcce \ubccf \ubcd0 \ubcd1 \ubcd2 \u3164\u3142\u3155\u3149 \ubcd3 \ubcd4 \ubcd5 \ubcd6 \ubcd7 \u3164\u3142\u3155\u314f \ubcbc ",
-" row b2_c6_: \u3164\u3142\u3156\uca46 \ubcd9 \ubcda \ubcdb \ubcdc \ubcdd \ubcde \ubcdf \u3164\u3142\u3156\u3138 \ubce0 \ubce1 \ubce2 \ubce3 \ubce4 \ubce5 \ubce6 \ubce7 \ubce8 \ubce9 \u3164\u3142\u3156\u3143 \ubcea \ubceb \ubcec \ubced \ubcee \u3164\u3142\u3156\u3149 \ubcef \ubcf0 \ubcf1 \ubcf2 \ubcf3 \u3164\u3142\u3156\u314f \ubcd8 ",
-" row b2_c7_: \u3164\u3142\u3157\uca46 \ubcf5 \ubcf6 \ubcf7 \ubcf8 \ubcf9 \ubcfa \ubcfb \u3164\u3142\u3157\u3138 \ubcfc \ubcfd \ubcfe \ubcff \ubd00 \ubd01 \ubd02 \ubd03 \ubd04 \ubd05 \u3164\u3142\u3157\u3143 \ubd06 \ubd07 \ubd08 \ubd09 \ubd0a \u3164\u3142\u3157\u3149 \ubd0b \ubd0c \ubd0d \ubd0e \ubd0f \u3164\u3142\u3157\u314f \ubcf4 ",
-" row b2_c8_: \u3164\u3142\u3158\uca46 \ubd11 \ubd12 \ubd13 \ubd14 \ubd15 \ubd16 \ubd17 \u3164\u3142\u3158\u3138 \ubd18 \ubd19 \ubd1a \ubd1b \ubd1c \ubd1d \ubd1e \ubd1f \ubd20 \ubd21 \u3164\u3142\u3158\u3143 \ubd22 \ubd23 \ubd24 \ubd25 \ubd26 \u3164\u3142\u3158\u3149 \ubd27 \ubd28 \ubd29 \ubd2a \ubd2b \u3164\u3142\u3158\u314f \ubd10 ",
-" row b2_c9_: \u3164\u3142\u3159\uca46 \ubd2d \ubd2e \ubd2f \ubd30 \ubd31 \ubd32 \ubd33 \u3164\u3142\u3159\u3138 \ubd34 \ubd35 \ubd36 \ubd37 \ubd38 \ubd39 \ubd3a \ubd3b \ubd3c \ubd3d \u3164\u3142\u3159\u3143 \ubd3e \ubd3f \ubd40 \ubd41 \ubd42 \u3164\u3142\u3159\u3149 \ubd43 \ubd44 \ubd45 \ubd46 \ubd47 \u3164\u3142\u3159\u314f \ubd2c ",
-" row b2_ca_: \u3164\u3142\u315a\uca46 \ubd49 \ubd4a \ubd4b \ubd4c \ubd4d \ubd4e \ubd4f \u3164\u3142\u315a\u3138 \ubd50 \ubd51 \ubd52 \ubd53 \ubd54 \ubd55 \ubd56 \ubd57 \ubd58 \ubd59 \u3164\u3142\u315a\u3143 \ubd5a \ubd5b \ubd5c \ubd5d \ubd5e \u3164\u3142\u315a\u3149 \ubd5f \ubd60 \ubd61 \ubd62 \ubd63 \u3164\u3142\u315a\u314f \ubd48 ",
-" row b2_cb_: \u3164\u3142\u315b\uca46 \ubd65 \ubd66 \ubd67 \ubd68 \ubd69 \ubd6a \ubd6b \u3164\u3142\u315b\u3138 \ubd6c \ubd6d \ubd6e \ubd6f \ubd70 \ubd71 \ubd72 \ubd73 \ubd74 \ubd75 \u3164\u3142\u315b\u3143 \ubd76 \ubd77 \ubd78 \ubd79 \ubd7a \u3164\u3142\u315b\u3149 \ubd7b \ubd7c \ubd7d \ubd7e \ubd7f \u3164\u3142\u315b\u314f \ubd64 ",
-" row b2_cc_: \u3164\u3142\u315c\uca46 \ubd81 \ubd82 \ubd83 \ubd84 \ubd85 \ubd86 \ubd87 \u3164\u3142\u315c\u3138 \ubd88 \ubd89 \ubd8a \ubd8b \ubd8c \ubd8d \ubd8e \ubd8f \ubd90 \ubd91 \u3164\u3142\u315c\u3143 \ubd92 \ubd93 \ubd94 \ubd95 \ubd96 \u3164\u3142\u315c\u3149 \ubd97 \ubd98 \ubd99 \ubd9a \ubd9b \u3164\u3142\u315c\u314f \ubd80 ",
-" row b2_cd_: \u3164\u3142\u315d\uca46 \ubd9d \ubd9e \ubd9f \ubda0 \ubda1 \ubda2 \ubda3 \u3164\u3142\u315d\u3138 \ubda4 \ubda5 \ubda6 \ubda7 \ubda8 \ubda9 \ubdaa \ubdab \ubdac \ubdad \u3164\u3142\u315d\u3143 \ubdae \ubdaf \ubdb0 \ubdb1 \ubdb2 \u3164\u3142\u315d\u3149 \ubdb3 \ubdb4 \ubdb5 \ubdb6 \ubdb7 \u3164\u3142\u315d\u314f \ubd9c ",
-" row b2_ce_: \u3164\u3142\u315e\uca46 \ubdb9 \ubdba \ubdbb \ubdbc \ubdbd \ubdbe \ubdbf \u3164\u3142\u315e\u3138 \ubdc0 \ubdc1 \ubdc2 \ubdc3 \ubdc4 \ubdc5 \ubdc6 \ubdc7 \ubdc8 \ubdc9 \u3164\u3142\u315e\u3143 \ubdca \ubdcb \ubdcc \ubdcd \ubdce \u3164\u3142\u315e\u3149 \ubdcf \ubdd0 \ubdd1 \ubdd2 \ubdd3 \u3164\u3142\u315e\u314f \ubdb8 ",
-" row b2_cf_: \u3164\u3142\u315f\uca46 \ubdd5 \ubdd6 \ubdd7 \ubdd8 \ubdd9 \ubdda \ubddb \u3164\u3142\u315f\u3138 \ubddc \ubddd \ubdde \ubddf \ubde0 \ubde1 \ubde2 \ubde3 \ubde4 \ubde5 \u3164\u3142\u315f\u3143 \ubde6 \ubde7 \ubde8 \ubde9 \ubdea \u3164\u3142\u315f\u3149 \ubdeb \ubdec \ubded \ubdee \ubdef \u3164\u3142\u315f\u314f \ubdd4 ",
-" row b2_d0_: \u3164\u3142\u3160\uca46 \ubdf1 \ubdf2 \ubdf3 \ubdf4 \ubdf5 \ubdf6 \ubdf7 \u3164\u3142\u3160\u3138 \ubdf8 \ubdf9 \ubdfa \ubdfb \ubdfc \ubdfd \ubdfe \ubdff \ube00 \ube01 \u3164\u3142\u3160\u3143 \ube02 \ube03 \ube04 \ube05 \ube06 \u3164\u3142\u3160\u3149 \ube07 \ube08 \ube09 \ube0a \ube0b \u3164\u3142\u3160\u314f \ubdf0 ",
-" row b2_d1_: \u3164\u3142\u3161\uca46 \ube0d \ube0e \ube0f \ube10 \ube11 \ube12 \ube13 \u3164\u3142\u3161\u3138 \ube14 \ube15 \ube16 \ube17 \ube18 \ube19 \ube1a \ube1b \ube1c \ube1d \u3164\u3142\u3161\u3143 \ube1e \ube1f \ube20 \ube21 \ube22 \u3164\u3142\u3161\u3149 \ube23 \ube24 \ube25 \ube26 \ube27 \u3164\u3142\u3161\u314f \ube0c ",
-" row b2_d2_: \u3164\u3142\u3162\uca46 \ube29 \ube2a \ube2b \ube2c \ube2d \ube2e \ube2f \u3164\u3142\u3162\u3138 \ube30 \ube31 \ube32 \ube33 \ube34 \ube35 \ube36 \ube37 \ube38 \ube39 \u3164\u3142\u3162\u3143 \ube3a \ube3b \ube3c \ube3d \ube3e \u3164\u3142\u3162\u3149 \ube3f \ube40 \ube41 \ube42 \ube43 \u3164\u3142\u3162\u314f \ube28 ",
-" row b2_d3_: \u3164\u3142\u3163\uca46 \ube45 \ube46 \ube47 \ube48 \ube49 \ube4a \ube4b \u3164\u3142\u3163\u3138 \ube4c \ube4d \ube4e \ube4f \ube50 \ube51 \ube52 \ube53 \ube54 \ube55 \u3164\u3142\u3163\u3143 \ube56 \ube57 \ube58 \ube59 \ube5a \u3164\u3142\u3163\u3149 \ube5b \ube5c \ube5d \ube5e \ube5f \u3164\u3142\u3163\u314f \ube44 ",
-" row b2_d4_: \u3164\u3142\u3164\uca46 \u3164\u3142\u3164\u3131 \u3164\u3142\u3164\u3132 \u3164\u3142\u3164\u3133 \u3164\u3142\u3164\u3134 \u3164\u3142\u3164\u3135 \u3164\u3142\u3164\u3136 \u3164\u3142\u3164\u3137 \u3164\u3142\u3164\u3138 \u3164\u3142\u3164\u3139 \u3164\u3142\u3164\u313a \u3164\u3142\u3164\u313b \u3164\u3142\u3164\u313c \u3164\u3142\u3164\u313d \u3164\u3142\u3164\u313e \u3164\u3142\u3164\u313f \u3164\u3142\u3164\u3140 \u3164\u3142\u3164\u3141 \u3164\u3142\u3164\u3142 \u3164\u3142\u3164\u3143 \u3164\u3142\u3164\u3144 \u3164\u3142\u3164\u3145 \u3164\u3142\u3164\u3146 \u3164\u3142\u3164\u3147 \u3164\u3142\u3164\u3148 \u3164\u3142\u3164\u3149 \u3164\u3142\u3164\u314a \u3164\u3142\u3164\u314b \u3164\u3142\u3164\u314c \u3164\u3142\u3164\u314d \u3164\u3142\u3164\u314e \u3164\u3142\u3164\u314f \u3164\u3142\u3164\u3164 ",
-" row b3_be_: \u3164\u3143\u314e\uca46 \u3164\u3143\u314e\u3131 \u3164\u3143\u314e\u3132 \u3164\u3143\u314e\u3133 \u3164\u3143\u314e\u3134 \u3164\u3143\u314e\u3135 \u3164\u3143\u314e\u3136 \u3164\u3143\u314e\u3137 \u3164\u3143\u314e\u3138 \u3164\u3143\u314e\u3139 \u3164\u3143\u314e\u313a \u3164\u3143\u314e\u313b \u3164\u3143\u314e\u313c \u3164\u3143\u314e\u313d \u3164\u3143\u314e\u313e \u3164\u3143\u314e\u313f \u3164\u3143\u314e\u3140 \u3164\u3143\u314e\u3141 \u3164\u3143\u314e\u3142 \u3164\u3143\u314e\u3143 \u3164\u3143\u314e\u3144 \u3164\u3143\u314e\u3145 \u3164\u3143\u314e\u3146 \u3164\u3143\u314e\u3147 \u3164\u3143\u314e\u3148 \u3164\u3143\u314e\u3149 \u3164\u3143\u314e\u314a \u3164\u3143\u314e\u314b \u3164\u3143\u314e\u314c \u3164\u3143\u314e\u314d \u3164\u3143\u314e\u314e \u3164\u3143\u314e\u314f \u3164\u3143\u314e\u3164 ",
-" row b3_bf_: \u3164\u3143\u314f\uca46 \ube61 \ube62 \ube63 \ube64 \ube65 \ube66 \ube67 \u3164\u3143\u314f\u3138 \ube68 \ube69 \ube6a \ube6b \ube6c \ube6d \ube6e \ube6f \ube70 \ube71 \u3164\u3143\u314f\u3143 \ube72 \ube73 \ube74 \ube75 \ube76 \u3164\u3143\u314f\u3149 \ube77 \ube78 \ube79 \ube7a \ube7b \u3164\u3143\u314f\u314f \ube60 ",
-" row b3_c0_: \u3164\u3143\u3150\uca46 \ube7d \ube7e \ube7f \ube80 \ube81 \ube82 \ube83 \u3164\u3143\u3150\u3138 \ube84 \ube85 \ube86 \ube87 \ube88 \ube89 \ube8a \ube8b \ube8c \ube8d \u3164\u3143\u3150\u3143 \ube8e \ube8f \ube90 \ube91 \ube92 \u3164\u3143\u3150\u3149 \ube93 \ube94 \ube95 \ube96 \ube97 \u3164\u3143\u3150\u314f \ube7c ",
-" row b3_c1_: \u3164\u3143\u3151\uca46 \ube99 \ube9a \ube9b \ube9c \ube9d \ube9e \ube9f \u3164\u3143\u3151\u3138 \ubea0 \ubea1 \ubea2 \ubea3 \ubea4 \ubea5 \ubea6 \ubea7 \ubea8 \ubea9 \u3164\u3143\u3151\u3143 \ubeaa \ubeab \ubeac \ubead \ubeae \u3164\u3143\u3151\u3149 \ubeaf \ubeb0 \ubeb1 \ubeb2 \ubeb3 \u3164\u3143\u3151\u314f \ube98 ",
-" row b3_c2_: \u3164\u3143\u3152\uca46 \ubeb5 \ubeb6 \ubeb7 \ubeb8 \ubeb9 \ubeba \ubebb \u3164\u3143\u3152\u3138 \ubebc \ubebd \ubebe \ubebf \ubec0 \ubec1 \ubec2 \ubec3 \ubec4 \ubec5 \u3164\u3143\u3152\u3143 \ubec6 \ubec7 \ubec8 \ubec9 \ubeca \u3164\u3143\u3152\u3149 \ubecb \ubecc \ubecd \ubece \ubecf \u3164\u3143\u3152\u314f \ubeb4 ",
-" row b3_c3_: \u3164\u3143\u3153\uca46 \ubed1 \ubed2 \ubed3 \ubed4 \ubed5 \ubed6 \ubed7 \u3164\u3143\u3153\u3138 \ubed8 \ubed9 \ubeda \ubedb \ubedc \ubedd \ubede \ubedf \ubee0 \ubee1 \u3164\u3143\u3153\u3143 \ubee2 \ubee3 \ubee4 \ubee5 \ubee6 \u3164\u3143\u3153\u3149 \ubee7 \ubee8 \ubee9 \ubeea \ubeeb \u3164\u3143\u3153\u314f \ubed0 ",
-" row b3_c4_: \u3164\u3143\u3154\uca46 \ubeed \ubeee \ubeef \ubef0 \ubef1 \ubef2 \ubef3 \u3164\u3143\u3154\u3138 \ubef4 \ubef5 \ubef6 \ubef7 \ubef8 \ubef9 \ubefa \ubefb \ubefc \ubefd \u3164\u3143\u3154\u3143 \ubefe \ubeff \ubf00 \ubf01 \ubf02 \u3164\u3143\u3154\u3149 \ubf03 \ubf04 \ubf05 \ubf06 \ubf07 \u3164\u3143\u3154\u314f \ubeec ",
-" row b3_c5_: \u3164\u3143\u3155\uca46 \ubf09 \ubf0a \ubf0b \ubf0c \ubf0d \ubf0e \ubf0f \u3164\u3143\u3155\u3138 \ubf10 \ubf11 \ubf12 \ubf13 \ubf14 \ubf15 \ubf16 \ubf17 \ubf18 \ubf19 \u3164\u3143\u3155\u3143 \ubf1a \ubf1b \ubf1c \ubf1d \ubf1e \u3164\u3143\u3155\u3149 \ubf1f \ubf20 \ubf21 \ubf22 \ubf23 \u3164\u3143\u3155\u314f \ubf08 ",
-" row b3_c6_: \u3164\u3143\u3156\uca46 \ubf25 \ubf26 \ubf27 \ubf28 \ubf29 \ubf2a \ubf2b \u3164\u3143\u3156\u3138 \ubf2c \ubf2d \ubf2e \ubf2f \ubf30 \ubf31 \ubf32 \ubf33 \ubf34 \ubf35 \u3164\u3143\u3156\u3143 \ubf36 \ubf37 \ubf38 \ubf39 \ubf3a \u3164\u3143\u3156\u3149 \ubf3b \ubf3c \ubf3d \ubf3e \ubf3f \u3164\u3143\u3156\u314f \ubf24 ",
-" row b3_c7_: \u3164\u3143\u3157\uca46 \ubf41 \ubf42 \ubf43 \ubf44 \ubf45 \ubf46 \ubf47 \u3164\u3143\u3157\u3138 \ubf48 \ubf49 \ubf4a \ubf4b \ubf4c \ubf4d \ubf4e \ubf4f \ubf50 \ubf51 \u3164\u3143\u3157\u3143 \ubf52 \ubf53 \ubf54 \ubf55 \ubf56 \u3164\u3143\u3157\u3149 \ubf57 \ubf58 \ubf59 \ubf5a \ubf5b \u3164\u3143\u3157\u314f \ubf40 ",
-" row b3_c8_: \u3164\u3143\u3158\uca46 \ubf5d \ubf5e \ubf5f \ubf60 \ubf61 \ubf62 \ubf63 \u3164\u3143\u3158\u3138 \ubf64 \ubf65 \ubf66 \ubf67 \ubf68 \ubf69 \ubf6a \ubf6b \ubf6c \ubf6d \u3164\u3143\u3158\u3143 \ubf6e \ubf6f \ubf70 \ubf71 \ubf72 \u3164\u3143\u3158\u3149 \ubf73 \ubf74 \ubf75 \ubf76 \ubf77 \u3164\u3143\u3158\u314f \ubf5c ",
-" row b3_c9_: \u3164\u3143\u3159\uca46 \ubf79 \ubf7a \ubf7b \ubf7c \ubf7d \ubf7e \ubf7f \u3164\u3143\u3159\u3138 \ubf80 \ubf81 \ubf82 \ubf83 \ubf84 \ubf85 \ubf86 \ubf87 \ubf88 \ubf89 \u3164\u3143\u3159\u3143 \ubf8a \ubf8b \ubf8c \ubf8d \ubf8e \u3164\u3143\u3159\u3149 \ubf8f \ubf90 \ubf91 \ubf92 \ubf93 \u3164\u3143\u3159\u314f \ubf78 ",
-" row b3_ca_: \u3164\u3143\u315a\uca46 \ubf95 \ubf96 \ubf97 \ubf98 \ubf99 \ubf9a \ubf9b \u3164\u3143\u315a\u3138 \ubf9c \ubf9d \ubf9e \ubf9f \ubfa0 \ubfa1 \ubfa2 \ubfa3 \ubfa4 \ubfa5 \u3164\u3143\u315a\u3143 \ubfa6 \ubfa7 \ubfa8 \ubfa9 \ubfaa \u3164\u3143\u315a\u3149 \ubfab \ubfac \ubfad \ubfae \ubfaf \u3164\u3143\u315a\u314f \ubf94 ",
-" row b3_cb_: \u3164\u3143\u315b\uca46 \ubfb1 \ubfb2 \ubfb3 \ubfb4 \ubfb5 \ubfb6 \ubfb7 \u3164\u3143\u315b\u3138 \ubfb8 \ubfb9 \ubfba \ubfbb \ubfbc \ubfbd \ubfbe \ubfbf \ubfc0 \ubfc1 \u3164\u3143\u315b\u3143 \ubfc2 \ubfc3 \ubfc4 \ubfc5 \ubfc6 \u3164\u3143\u315b\u3149 \ubfc7 \ubfc8 \ubfc9 \ubfca \ubfcb \u3164\u3143\u315b\u314f \ubfb0 ",
-" row b3_cc_: \u3164\u3143\u315c\uca46 \ubfcd \ubfce \ubfcf \ubfd0 \ubfd1 \ubfd2 \ubfd3 \u3164\u3143\u315c\u3138 \ubfd4 \ubfd5 \ubfd6 \ubfd7 \ubfd8 \ubfd9 \ubfda \ubfdb \ubfdc \ubfdd \u3164\u3143\u315c\u3143 \ubfde \ubfdf \ubfe0 \ubfe1 \ubfe2 \u3164\u3143\u315c\u3149 \ubfe3 \ubfe4 \ubfe5 \ubfe6 \ubfe7 \u3164\u3143\u315c\u314f \ubfcc ",
-" row b3_cd_: \u3164\u3143\u315d\uca46 \ubfe9 \ubfea \ubfeb \ubfec \ubfed \ubfee \ubfef \u3164\u3143\u315d\u3138 \ubff0 \ubff1 \ubff2 \ubff3 \ubff4 \ubff5 \ubff6 \ubff7 \ubff8 \ubff9 \u3164\u3143\u315d\u3143 \ubffa \ubffb \ubffc \ubffd \ubffe \u3164\u3143\u315d\u3149 \ubfff \uc000 \uc001 \uc002 \uc003 \u3164\u3143\u315d\u314f \ubfe8 ",
-" row b3_ce_: \u3164\u3143\u315e\uca46 \uc005 \uc006 \uc007 \uc008 \uc009 \uc00a \uc00b \u3164\u3143\u315e\u3138 \uc00c \uc00d \uc00e \uc00f \uc010 \uc011 \uc012 \uc013 \uc014 \uc015 \u3164\u3143\u315e\u3143 \uc016 \uc017 \uc018 \uc019 \uc01a \u3164\u3143\u315e\u3149 \uc01b \uc01c \uc01d \uc01e \uc01f \u3164\u3143\u315e\u314f \uc004 ",
-" row b3_cf_: \u3164\u3143\u315f\uca46 \uc021 \uc022 \uc023 \uc024 \uc025 \uc026 \uc027 \u3164\u3143\u315f\u3138 \uc028 \uc029 \uc02a \uc02b \uc02c \uc02d \uc02e \uc02f \uc030 \uc031 \u3164\u3143\u315f\u3143 \uc032 \uc033 \uc034 \uc035 \uc036 \u3164\u3143\u315f\u3149 \uc037 \uc038 \uc039 \uc03a \uc03b \u3164\u3143\u315f\u314f \uc020 ",
-" row b3_d0_: \u3164\u3143\u3160\uca46 \uc03d \uc03e \uc03f \uc040 \uc041 \uc042 \uc043 \u3164\u3143\u3160\u3138 \uc044 \uc045 \uc046 \uc047 \uc048 \uc049 \uc04a \uc04b \uc04c \uc04d \u3164\u3143\u3160\u3143 \uc04e \uc04f \uc050 \uc051 \uc052 \u3164\u3143\u3160\u3149 \uc053 \uc054 \uc055 \uc056 \uc057 \u3164\u3143\u3160\u314f \uc03c ",
-" row b3_d1_: \u3164\u3143\u3161\uca46 \uc059 \uc05a \uc05b \uc05c \uc05d \uc05e \uc05f \u3164\u3143\u3161\u3138 \uc060 \uc061 \uc062 \uc063 \uc064 \uc065 \uc066 \uc067 \uc068 \uc069 \u3164\u3143\u3161\u3143 \uc06a \uc06b \uc06c \uc06d \uc06e \u3164\u3143\u3161\u3149 \uc06f \uc070 \uc071 \uc072 \uc073 \u3164\u3143\u3161\u314f \uc058 ",
-" row b3_d2_: \u3164\u3143\u3162\uca46 \uc075 \uc076 \uc077 \uc078 \uc079 \uc07a \uc07b \u3164\u3143\u3162\u3138 \uc07c \uc07d \uc07e \uc07f \uc080 \uc081 \uc082 \uc083 \uc084 \uc085 \u3164\u3143\u3162\u3143 \uc086 \uc087 \uc088 \uc089 \uc08a \u3164\u3143\u3162\u3149 \uc08b \uc08c \uc08d \uc08e \uc08f \u3164\u3143\u3162\u314f \uc074 ",
-" row b3_d3_: \u3164\u3143\u3163\uca46 \uc091 \uc092 \uc093 \uc094 \uc095 \uc096 \uc097 \u3164\u3143\u3163\u3138 \uc098 \uc099 \uc09a \uc09b \uc09c \uc09d \uc09e \uc09f \uc0a0 \uc0a1 \u3164\u3143\u3163\u3143 \uc0a2 \uc0a3 \uc0a4 \uc0a5 \uc0a6 \u3164\u3143\u3163\u3149 \uc0a7 \uc0a8 \uc0a9 \uc0aa \uc0ab \u3164\u3143\u3163\u314f \uc090 ",
-" row b3_d4_: \u3164\u3143\u3164\uca46 \u3164\u3143\u3164\u3131 \u3164\u3143\u3164\u3132 \u3164\u3143\u3164\u3133 \u3164\u3143\u3164\u3134 \u3164\u3143\u3164\u3135 \u3164\u3143\u3164\u3136 \u3164\u3143\u3164\u3137 \u3164\u3143\u3164\u3138 \u3164\u3143\u3164\u3139 \u3164\u3143\u3164\u313a \u3164\u3143\u3164\u313b \u3164\u3143\u3164\u313c \u3164\u3143\u3164\u313d \u3164\u3143\u3164\u313e \u3164\u3143\u3164\u313f \u3164\u3143\u3164\u3140 \u3164\u3143\u3164\u3141 \u3164\u3143\u3164\u3142 \u3164\u3143\u3164\u3143 \u3164\u3143\u3164\u3144 \u3164\u3143\u3164\u3145 \u3164\u3143\u3164\u3146 \u3164\u3143\u3164\u3147 \u3164\u3143\u3164\u3148 \u3164\u3143\u3164\u3149 \u3164\u3143\u3164\u314a \u3164\u3143\u3164\u314b \u3164\u3143\u3164\u314c \u3164\u3143\u3164\u314d \u3164\u3143\u3164\u314e \u3164\u3143\u3164\u314f \u3164\u3143\u3164\u3164 ",
-" row b4_be_: \u3164\u3144\u314e\uca46 \u3164\u3144\u314e\u3131 \u3164\u3144\u314e\u3132 \u3164\u3144\u314e\u3133 \u3164\u3144\u314e\u3134 \u3164\u3144\u314e\u3135 \u3164\u3144\u314e\u3136 \u3164\u3144\u314e\u3137 \u3164\u3144\u314e\u3138 \u3164\u3144\u314e\u3139 \u3164\u3144\u314e\u313a \u3164\u3144\u314e\u313b \u3164\u3144\u314e\u313c \u3164\u3144\u314e\u313d \u3164\u3144\u314e\u313e \u3164\u3144\u314e\u313f \u3164\u3144\u314e\u3140 \u3164\u3144\u314e\u3141 \u3164\u3144\u314e\u3142 \u3164\u3144\u314e\u3143 \u3164\u3144\u314e\u3144 \u3164\u3144\u314e\u3145 \u3164\u3144\u314e\u3146 \u3164\u3144\u314e\u3147 \u3164\u3144\u314e\u3148 \u3164\u3144\u314e\u3149 \u3164\u3144\u314e\u314a \u3164\u3144\u314e\u314b \u3164\u3144\u314e\u314c \u3164\u3144\u314e\u314d \u3164\u3144\u314e\u314e \u3164\u3144\u314e\u314f \u3164\u3144\u314e\u3164 ",
-" row b4_bf_: \u3164\u3144\u314f\uca46 \u3164\u3144\u314f\u3131 \u3164\u3144\u314f\u3132 \u3164\u3144\u314f\u3133 \u3164\u3144\u314f\u3134 \u3164\u3144\u314f\u3135 \u3164\u3144\u314f\u3136 \u3164\u3144\u314f\u3137 \u3164\u3144\u314f\u3138 \u3164\u3144\u314f\u3139 \u3164\u3144\u314f\u313a \u3164\u3144\u314f\u313b \u3164\u3144\u314f\u313c \u3164\u3144\u314f\u313d \u3164\u3144\u314f\u313e \u3164\u3144\u314f\u313f \u3164\u3144\u314f\u3140 \u3164\u3144\u314f\u3141 \u3164\u3144\u314f\u3142 \u3164\u3144\u314f\u3143 \u3164\u3144\u314f\u3144 \u3164\u3144\u314f\u3145 \u3164\u3144\u314f\u3146 \u3164\u3144\u314f\u3147 \u3164\u3144\u314f\u3148 \u3164\u3144\u314f\u3149 \u3164\u3144\u314f\u314a \u3164\u3144\u314f\u314b \u3164\u3144\u314f\u314c \u3164\u3144\u314f\u314d \u3164\u3144\u314f\u314e \u3164\u3144\u314f\u314f \u3164\u3144\u314f\u3164 ",
-" row b4_c0_: \u3164\u3144\u3150\uca46 \u3164\u3144\u3150\u3131 \u3164\u3144\u3150\u3132 \u3164\u3144\u3150\u3133 \u3164\u3144\u3150\u3134 \u3164\u3144\u3150\u3135 \u3164\u3144\u3150\u3136 \u3164\u3144\u3150\u3137 \u3164\u3144\u3150\u3138 \u3164\u3144\u3150\u3139 \u3164\u3144\u3150\u313a \u3164\u3144\u3150\u313b \u3164\u3144\u3150\u313c \u3164\u3144\u3150\u313d \u3164\u3144\u3150\u313e \u3164\u3144\u3150\u313f \u3164\u3144\u3150\u3140 \u3164\u3144\u3150\u3141 \u3164\u3144\u3150\u3142 \u3164\u3144\u3150\u3143 \u3164\u3144\u3150\u3144 \u3164\u3144\u3150\u3145 \u3164\u3144\u3150\u3146 \u3164\u3144\u3150\u3147 \u3164\u3144\u3150\u3148 \u3164\u3144\u3150\u3149 \u3164\u3144\u3150\u314a \u3164\u3144\u3150\u314b \u3164\u3144\u3150\u314c \u3164\u3144\u3150\u314d \u3164\u3144\u3150\u314e \u3164\u3144\u3150\u314f \u3164\u3144\u3150\u3164 ",
-" row b4_c1_: \u3164\u3144\u3151\uca46 \u3164\u3144\u3151\u3131 \u3164\u3144\u3151\u3132 \u3164\u3144\u3151\u3133 \u3164\u3144\u3151\u3134 \u3164\u3144\u3151\u3135 \u3164\u3144\u3151\u3136 \u3164\u3144\u3151\u3137 \u3164\u3144\u3151\u3138 \u3164\u3144\u3151\u3139 \u3164\u3144\u3151\u313a \u3164\u3144\u3151\u313b \u3164\u3144\u3151\u313c \u3164\u3144\u3151\u313d \u3164\u3144\u3151\u313e \u3164\u3144\u3151\u313f \u3164\u3144\u3151\u3140 \u3164\u3144\u3151\u3141 \u3164\u3144\u3151\u3142 \u3164\u3144\u3151\u3143 \u3164\u3144\u3151\u3144 \u3164\u3144\u3151\u3145 \u3164\u3144\u3151\u3146 \u3164\u3144\u3151\u3147 \u3164\u3144\u3151\u3148 \u3164\u3144\u3151\u3149 \u3164\u3144\u3151\u314a \u3164\u3144\u3151\u314b \u3164\u3144\u3151\u314c \u3164\u3144\u3151\u314d \u3164\u3144\u3151\u314e \u3164\u3144\u3151\u314f \u3164\u3144\u3151\u3164 ",
-" row b4_c2_: \u3164\u3144\u3152\uca46 \u3164\u3144\u3152\u3131 \u3164\u3144\u3152\u3132 \u3164\u3144\u3152\u3133 \u3164\u3144\u3152\u3134 \u3164\u3144\u3152\u3135 \u3164\u3144\u3152\u3136 \u3164\u3144\u3152\u3137 \u3164\u3144\u3152\u3138 \u3164\u3144\u3152\u3139 \u3164\u3144\u3152\u313a \u3164\u3144\u3152\u313b \u3164\u3144\u3152\u313c \u3164\u3144\u3152\u313d \u3164\u3144\u3152\u313e \u3164\u3144\u3152\u313f \u3164\u3144\u3152\u3140 \u3164\u3144\u3152\u3141 \u3164\u3144\u3152\u3142 \u3164\u3144\u3152\u3143 \u3164\u3144\u3152\u3144 \u3164\u3144\u3152\u3145 \u3164\u3144\u3152\u3146 \u3164\u3144\u3152\u3147 \u3164\u3144\u3152\u3148 \u3164\u3144\u3152\u3149 \u3164\u3144\u3152\u314a \u3164\u3144\u3152\u314b \u3164\u3144\u3152\u314c \u3164\u3144\u3152\u314d \u3164\u3144\u3152\u314e \u3164\u3144\u3152\u314f \u3164\u3144\u3152\u3164 ",
-" row b4_c3_: \u3164\u3144\u3153\uca46 \u3164\u3144\u3153\u3131 \u3164\u3144\u3153\u3132 \u3164\u3144\u3153\u3133 \u3164\u3144\u3153\u3134 \u3164\u3144\u3153\u3135 \u3164\u3144\u3153\u3136 \u3164\u3144\u3153\u3137 \u3164\u3144\u3153\u3138 \u3164\u3144\u3153\u3139 \u3164\u3144\u3153\u313a \u3164\u3144\u3153\u313b \u3164\u3144\u3153\u313c \u3164\u3144\u3153\u313d \u3164\u3144\u3153\u313e \u3164\u3144\u3153\u313f \u3164\u3144\u3153\u3140 \u3164\u3144\u3153\u3141 \u3164\u3144\u3153\u3142 \u3164\u3144\u3153\u3143 \u3164\u3144\u3153\u3144 \u3164\u3144\u3153\u3145 \u3164\u3144\u3153\u3146 \u3164\u3144\u3153\u3147 \u3164\u3144\u3153\u3148 \u3164\u3144\u3153\u3149 \u3164\u3144\u3153\u314a \u3164\u3144\u3153\u314b \u3164\u3144\u3153\u314c \u3164\u3144\u3153\u314d \u3164\u3144\u3153\u314e \u3164\u3144\u3153\u314f \u3164\u3144\u3153\u3164 ",
-" row b4_c4_: \u3164\u3144\u3154\uca46 \u3164\u3144\u3154\u3131 \u3164\u3144\u3154\u3132 \u3164\u3144\u3154\u3133 \u3164\u3144\u3154\u3134 \u3164\u3144\u3154\u3135 \u3164\u3144\u3154\u3136 \u3164\u3144\u3154\u3137 \u3164\u3144\u3154\u3138 \u3164\u3144\u3154\u3139 \u3164\u3144\u3154\u313a \u3164\u3144\u3154\u313b \u3164\u3144\u3154\u313c \u3164\u3144\u3154\u313d \u3164\u3144\u3154\u313e \u3164\u3144\u3154\u313f \u3164\u3144\u3154\u3140 \u3164\u3144\u3154\u3141 \u3164\u3144\u3154\u3142 \u3164\u3144\u3154\u3143 \u3164\u3144\u3154\u3144 \u3164\u3144\u3154\u3145 \u3164\u3144\u3154\u3146 \u3164\u3144\u3154\u3147 \u3164\u3144\u3154\u3148 \u3164\u3144\u3154\u3149 \u3164\u3144\u3154\u314a \u3164\u3144\u3154\u314b \u3164\u3144\u3154\u314c \u3164\u3144\u3154\u314d \u3164\u3144\u3154\u314e \u3164\u3144\u3154\u314f \u3164\u3144\u3154\u3164 ",
-" row b4_c5_: \u3164\u3144\u3155\uca46 \u3164\u3144\u3155\u3131 \u3164\u3144\u3155\u3132 \u3164\u3144\u3155\u3133 \u3164\u3144\u3155\u3134 \u3164\u3144\u3155\u3135 \u3164\u3144\u3155\u3136 \u3164\u3144\u3155\u3137 \u3164\u3144\u3155\u3138 \u3164\u3144\u3155\u3139 \u3164\u3144\u3155\u313a \u3164\u3144\u3155\u313b \u3164\u3144\u3155\u313c \u3164\u3144\u3155\u313d \u3164\u3144\u3155\u313e \u3164\u3144\u3155\u313f \u3164\u3144\u3155\u3140 \u3164\u3144\u3155\u3141 \u3164\u3144\u3155\u3142 \u3164\u3144\u3155\u3143 \u3164\u3144\u3155\u3144 \u3164\u3144\u3155\u3145 \u3164\u3144\u3155\u3146 \u3164\u3144\u3155\u3147 \u3164\u3144\u3155\u3148 \u3164\u3144\u3155\u3149 \u3164\u3144\u3155\u314a \u3164\u3144\u3155\u314b \u3164\u3144\u3155\u314c \u3164\u3144\u3155\u314d \u3164\u3144\u3155\u314e \u3164\u3144\u3155\u314f \u3164\u3144\u3155\u3164 ",
-" row b4_c6_: \u3164\u3144\u3156\uca46 \u3164\u3144\u3156\u3131 \u3164\u3144\u3156\u3132 \u3164\u3144\u3156\u3133 \u3164\u3144\u3156\u3134 \u3164\u3144\u3156\u3135 \u3164\u3144\u3156\u3136 \u3164\u3144\u3156\u3137 \u3164\u3144\u3156\u3138 \u3164\u3144\u3156\u3139 \u3164\u3144\u3156\u313a \u3164\u3144\u3156\u313b \u3164\u3144\u3156\u313c \u3164\u3144\u3156\u313d \u3164\u3144\u3156\u313e \u3164\u3144\u3156\u313f \u3164\u3144\u3156\u3140 \u3164\u3144\u3156\u3141 \u3164\u3144\u3156\u3142 \u3164\u3144\u3156\u3143 \u3164\u3144\u3156\u3144 \u3164\u3144\u3156\u3145 \u3164\u3144\u3156\u3146 \u3164\u3144\u3156\u3147 \u3164\u3144\u3156\u3148 \u3164\u3144\u3156\u3149 \u3164\u3144\u3156\u314a \u3164\u3144\u3156\u314b \u3164\u3144\u3156\u314c \u3164\u3144\u3156\u314d \u3164\u3144\u3156\u314e \u3164\u3144\u3156\u314f \u3164\u3144\u3156\u3164 ",
-" row b4_c7_: \u3164\u3144\u3157\uca46 \u3164\u3144\u3157\u3131 \u3164\u3144\u3157\u3132 \u3164\u3144\u3157\u3133 \u3164\u3144\u3157\u3134 \u3164\u3144\u3157\u3135 \u3164\u3144\u3157\u3136 \u3164\u3144\u3157\u3137 \u3164\u3144\u3157\u3138 \u3164\u3144\u3157\u3139 \u3164\u3144\u3157\u313a \u3164\u3144\u3157\u313b \u3164\u3144\u3157\u313c \u3164\u3144\u3157\u313d \u3164\u3144\u3157\u313e \u3164\u3144\u3157\u313f \u3164\u3144\u3157\u3140 \u3164\u3144\u3157\u3141 \u3164\u3144\u3157\u3142 \u3164\u3144\u3157\u3143 \u3164\u3144\u3157\u3144 \u3164\u3144\u3157\u3145 \u3164\u3144\u3157\u3146 \u3164\u3144\u3157\u3147 \u3164\u3144\u3157\u3148 \u3164\u3144\u3157\u3149 \u3164\u3144\u3157\u314a \u3164\u3144\u3157\u314b \u3164\u3144\u3157\u314c \u3164\u3144\u3157\u314d \u3164\u3144\u3157\u314e \u3164\u3144\u3157\u314f \u3164\u3144\u3157\u3164 ",
-" row b4_c8_: \u3164\u3144\u3158\uca46 \u3164\u3144\u3158\u3131 \u3164\u3144\u3158\u3132 \u3164\u3144\u3158\u3133 \u3164\u3144\u3158\u3134 \u3164\u3144\u3158\u3135 \u3164\u3144\u3158\u3136 \u3164\u3144\u3158\u3137 \u3164\u3144\u3158\u3138 \u3164\u3144\u3158\u3139 \u3164\u3144\u3158\u313a \u3164\u3144\u3158\u313b \u3164\u3144\u3158\u313c \u3164\u3144\u3158\u313d \u3164\u3144\u3158\u313e \u3164\u3144\u3158\u313f \u3164\u3144\u3158\u3140 \u3164\u3144\u3158\u3141 \u3164\u3144\u3158\u3142 \u3164\u3144\u3158\u3143 \u3164\u3144\u3158\u3144 \u3164\u3144\u3158\u3145 \u3164\u3144\u3158\u3146 \u3164\u3144\u3158\u3147 \u3164\u3144\u3158\u3148 \u3164\u3144\u3158\u3149 \u3164\u3144\u3158\u314a \u3164\u3144\u3158\u314b \u3164\u3144\u3158\u314c \u3164\u3144\u3158\u314d \u3164\u3144\u3158\u314e \u3164\u3144\u3158\u314f \u3164\u3144\u3158\u3164 ",
-" row b4_c9_: \u3164\u3144\u3159\uca46 \u3164\u3144\u3159\u3131 \u3164\u3144\u3159\u3132 \u3164\u3144\u3159\u3133 \u3164\u3144\u3159\u3134 \u3164\u3144\u3159\u3135 \u3164\u3144\u3159\u3136 \u3164\u3144\u3159\u3137 \u3164\u3144\u3159\u3138 \u3164\u3144\u3159\u3139 \u3164\u3144\u3159\u313a \u3164\u3144\u3159\u313b \u3164\u3144\u3159\u313c \u3164\u3144\u3159\u313d \u3164\u3144\u3159\u313e \u3164\u3144\u3159\u313f \u3164\u3144\u3159\u3140 \u3164\u3144\u3159\u3141 \u3164\u3144\u3159\u3142 \u3164\u3144\u3159\u3143 \u3164\u3144\u3159\u3144 \u3164\u3144\u3159\u3145 \u3164\u3144\u3159\u3146 \u3164\u3144\u3159\u3147 \u3164\u3144\u3159\u3148 \u3164\u3144\u3159\u3149 \u3164\u3144\u3159\u314a \u3164\u3144\u3159\u314b \u3164\u3144\u3159\u314c \u3164\u3144\u3159\u314d \u3164\u3144\u3159\u314e \u3164\u3144\u3159\u314f \u3164\u3144\u3159\u3164 ",
-" row b4_ca_: \u3164\u3144\u315a\uca46 \u3164\u3144\u315a\u3131 \u3164\u3144\u315a\u3132 \u3164\u3144\u315a\u3133 \u3164\u3144\u315a\u3134 \u3164\u3144\u315a\u3135 \u3164\u3144\u315a\u3136 \u3164\u3144\u315a\u3137 \u3164\u3144\u315a\u3138 \u3164\u3144\u315a\u3139 \u3164\u3144\u315a\u313a \u3164\u3144\u315a\u313b \u3164\u3144\u315a\u313c \u3164\u3144\u315a\u313d \u3164\u3144\u315a\u313e \u3164\u3144\u315a\u313f \u3164\u3144\u315a\u3140 \u3164\u3144\u315a\u3141 \u3164\u3144\u315a\u3142 \u3164\u3144\u315a\u3143 \u3164\u3144\u315a\u3144 \u3164\u3144\u315a\u3145 \u3164\u3144\u315a\u3146 \u3164\u3144\u315a\u3147 \u3164\u3144\u315a\u3148 \u3164\u3144\u315a\u3149 \u3164\u3144\u315a\u314a \u3164\u3144\u315a\u314b \u3164\u3144\u315a\u314c \u3164\u3144\u315a\u314d \u3164\u3144\u315a\u314e \u3164\u3144\u315a\u314f \u3164\u3144\u315a\u3164 ",
-" row b4_cb_: \u3164\u3144\u315b\uca46 \u3164\u3144\u315b\u3131 \u3164\u3144\u315b\u3132 \u3164\u3144\u315b\u3133 \u3164\u3144\u315b\u3134 \u3164\u3144\u315b\u3135 \u3164\u3144\u315b\u3136 \u3164\u3144\u315b\u3137 \u3164\u3144\u315b\u3138 \u3164\u3144\u315b\u3139 \u3164\u3144\u315b\u313a \u3164\u3144\u315b\u313b \u3164\u3144\u315b\u313c \u3164\u3144\u315b\u313d \u3164\u3144\u315b\u313e \u3164\u3144\u315b\u313f \u3164\u3144\u315b\u3140 \u3164\u3144\u315b\u3141 \u3164\u3144\u315b\u3142 \u3164\u3144\u315b\u3143 \u3164\u3144\u315b\u3144 \u3164\u3144\u315b\u3145 \u3164\u3144\u315b\u3146 \u3164\u3144\u315b\u3147 \u3164\u3144\u315b\u3148 \u3164\u3144\u315b\u3149 \u3164\u3144\u315b\u314a \u3164\u3144\u315b\u314b \u3164\u3144\u315b\u314c \u3164\u3144\u315b\u314d \u3164\u3144\u315b\u314e \u3164\u3144\u315b\u314f \u3164\u3144\u315b\u3164 ",
-" row b4_cc_: \u3164\u3144\u315c\uca46 \u3164\u3144\u315c\u3131 \u3164\u3144\u315c\u3132 \u3164\u3144\u315c\u3133 \u3164\u3144\u315c\u3134 \u3164\u3144\u315c\u3135 \u3164\u3144\u315c\u3136 \u3164\u3144\u315c\u3137 \u3164\u3144\u315c\u3138 \u3164\u3144\u315c\u3139 \u3164\u3144\u315c\u313a \u3164\u3144\u315c\u313b \u3164\u3144\u315c\u313c \u3164\u3144\u315c\u313d \u3164\u3144\u315c\u313e \u3164\u3144\u315c\u313f \u3164\u3144\u315c\u3140 \u3164\u3144\u315c\u3141 \u3164\u3144\u315c\u3142 \u3164\u3144\u315c\u3143 \u3164\u3144\u315c\u3144 \u3164\u3144\u315c\u3145 \u3164\u3144\u315c\u3146 \u3164\u3144\u315c\u3147 \u3164\u3144\u315c\u3148 \u3164\u3144\u315c\u3149 \u3164\u3144\u315c\u314a \u3164\u3144\u315c\u314b \u3164\u3144\u315c\u314c \u3164\u3144\u315c\u314d \u3164\u3144\u315c\u314e \u3164\u3144\u315c\u314f \u3164\u3144\u315c\u3164 ",
-" row b4_cd_: \u3164\u3144\u315d\uca46 \u3164\u3144\u315d\u3131 \u3164\u3144\u315d\u3132 \u3164\u3144\u315d\u3133 \u3164\u3144\u315d\u3134 \u3164\u3144\u315d\u3135 \u3164\u3144\u315d\u3136 \u3164\u3144\u315d\u3137 \u3164\u3144\u315d\u3138 \u3164\u3144\u315d\u3139 \u3164\u3144\u315d\u313a \u3164\u3144\u315d\u313b \u3164\u3144\u315d\u313c \u3164\u3144\u315d\u313d \u3164\u3144\u315d\u313e \u3164\u3144\u315d\u313f \u3164\u3144\u315d\u3140 \u3164\u3144\u315d\u3141 \u3164\u3144\u315d\u3142 \u3164\u3144\u315d\u3143 \u3164\u3144\u315d\u3144 \u3164\u3144\u315d\u3145 \u3164\u3144\u315d\u3146 \u3164\u3144\u315d\u3147 \u3164\u3144\u315d\u3148 \u3164\u3144\u315d\u3149 \u3164\u3144\u315d\u314a \u3164\u3144\u315d\u314b \u3164\u3144\u315d\u314c \u3164\u3144\u315d\u314d \u3164\u3144\u315d\u314e \u3164\u3144\u315d\u314f \u3164\u3144\u315d\u3164 ",
-" row b4_ce_: \u3164\u3144\u315e\uca46 \u3164\u3144\u315e\u3131 \u3164\u3144\u315e\u3132 \u3164\u3144\u315e\u3133 \u3164\u3144\u315e\u3134 \u3164\u3144\u315e\u3135 \u3164\u3144\u315e\u3136 \u3164\u3144\u315e\u3137 \u3164\u3144\u315e\u3138 \u3164\u3144\u315e\u3139 \u3164\u3144\u315e\u313a \u3164\u3144\u315e\u313b \u3164\u3144\u315e\u313c \u3164\u3144\u315e\u313d \u3164\u3144\u315e\u313e \u3164\u3144\u315e\u313f \u3164\u3144\u315e\u3140 \u3164\u3144\u315e\u3141 \u3164\u3144\u315e\u3142 \u3164\u3144\u315e\u3143 \u3164\u3144\u315e\u3144 \u3164\u3144\u315e\u3145 \u3164\u3144\u315e\u3146 \u3164\u3144\u315e\u3147 \u3164\u3144\u315e\u3148 \u3164\u3144\u315e\u3149 \u3164\u3144\u315e\u314a \u3164\u3144\u315e\u314b \u3164\u3144\u315e\u314c \u3164\u3144\u315e\u314d \u3164\u3144\u315e\u314e \u3164\u3144\u315e\u314f \u3164\u3144\u315e\u3164 ",
-" row b4_cf_: \u3164\u3144\u315f\uca46 \u3164\u3144\u315f\u3131 \u3164\u3144\u315f\u3132 \u3164\u3144\u315f\u3133 \u3164\u3144\u315f\u3134 \u3164\u3144\u315f\u3135 \u3164\u3144\u315f\u3136 \u3164\u3144\u315f\u3137 \u3164\u3144\u315f\u3138 \u3164\u3144\u315f\u3139 \u3164\u3144\u315f\u313a \u3164\u3144\u315f\u313b \u3164\u3144\u315f\u313c \u3164\u3144\u315f\u313d \u3164\u3144\u315f\u313e \u3164\u3144\u315f\u313f \u3164\u3144\u315f\u3140 \u3164\u3144\u315f\u3141 \u3164\u3144\u315f\u3142 \u3164\u3144\u315f\u3143 \u3164\u3144\u315f\u3144 \u3164\u3144\u315f\u3145 \u3164\u3144\u315f\u3146 \u3164\u3144\u315f\u3147 \u3164\u3144\u315f\u3148 \u3164\u3144\u315f\u3149 \u3164\u3144\u315f\u314a \u3164\u3144\u315f\u314b \u3164\u3144\u315f\u314c \u3164\u3144\u315f\u314d \u3164\u3144\u315f\u314e \u3164\u3144\u315f\u314f \u3164\u3144\u315f\u3164 ",
-" row b4_d0_: \u3164\u3144\u3160\uca46 \u3164\u3144\u3160\u3131 \u3164\u3144\u3160\u3132 \u3164\u3144\u3160\u3133 \u3164\u3144\u3160\u3134 \u3164\u3144\u3160\u3135 \u3164\u3144\u3160\u3136 \u3164\u3144\u3160\u3137 \u3164\u3144\u3160\u3138 \u3164\u3144\u3160\u3139 \u3164\u3144\u3160\u313a \u3164\u3144\u3160\u313b \u3164\u3144\u3160\u313c \u3164\u3144\u3160\u313d \u3164\u3144\u3160\u313e \u3164\u3144\u3160\u313f \u3164\u3144\u3160\u3140 \u3164\u3144\u3160\u3141 \u3164\u3144\u3160\u3142 \u3164\u3144\u3160\u3143 \u3164\u3144\u3160\u3144 \u3164\u3144\u3160\u3145 \u3164\u3144\u3160\u3146 \u3164\u3144\u3160\u3147 \u3164\u3144\u3160\u3148 \u3164\u3144\u3160\u3149 \u3164\u3144\u3160\u314a \u3164\u3144\u3160\u314b \u3164\u3144\u3160\u314c \u3164\u3144\u3160\u314d \u3164\u3144\u3160\u314e \u3164\u3144\u3160\u314f \u3164\u3144\u3160\u3164 ",
-" row b4_d1_: \u3164\u3144\u3161\uca46 \u3164\u3144\u3161\u3131 \u3164\u3144\u3161\u3132 \u3164\u3144\u3161\u3133 \u3164\u3144\u3161\u3134 \u3164\u3144\u3161\u3135 \u3164\u3144\u3161\u3136 \u3164\u3144\u3161\u3137 \u3164\u3144\u3161\u3138 \u3164\u3144\u3161\u3139 \u3164\u3144\u3161\u313a \u3164\u3144\u3161\u313b \u3164\u3144\u3161\u313c \u3164\u3144\u3161\u313d \u3164\u3144\u3161\u313e \u3164\u3144\u3161\u313f \u3164\u3144\u3161\u3140 \u3164\u3144\u3161\u3141 \u3164\u3144\u3161\u3142 \u3164\u3144\u3161\u3143 \u3164\u3144\u3161\u3144 \u3164\u3144\u3161\u3145 \u3164\u3144\u3161\u3146 \u3164\u3144\u3161\u3147 \u3164\u3144\u3161\u3148 \u3164\u3144\u3161\u3149 \u3164\u3144\u3161\u314a \u3164\u3144\u3161\u314b \u3164\u3144\u3161\u314c \u3164\u3144\u3161\u314d \u3164\u3144\u3161\u314e \u3164\u3144\u3161\u314f \u3164\u3144\u3161\u3164 ",
-" row b4_d2_: \u3164\u3144\u3162\uca46 \u3164\u3144\u3162\u3131 \u3164\u3144\u3162\u3132 \u3164\u3144\u3162\u3133 \u3164\u3144\u3162\u3134 \u3164\u3144\u3162\u3135 \u3164\u3144\u3162\u3136 \u3164\u3144\u3162\u3137 \u3164\u3144\u3162\u3138 \u3164\u3144\u3162\u3139 \u3164\u3144\u3162\u313a \u3164\u3144\u3162\u313b \u3164\u3144\u3162\u313c \u3164\u3144\u3162\u313d \u3164\u3144\u3162\u313e \u3164\u3144\u3162\u313f \u3164\u3144\u3162\u3140 \u3164\u3144\u3162\u3141 \u3164\u3144\u3162\u3142 \u3164\u3144\u3162\u3143 \u3164\u3144\u3162\u3144 \u3164\u3144\u3162\u3145 \u3164\u3144\u3162\u3146 \u3164\u3144\u3162\u3147 \u3164\u3144\u3162\u3148 \u3164\u3144\u3162\u3149 \u3164\u3144\u3162\u314a \u3164\u3144\u3162\u314b \u3164\u3144\u3162\u314c \u3164\u3144\u3162\u314d \u3164\u3144\u3162\u314e \u3164\u3144\u3162\u314f \u3164\u3144\u3162\u3164 ",
-" row b4_d3_: \u3164\u3144\u3163\uca46 \u3164\u3144\u3163\u3131 \u3164\u3144\u3163\u3132 \u3164\u3144\u3163\u3133 \u3164\u3144\u3163\u3134 \u3164\u3144\u3163\u3135 \u3164\u3144\u3163\u3136 \u3164\u3144\u3163\u3137 \u3164\u3144\u3163\u3138 \u3164\u3144\u3163\u3139 \u3164\u3144\u3163\u313a \u3164\u3144\u3163\u313b \u3164\u3144\u3163\u313c \u3164\u3144\u3163\u313d \u3164\u3144\u3163\u313e \u3164\u3144\u3163\u313f \u3164\u3144\u3163\u3140 \u3164\u3144\u3163\u3141 \u3164\u3144\u3163\u3142 \u3164\u3144\u3163\u3143 \u3164\u3144\u3163\u3144 \u3164\u3144\u3163\u3145 \u3164\u3144\u3163\u3146 \u3164\u3144\u3163\u3147 \u3164\u3144\u3163\u3148 \u3164\u3144\u3163\u3149 \u3164\u3144\u3163\u314a \u3164\u3144\u3163\u314b \u3164\u3144\u3163\u314c \u3164\u3144\u3163\u314d \u3164\u3144\u3163\u314e \u3164\u3144\u3163\u314f \u3164\u3144\u3163\u3164 ",
-" row b4_d4_: \u3164\u3144\u3164\uca46 \u3164\u3144\u3164\u3131 \u3164\u3144\u3164\u3132 \u3164\u3144\u3164\u3133 \u3164\u3144\u3164\u3134 \u3164\u3144\u3164\u3135 \u3164\u3144\u3164\u3136 \u3164\u3144\u3164\u3137 \u3164\u3144\u3164\u3138 \u3164\u3144\u3164\u3139 \u3164\u3144\u3164\u313a \u3164\u3144\u3164\u313b \u3164\u3144\u3164\u313c \u3164\u3144\u3164\u313d \u3164\u3144\u3164\u313e \u3164\u3144\u3164\u313f \u3164\u3144\u3164\u3140 \u3164\u3144\u3164\u3141 \u3164\u3144\u3164\u3142 \u3164\u3144\u3164\u3143 \u3164\u3144\u3164\u3144 \u3164\u3144\u3164\u3145 \u3164\u3144\u3164\u3146 \u3164\u3144\u3164\u3147 \u3164\u3144\u3164\u3148 \u3164\u3144\u3164\u3149 \u3164\u3144\u3164\u314a \u3164\u3144\u3164\u314b \u3164\u3144\u3164\u314c \u3164\u3144\u3164\u314d \u3164\u3144\u3164\u314e \u3164\u3144\u3164\u314f \u3164\u3144\u3164\u3164 ",
-" row b5_be_: \u3164\u3145\u314e\uca46 \u3164\u3145\u314e\u3131 \u3164\u3145\u314e\u3132 \u3164\u3145\u314e\u3133 \u3164\u3145\u314e\u3134 \u3164\u3145\u314e\u3135 \u3164\u3145\u314e\u3136 \u3164\u3145\u314e\u3137 \u3164\u3145\u314e\u3138 \u3164\u3145\u314e\u3139 \u3164\u3145\u314e\u313a \u3164\u3145\u314e\u313b \u3164\u3145\u314e\u313c \u3164\u3145\u314e\u313d \u3164\u3145\u314e\u313e \u3164\u3145\u314e\u313f \u3164\u3145\u314e\u3140 \u3164\u3145\u314e\u3141 \u3164\u3145\u314e\u3142 \u3164\u3145\u314e\u3143 \u3164\u3145\u314e\u3144 \u3164\u3145\u314e\u3145 \u3164\u3145\u314e\u3146 \u3164\u3145\u314e\u3147 \u3164\u3145\u314e\u3148 \u3164\u3145\u314e\u3149 \u3164\u3145\u314e\u314a \u3164\u3145\u314e\u314b \u3164\u3145\u314e\u314c \u3164\u3145\u314e\u314d \u3164\u3145\u314e\u314e \u3164\u3145\u314e\u314f \u3164\u3145\u314e\u3164 ",
-" row b5_bf_: \u3164\u3145\u314f\uca46 \uc0ad \uc0ae \uc0af \uc0b0 \uc0b1 \uc0b2 \uc0b3 \u3164\u3145\u314f\u3138 \uc0b4 \uc0b5 \uc0b6 \uc0b7 \uc0b8 \uc0b9 \uc0ba \uc0bb \uc0bc \uc0bd \u3164\u3145\u314f\u3143 \uc0be \uc0bf \uc0c0 \uc0c1 \uc0c2 \u3164\u3145\u314f\u3149 \uc0c3 \uc0c4 \uc0c5 \uc0c6 \uc0c7 \u3164\u3145\u314f\u314f \uc0ac ",
-" row b5_c0_: \u3164\u3145\u3150\uca46 \uc0c9 \uc0ca \uc0cb \uc0cc \uc0cd \uc0ce \uc0cf \u3164\u3145\u3150\u3138 \uc0d0 \uc0d1 \uc0d2 \uc0d3 \uc0d4 \uc0d5 \uc0d6 \uc0d7 \uc0d8 \uc0d9 \u3164\u3145\u3150\u3143 \uc0da \uc0db \uc0dc \uc0dd \uc0de \u3164\u3145\u3150\u3149 \uc0df \uc0e0 \uc0e1 \uc0e2 \uc0e3 \u3164\u3145\u3150\u314f \uc0c8 ",
-" row b5_c1_: \u3164\u3145\u3151\uca46 \uc0e5 \uc0e6 \uc0e7 \uc0e8 \uc0e9 \uc0ea \uc0eb \u3164\u3145\u3151\u3138 \uc0ec \uc0ed \uc0ee \uc0ef \uc0f0 \uc0f1 \uc0f2 \uc0f3 \uc0f4 \uc0f5 \u3164\u3145\u3151\u3143 \uc0f6 \uc0f7 \uc0f8 \uc0f9 \uc0fa \u3164\u3145\u3151\u3149 \uc0fb \uc0fc \uc0fd \uc0fe \uc0ff \u3164\u3145\u3151\u314f \uc0e4 ",
-" row b5_c2_: \u3164\u3145\u3152\uca46 \uc101 \uc102 \uc103 \uc104 \uc105 \uc106 \uc107 \u3164\u3145\u3152\u3138 \uc108 \uc109 \uc10a \uc10b \uc10c \uc10d \uc10e \uc10f \uc110 \uc111 \u3164\u3145\u3152\u3143 \uc112 \uc113 \uc114 \uc115 \uc116 \u3164\u3145\u3152\u3149 \uc117 \uc118 \uc119 \uc11a \uc11b \u3164\u3145\u3152\u314f \uc100 ",
-" row b5_c3_: \u3164\u3145\u3153\uca46 \uc11d \uc11e \uc11f \uc120 \uc121 \uc122 \uc123 \u3164\u3145\u3153\u3138 \uc124 \uc125 \uc126 \uc127 \uc128 \uc129 \uc12a \uc12b \uc12c \uc12d \u3164\u3145\u3153\u3143 \uc12e \uc12f \uc130 \uc131 \uc132 \u3164\u3145\u3153\u3149 \uc133 \uc134 \uc135 \uc136 \uc137 \u3164\u3145\u3153\u314f \uc11c ",
-" row b5_c4_: \u3164\u3145\u3154\uca46 \uc139 \uc13a \uc13b \uc13c \uc13d \uc13e \uc13f \u3164\u3145\u3154\u3138 \uc140 \uc141 \uc142 \uc143 \uc144 \uc145 \uc146 \uc147 \uc148 \uc149 \u3164\u3145\u3154\u3143 \uc14a \uc14b \uc14c \uc14d \uc14e \u3164\u3145\u3154\u3149 \uc14f \uc150 \uc151 \uc152 \uc153 \u3164\u3145\u3154\u314f \uc138 ",
-" row b5_c5_: \u3164\u3145\u3155\uca46 \uc155 \uc156 \uc157 \uc158 \uc159 \uc15a \uc15b \u3164\u3145\u3155\u3138 \uc15c \uc15d \uc15e \uc15f \uc160 \uc161 \uc162 \uc163 \uc164 \uc165 \u3164\u3145\u3155\u3143 \uc166 \uc167 \uc168 \uc169 \uc16a \u3164\u3145\u3155\u3149 \uc16b \uc16c \uc16d \uc16e \uc16f \u3164\u3145\u3155\u314f \uc154 ",
-" row b5_c6_: \u3164\u3145\u3156\uca46 \uc171 \uc172 \uc173 \uc174 \uc175 \uc176 \uc177 \u3164\u3145\u3156\u3138 \uc178 \uc179 \uc17a \uc17b \uc17c \uc17d \uc17e \uc17f \uc180 \uc181 \u3164\u3145\u3156\u3143 \uc182 \uc183 \uc184 \uc185 \uc186 \u3164\u3145\u3156\u3149 \uc187 \uc188 \uc189 \uc18a \uc18b \u3164\u3145\u3156\u314f \uc170 ",
-" row b5_c7_: \u3164\u3145\u3157\uca46 \uc18d \uc18e \uc18f \uc190 \uc191 \uc192 \uc193 \u3164\u3145\u3157\u3138 \uc194 \uc195 \uc196 \uc197 \uc198 \uc199 \uc19a \uc19b \uc19c \uc19d \u3164\u3145\u3157\u3143 \uc19e \uc19f \uc1a0 \uc1a1 \uc1a2 \u3164\u3145\u3157\u3149 \uc1a3 \uc1a4 \uc1a5 \uc1a6 \uc1a7 \u3164\u3145\u3157\u314f \uc18c ",
-" row b5_c8_: \u3164\u3145\u3158\uca46 \uc1a9 \uc1aa \uc1ab \uc1ac \uc1ad \uc1ae \uc1af \u3164\u3145\u3158\u3138 \uc1b0 \uc1b1 \uc1b2 \uc1b3 \uc1b4 \uc1b5 \uc1b6 \uc1b7 \uc1b8 \uc1b9 \u3164\u3145\u3158\u3143 \uc1ba \uc1bb \uc1bc \uc1bd \uc1be \u3164\u3145\u3158\u3149 \uc1bf \uc1c0 \uc1c1 \uc1c2 \uc1c3 \u3164\u3145\u3158\u314f \uc1a8 ",
-" row b5_c9_: \u3164\u3145\u3159\uca46 \uc1c5 \uc1c6 \uc1c7 \uc1c8 \uc1c9 \uc1ca \uc1cb \u3164\u3145\u3159\u3138 \uc1cc \uc1cd \uc1ce \uc1cf \uc1d0 \uc1d1 \uc1d2 \uc1d3 \uc1d4 \uc1d5 \u3164\u3145\u3159\u3143 \uc1d6 \uc1d7 \uc1d8 \uc1d9 \uc1da \u3164\u3145\u3159\u3149 \uc1db \uc1dc \uc1dd \uc1de \uc1df \u3164\u3145\u3159\u314f \uc1c4 ",
-" row b5_ca_: \u3164\u3145\u315a\uca46 \uc1e1 \uc1e2 \uc1e3 \uc1e4 \uc1e5 \uc1e6 \uc1e7 \u3164\u3145\u315a\u3138 \uc1e8 \uc1e9 \uc1ea \uc1eb \uc1ec \uc1ed \uc1ee \uc1ef \uc1f0 \uc1f1 \u3164\u3145\u315a\u3143 \uc1f2 \uc1f3 \uc1f4 \uc1f5 \uc1f6 \u3164\u3145\u315a\u3149 \uc1f7 \uc1f8 \uc1f9 \uc1fa \uc1fb \u3164\u3145\u315a\u314f \uc1e0 ",
-" row b5_cb_: \u3164\u3145\u315b\uca46 \uc1fd \uc1fe \uc1ff \uc200 \uc201 \uc202 \uc203 \u3164\u3145\u315b\u3138 \uc204 \uc205 \uc206 \uc207 \uc208 \uc209 \uc20a \uc20b \uc20c \uc20d \u3164\u3145\u315b\u3143 \uc20e \uc20f \uc210 \uc211 \uc212 \u3164\u3145\u315b\u3149 \uc213 \uc214 \uc215 \uc216 \uc217 \u3164\u3145\u315b\u314f \uc1fc ",
-" row b5_cc_: \u3164\u3145\u315c\uca46 \uc219 \uc21a \uc21b \uc21c \uc21d \uc21e \uc21f \u3164\u3145\u315c\u3138 \uc220 \uc221 \uc222 \uc223 \uc224 \uc225 \uc226 \uc227 \uc228 \uc229 \u3164\u3145\u315c\u3143 \uc22a \uc22b \uc22c \uc22d \uc22e \u3164\u3145\u315c\u3149 \uc22f \uc230 \uc231 \uc232 \uc233 \u3164\u3145\u315c\u314f \uc218 ",
-" row b5_cd_: \u3164\u3145\u315d\uca46 \uc235 \uc236 \uc237 \uc238 \uc239 \uc23a \uc23b \u3164\u3145\u315d\u3138 \uc23c \uc23d \uc23e \uc23f \uc240 \uc241 \uc242 \uc243 \uc244 \uc245 \u3164\u3145\u315d\u3143 \uc246 \uc247 \uc248 \uc249 \uc24a \u3164\u3145\u315d\u3149 \uc24b \uc24c \uc24d \uc24e \uc24f \u3164\u3145\u315d\u314f \uc234 ",
-" row b5_ce_: \u3164\u3145\u315e\uca46 \uc251 \uc252 \uc253 \uc254 \uc255 \uc256 \uc257 \u3164\u3145\u315e\u3138 \uc258 \uc259 \uc25a \uc25b \uc25c \uc25d \uc25e \uc25f \uc260 \uc261 \u3164\u3145\u315e\u3143 \uc262 \uc263 \uc264 \uc265 \uc266 \u3164\u3145\u315e\u3149 \uc267 \uc268 \uc269 \uc26a \uc26b \u3164\u3145\u315e\u314f \uc250 ",
-" row b5_cf_: \u3164\u3145\u315f\uca46 \uc26d \uc26e \uc26f \uc270 \uc271 \uc272 \uc273 \u3164\u3145\u315f\u3138 \uc274 \uc275 \uc276 \uc277 \uc278 \uc279 \uc27a \uc27b \uc27c \uc27d \u3164\u3145\u315f\u3143 \uc27e \uc27f \uc280 \uc281 \uc282 \u3164\u3145\u315f\u3149 \uc283 \uc284 \uc285 \uc286 \uc287 \u3164\u3145\u315f\u314f \uc26c ",
-" row b5_d0_: \u3164\u3145\u3160\uca46 \uc289 \uc28a \uc28b \uc28c \uc28d \uc28e \uc28f \u3164\u3145\u3160\u3138 \uc290 \uc291 \uc292 \uc293 \uc294 \uc295 \uc296 \uc297 \uc298 \uc299 \u3164\u3145\u3160\u3143 \uc29a \uc29b \uc29c \uc29d \uc29e \u3164\u3145\u3160\u3149 \uc29f \uc2a0 \uc2a1 \uc2a2 \uc2a3 \u3164\u3145\u3160\u314f \uc288 ",
-" row b5_d1_: \u3164\u3145\u3161\uca46 \uc2a5 \uc2a6 \uc2a7 \uc2a8 \uc2a9 \uc2aa \uc2ab \u3164\u3145\u3161\u3138 \uc2ac \uc2ad \uc2ae \uc2af \uc2b0 \uc2b1 \uc2b2 \uc2b3 \uc2b4 \uc2b5 \u3164\u3145\u3161\u3143 \uc2b6 \uc2b7 \uc2b8 \uc2b9 \uc2ba \u3164\u3145\u3161\u3149 \uc2bb \uc2bc \uc2bd \uc2be \uc2bf \u3164\u3145\u3161\u314f \uc2a4 ",
-" row b5_d2_: \u3164\u3145\u3162\uca46 \uc2c1 \uc2c2 \uc2c3 \uc2c4 \uc2c5 \uc2c6 \uc2c7 \u3164\u3145\u3162\u3138 \uc2c8 \uc2c9 \uc2ca \uc2cb \uc2cc \uc2cd \uc2ce \uc2cf \uc2d0 \uc2d1 \u3164\u3145\u3162\u3143 \uc2d2 \uc2d3 \uc2d4 \uc2d5 \uc2d6 \u3164\u3145\u3162\u3149 \uc2d7 \uc2d8 \uc2d9 \uc2da \uc2db \u3164\u3145\u3162\u314f \uc2c0 ",
-" row b5_d3_: \u3164\u3145\u3163\uca46 \uc2dd \uc2de \uc2df \uc2e0 \uc2e1 \uc2e2 \uc2e3 \u3164\u3145\u3163\u3138 \uc2e4 \uc2e5 \uc2e6 \uc2e7 \uc2e8 \uc2e9 \uc2ea \uc2eb \uc2ec \uc2ed \u3164\u3145\u3163\u3143 \uc2ee \uc2ef \uc2f0 \uc2f1 \uc2f2 \u3164\u3145\u3163\u3149 \uc2f3 \uc2f4 \uc2f5 \uc2f6 \uc2f7 \u3164\u3145\u3163\u314f \uc2dc ",
-" row b5_d4_: \u3164\u3145\u3164\uca46 \u3164\u3145\u3164\u3131 \u3164\u3145\u3164\u3132 \u3164\u3145\u3164\u3133 \u3164\u3145\u3164\u3134 \u3164\u3145\u3164\u3135 \u3164\u3145\u3164\u3136 \u3164\u3145\u3164\u3137 \u3164\u3145\u3164\u3138 \u3164\u3145\u3164\u3139 \u3164\u3145\u3164\u313a \u3164\u3145\u3164\u313b \u3164\u3145\u3164\u313c \u3164\u3145\u3164\u313d \u3164\u3145\u3164\u313e \u3164\u3145\u3164\u313f \u3164\u3145\u3164\u3140 \u3164\u3145\u3164\u3141 \u3164\u3145\u3164\u3142 \u3164\u3145\u3164\u3143 \u3164\u3145\u3164\u3144 \u3164\u3145\u3164\u3145 \u3164\u3145\u3164\u3146 \u3164\u3145\u3164\u3147 \u3164\u3145\u3164\u3148 \u3164\u3145\u3164\u3149 \u3164\u3145\u3164\u314a \u3164\u3145\u3164\u314b \u3164\u3145\u3164\u314c \u3164\u3145\u3164\u314d \u3164\u3145\u3164\u314e \u3164\u3145\u3164\u314f \u3164\u3145\u3164\u3164 ",
-" row b6_be_: \u3164\u3146\u314e\uca46 \u3164\u3146\u314e\u3131 \u3164\u3146\u314e\u3132 \u3164\u3146\u314e\u3133 \u3164\u3146\u314e\u3134 \u3164\u3146\u314e\u3135 \u3164\u3146\u314e\u3136 \u3164\u3146\u314e\u3137 \u3164\u3146\u314e\u3138 \u3164\u3146\u314e\u3139 \u3164\u3146\u314e\u313a \u3164\u3146\u314e\u313b \u3164\u3146\u314e\u313c \u3164\u3146\u314e\u313d \u3164\u3146\u314e\u313e \u3164\u3146\u314e\u313f \u3164\u3146\u314e\u3140 \u3164\u3146\u314e\u3141 \u3164\u3146\u314e\u3142 \u3164\u3146\u314e\u3143 \u3164\u3146\u314e\u3144 \u3164\u3146\u314e\u3145 \u3164\u3146\u314e\u3146 \u3164\u3146\u314e\u3147 \u3164\u3146\u314e\u3148 \u3164\u3146\u314e\u3149 \u3164\u3146\u314e\u314a \u3164\u3146\u314e\u314b \u3164\u3146\u314e\u314c \u3164\u3146\u314e\u314d \u3164\u3146\u314e\u314e \u3164\u3146\u314e\u314f \u3164\u3146\u314e\u3164 ",
-" row b6_bf_: \u3164\u3146\u314f\uca46 \uc2f9 \uc2fa \uc2fb \uc2fc \uc2fd \uc2fe \uc2ff \u3164\u3146\u314f\u3138 \uc300 \uc301 \uc302 \uc303 \uc304 \uc305 \uc306 \uc307 \uc308 \uc309 \u3164\u3146\u314f\u3143 \uc30a \uc30b \uc30c \uc30d \uc30e \u3164\u3146\u314f\u3149 \uc30f \uc310 \uc311 \uc312 \uc313 \u3164\u3146\u314f\u314f \uc2f8 ",
-" row b6_c0_: \u3164\u3146\u3150\uca46 \uc315 \uc316 \uc317 \uc318 \uc319 \uc31a \uc31b \u3164\u3146\u3150\u3138 \uc31c \uc31d \uc31e \uc31f \uc320 \uc321 \uc322 \uc323 \uc324 \uc325 \u3164\u3146\u3150\u3143 \uc326 \uc327 \uc328 \uc329 \uc32a \u3164\u3146\u3150\u3149 \uc32b \uc32c \uc32d \uc32e \uc32f \u3164\u3146\u3150\u314f \uc314 ",
-" row b6_c1_: \u3164\u3146\u3151\uca46 \uc331 \uc332 \uc333 \uc334 \uc335 \uc336 \uc337 \u3164\u3146\u3151\u3138 \uc338 \uc339 \uc33a \uc33b \uc33c \uc33d \uc33e \uc33f \uc340 \uc341 \u3164\u3146\u3151\u3143 \uc342 \uc343 \uc344 \uc345 \uc346 \u3164\u3146\u3151\u3149 \uc347 \uc348 \uc349 \uc34a \uc34b \u3164\u3146\u3151\u314f \uc330 ",
-" row b6_c2_: \u3164\u3146\u3152\uca46 \uc34d \uc34e \uc34f \uc350 \uc351 \uc352 \uc353 \u3164\u3146\u3152\u3138 \uc354 \uc355 \uc356 \uc357 \uc358 \uc359 \uc35a \uc35b \uc35c \uc35d \u3164\u3146\u3152\u3143 \uc35e \uc35f \uc360 \uc361 \uc362 \u3164\u3146\u3152\u3149 \uc363 \uc364 \uc365 \uc366 \uc367 \u3164\u3146\u3152\u314f \uc34c ",
-" row b6_c3_: \u3164\u3146\u3153\uca46 \uc369 \uc36a \uc36b \uc36c \uc36d \uc36e \uc36f \u3164\u3146\u3153\u3138 \uc370 \uc371 \uc372 \uc373 \uc374 \uc375 \uc376 \uc377 \uc378 \uc379 \u3164\u3146\u3153\u3143 \uc37a \uc37b \uc37c \uc37d \uc37e \u3164\u3146\u3153\u3149 \uc37f \uc380 \uc381 \uc382 \uc383 \u3164\u3146\u3153\u314f \uc368 ",
-" row b6_c4_: \u3164\u3146\u3154\uca46 \uc385 \uc386 \uc387 \uc388 \uc389 \uc38a \uc38b \u3164\u3146\u3154\u3138 \uc38c \uc38d \uc38e \uc38f \uc390 \uc391 \uc392 \uc393 \uc394 \uc395 \u3164\u3146\u3154\u3143 \uc396 \uc397 \uc398 \uc399 \uc39a \u3164\u3146\u3154\u3149 \uc39b \uc39c \uc39d \uc39e \uc39f \u3164\u3146\u3154\u314f \uc384 ",
-" row b6_c5_: \u3164\u3146\u3155\uca46 \uc3a1 \uc3a2 \uc3a3 \uc3a4 \uc3a5 \uc3a6 \uc3a7 \u3164\u3146\u3155\u3138 \uc3a8 \uc3a9 \uc3aa \uc3ab \uc3ac \uc3ad \uc3ae \uc3af \uc3b0 \uc3b1 \u3164\u3146\u3155\u3143 \uc3b2 \uc3b3 \uc3b4 \uc3b5 \uc3b6 \u3164\u3146\u3155\u3149 \uc3b7 \uc3b8 \uc3b9 \uc3ba \uc3bb \u3164\u3146\u3155\u314f \uc3a0 ",
-" row b6_c6_: \u3164\u3146\u3156\uca46 \uc3bd \uc3be \uc3bf \uc3c0 \uc3c1 \uc3c2 \uc3c3 \u3164\u3146\u3156\u3138 \uc3c4 \uc3c5 \uc3c6 \uc3c7 \uc3c8 \uc3c9 \uc3ca \uc3cb \uc3cc \uc3cd \u3164\u3146\u3156\u3143 \uc3ce \uc3cf \uc3d0 \uc3d1 \uc3d2 \u3164\u3146\u3156\u3149 \uc3d3 \uc3d4 \uc3d5 \uc3d6 \uc3d7 \u3164\u3146\u3156\u314f \uc3bc ",
-" row b6_c7_: \u3164\u3146\u3157\uca46 \uc3d9 \uc3da \uc3db \uc3dc \uc3dd \uc3de \uc3df \u3164\u3146\u3157\u3138 \uc3e0 \uc3e1 \uc3e2 \uc3e3 \uc3e4 \uc3e5 \uc3e6 \uc3e7 \uc3e8 \uc3e9 \u3164\u3146\u3157\u3143 \uc3ea \uc3eb \uc3ec \uc3ed \uc3ee \u3164\u3146\u3157\u3149 \uc3ef \uc3f0 \uc3f1 \uc3f2 \uc3f3 \u3164\u3146\u3157\u314f \uc3d8 ",
-" row b6_c8_: \u3164\u3146\u3158\uca46 \uc3f5 \uc3f6 \uc3f7 \uc3f8 \uc3f9 \uc3fa \uc3fb \u3164\u3146\u3158\u3138 \uc3fc \uc3fd \uc3fe \uc3ff \uc400 \uc401 \uc402 \uc403 \uc404 \uc405 \u3164\u3146\u3158\u3143 \uc406 \uc407 \uc408 \uc409 \uc40a \u3164\u3146\u3158\u3149 \uc40b \uc40c \uc40d \uc40e \uc40f \u3164\u3146\u3158\u314f \uc3f4 ",
-" row b6_c9_: \u3164\u3146\u3159\uca46 \uc411 \uc412 \uc413 \uc414 \uc415 \uc416 \uc417 \u3164\u3146\u3159\u3138 \uc418 \uc419 \uc41a \uc41b \uc41c \uc41d \uc41e \uc41f \uc420 \uc421 \u3164\u3146\u3159\u3143 \uc422 \uc423 \uc424 \uc425 \uc426 \u3164\u3146\u3159\u3149 \uc427 \uc428 \uc429 \uc42a \uc42b \u3164\u3146\u3159\u314f \uc410 ",
-" row b6_ca_: \u3164\u3146\u315a\uca46 \uc42d \uc42e \uc42f \uc430 \uc431 \uc432 \uc433 \u3164\u3146\u315a\u3138 \uc434 \uc435 \uc436 \uc437 \uc438 \uc439 \uc43a \uc43b \uc43c \uc43d \u3164\u3146\u315a\u3143 \uc43e \uc43f \uc440 \uc441 \uc442 \u3164\u3146\u315a\u3149 \uc443 \uc444 \uc445 \uc446 \uc447 \u3164\u3146\u315a\u314f \uc42c ",
-" row b6_cb_: \u3164\u3146\u315b\uca46 \uc449 \uc44a \uc44b \uc44c \uc44d \uc44e \uc44f \u3164\u3146\u315b\u3138 \uc450 \uc451 \uc452 \uc453 \uc454 \uc455 \uc456 \uc457 \uc458 \uc459 \u3164\u3146\u315b\u3143 \uc45a \uc45b \uc45c \uc45d \uc45e \u3164\u3146\u315b\u3149 \uc45f \uc460 \uc461 \uc462 \uc463 \u3164\u3146\u315b\u314f \uc448 ",
-" row b6_cc_: \u3164\u3146\u315c\uca46 \uc465 \uc466 \uc467 \uc468 \uc469 \uc46a \uc46b \u3164\u3146\u315c\u3138 \uc46c \uc46d \uc46e \uc46f \uc470 \uc471 \uc472 \uc473 \uc474 \uc475 \u3164\u3146\u315c\u3143 \uc476 \uc477 \uc478 \uc479 \uc47a \u3164\u3146\u315c\u3149 \uc47b \uc47c \uc47d \uc47e \uc47f \u3164\u3146\u315c\u314f \uc464 ",
-" row b6_cd_: \u3164\u3146\u315d\uca46 \uc481 \uc482 \uc483 \uc484 \uc485 \uc486 \uc487 \u3164\u3146\u315d\u3138 \uc488 \uc489 \uc48a \uc48b \uc48c \uc48d \uc48e \uc48f \uc490 \uc491 \u3164\u3146\u315d\u3143 \uc492 \uc493 \uc494 \uc495 \uc496 \u3164\u3146\u315d\u3149 \uc497 \uc498 \uc499 \uc49a \uc49b \u3164\u3146\u315d\u314f \uc480 ",
-" row b6_ce_: \u3164\u3146\u315e\uca46 \uc49d \uc49e \uc49f \uc4a0 \uc4a1 \uc4a2 \uc4a3 \u3164\u3146\u315e\u3138 \uc4a4 \uc4a5 \uc4a6 \uc4a7 \uc4a8 \uc4a9 \uc4aa \uc4ab \uc4ac \uc4ad \u3164\u3146\u315e\u3143 \uc4ae \uc4af \uc4b0 \uc4b1 \uc4b2 \u3164\u3146\u315e\u3149 \uc4b3 \uc4b4 \uc4b5 \uc4b6 \uc4b7 \u3164\u3146\u315e\u314f \uc49c ",
-" row b6_cf_: \u3164\u3146\u315f\uca46 \uc4b9 \uc4ba \uc4bb \uc4bc \uc4bd \uc4be \uc4bf \u3164\u3146\u315f\u3138 \uc4c0 \uc4c1 \uc4c2 \uc4c3 \uc4c4 \uc4c5 \uc4c6 \uc4c7 \uc4c8 \uc4c9 \u3164\u3146\u315f\u3143 \uc4ca \uc4cb \uc4cc \uc4cd \uc4ce \u3164\u3146\u315f\u3149 \uc4cf \uc4d0 \uc4d1 \uc4d2 \uc4d3 \u3164\u3146\u315f\u314f \uc4b8 ",
-" row b6_d0_: \u3164\u3146\u3160\uca46 \uc4d5 \uc4d6 \uc4d7 \uc4d8 \uc4d9 \uc4da \uc4db \u3164\u3146\u3160\u3138 \uc4dc \uc4dd \uc4de \uc4df \uc4e0 \uc4e1 \uc4e2 \uc4e3 \uc4e4 \uc4e5 \u3164\u3146\u3160\u3143 \uc4e6 \uc4e7 \uc4e8 \uc4e9 \uc4ea \u3164\u3146\u3160\u3149 \uc4eb \uc4ec \uc4ed \uc4ee \uc4ef \u3164\u3146\u3160\u314f \uc4d4 ",
-" row b6_d1_: \u3164\u3146\u3161\uca46 \uc4f1 \uc4f2 \uc4f3 \uc4f4 \uc4f5 \uc4f6 \uc4f7 \u3164\u3146\u3161\u3138 \uc4f8 \uc4f9 \uc4fa \uc4fb \uc4fc \uc4fd \uc4fe \uc4ff \uc500 \uc501 \u3164\u3146\u3161\u3143 \uc502 \uc503 \uc504 \uc505 \uc506 \u3164\u3146\u3161\u3149 \uc507 \uc508 \uc509 \uc50a \uc50b \u3164\u3146\u3161\u314f \uc4f0 ",
-" row b6_d2_: \u3164\u3146\u3162\uca46 \uc50d \uc50e \uc50f \uc510 \uc511 \uc512 \uc513 \u3164\u3146\u3162\u3138 \uc514 \uc515 \uc516 \uc517 \uc518 \uc519 \uc51a \uc51b \uc51c \uc51d \u3164\u3146\u3162\u3143 \uc51e \uc51f \uc520 \uc521 \uc522 \u3164\u3146\u3162\u3149 \uc523 \uc524 \uc525 \uc526 \uc527 \u3164\u3146\u3162\u314f \uc50c ",
-" row b6_d3_: \u3164\u3146\u3163\uca46 \uc529 \uc52a \uc52b \uc52c \uc52d \uc52e \uc52f \u3164\u3146\u3163\u3138 \uc530 \uc531 \uc532 \uc533 \uc534 \uc535 \uc536 \uc537 \uc538 \uc539 \u3164\u3146\u3163\u3143 \uc53a \uc53b \uc53c \uc53d \uc53e \u3164\u3146\u3163\u3149 \uc53f \uc540 \uc541 \uc542 \uc543 \u3164\u3146\u3163\u314f \uc528 ",
-" row b6_d4_: \u3164\u3146\u3164\uca46 \u3164\u3146\u3164\u3131 \u3164\u3146\u3164\u3132 \u3164\u3146\u3164\u3133 \u3164\u3146\u3164\u3134 \u3164\u3146\u3164\u3135 \u3164\u3146\u3164\u3136 \u3164\u3146\u3164\u3137 \u3164\u3146\u3164\u3138 \u3164\u3146\u3164\u3139 \u3164\u3146\u3164\u313a \u3164\u3146\u3164\u313b \u3164\u3146\u3164\u313c \u3164\u3146\u3164\u313d \u3164\u3146\u3164\u313e \u3164\u3146\u3164\u313f \u3164\u3146\u3164\u3140 \u3164\u3146\u3164\u3141 \u3164\u3146\u3164\u3142 \u3164\u3146\u3164\u3143 \u3164\u3146\u3164\u3144 \u3164\u3146\u3164\u3145 \u3164\u3146\u3164\u3146 \u3164\u3146\u3164\u3147 \u3164\u3146\u3164\u3148 \u3164\u3146\u3164\u3149 \u3164\u3146\u3164\u314a \u3164\u3146\u3164\u314b \u3164\u3146\u3164\u314c \u3164\u3146\u3164\u314d \u3164\u3146\u3164\u314e \u3164\u3146\u3164\u314f \u3164\u3146\u3164\u3164 ",
-" row b7_be_: \u3164\u3147\u314e\uca46 \u3164\u3147\u314e\u3131 \u3164\u3147\u314e\u3132 \u3164\u3147\u314e\u3133 \u3164\u3147\u314e\u3134 \u3164\u3147\u314e\u3135 \u3164\u3147\u314e\u3136 \u3164\u3147\u314e\u3137 \u3164\u3147\u314e\u3138 \u3164\u3147\u314e\u3139 \u3164\u3147\u314e\u313a \u3164\u3147\u314e\u313b \u3164\u3147\u314e\u313c \u3164\u3147\u314e\u313d \u3164\u3147\u314e\u313e \u3164\u3147\u314e\u313f \u3164\u3147\u314e\u3140 \u3164\u3147\u314e\u3141 \u3164\u3147\u314e\u3142 \u3164\u3147\u314e\u3143 \u3164\u3147\u314e\u3144 \u3164\u3147\u314e\u3145 \u3164\u3147\u314e\u3146 \u3164\u3147\u314e\u3147 \u3164\u3147\u314e\u3148 \u3164\u3147\u314e\u3149 \u3164\u3147\u314e\u314a \u3164\u3147\u314e\u314b \u3164\u3147\u314e\u314c \u3164\u3147\u314e\u314d \u3164\u3147\u314e\u314e \u3164\u3147\u314e\u314f \u3164\u3147\u314e\u3164 ",
-" row b7_bf_: \u3164\u3147\u314f\uca46 \uc545 \uc546 \uc547 \uc548 \uc549 \uc54a \uc54b \u3164\u3147\u314f\u3138 \uc54c \uc54d \uc54e \uc54f \uc550 \uc551 \uc552 \uc553 \uc554 \uc555 \u3164\u3147\u314f\u3143 \uc556 \uc557 \uc558 \uc559 \uc55a \u3164\u3147\u314f\u3149 \uc55b \uc55c \uc55d \uc55e \uc55f \u3164\u3147\u314f\u314f \uc544 ",
-" row b7_c0_: \u3164\u3147\u3150\uca46 \uc561 \uc562 \uc563 \uc564 \uc565 \uc566 \uc567 \u3164\u3147\u3150\u3138 \uc568 \uc569 \uc56a \uc56b \uc56c \uc56d \uc56e \uc56f \uc570 \uc571 \u3164\u3147\u3150\u3143 \uc572 \uc573 \uc574 \uc575 \uc576 \u3164\u3147\u3150\u3149 \uc577 \uc578 \uc579 \uc57a \uc57b \u3164\u3147\u3150\u314f \uc560 ",
-" row b7_c1_: \u3164\u3147\u3151\uca46 \uc57d \uc57e \uc57f \uc580 \uc581 \uc582 \uc583 \u3164\u3147\u3151\u3138 \uc584 \uc585 \uc586 \uc587 \uc588 \uc589 \uc58a \uc58b \uc58c \uc58d \u3164\u3147\u3151\u3143 \uc58e \uc58f \uc590 \uc591 \uc592 \u3164\u3147\u3151\u3149 \uc593 \uc594 \uc595 \uc596 \uc597 \u3164\u3147\u3151\u314f \uc57c ",
-" row b7_c2_: \u3164\u3147\u3152\uca46 \uc599 \uc59a \uc59b \uc59c \uc59d \uc59e \uc59f \u3164\u3147\u3152\u3138 \uc5a0 \uc5a1 \uc5a2 \uc5a3 \uc5a4 \uc5a5 \uc5a6 \uc5a7 \uc5a8 \uc5a9 \u3164\u3147\u3152\u3143 \uc5aa \uc5ab \uc5ac \uc5ad \uc5ae \u3164\u3147\u3152\u3149 \uc5af \uc5b0 \uc5b1 \uc5b2 \uc5b3 \u3164\u3147\u3152\u314f \uc598 ",
-" row b7_c3_: \u3164\u3147\u3153\uca46 \uc5b5 \uc5b6 \uc5b7 \uc5b8 \uc5b9 \uc5ba \uc5bb \u3164\u3147\u3153\u3138 \uc5bc \uc5bd \uc5be \uc5bf \uc5c0 \uc5c1 \uc5c2 \uc5c3 \uc5c4 \uc5c5 \u3164\u3147\u3153\u3143 \uc5c6 \uc5c7 \uc5c8 \uc5c9 \uc5ca \u3164\u3147\u3153\u3149 \uc5cb \uc5cc \uc5cd \uc5ce \uc5cf \u3164\u3147\u3153\u314f \uc5b4 ",
-" row b7_c4_: \u3164\u3147\u3154\uca46 \uc5d1 \uc5d2 \uc5d3 \uc5d4 \uc5d5 \uc5d6 \uc5d7 \u3164\u3147\u3154\u3138 \uc5d8 \uc5d9 \uc5da \uc5db \uc5dc \uc5dd \uc5de \uc5df \uc5e0 \uc5e1 \u3164\u3147\u3154\u3143 \uc5e2 \uc5e3 \uc5e4 \uc5e5 \uc5e6 \u3164\u3147\u3154\u3149 \uc5e7 \uc5e8 \uc5e9 \uc5ea \uc5eb \u3164\u3147\u3154\u314f \uc5d0 ",
-" row b7_c5_: \u3164\u3147\u3155\uca46 \uc5ed \uc5ee \uc5ef \uc5f0 \uc5f1 \uc5f2 \uc5f3 \u3164\u3147\u3155\u3138 \uc5f4 \uc5f5 \uc5f6 \uc5f7 \uc5f8 \uc5f9 \uc5fa \uc5fb \uc5fc \uc5fd \u3164\u3147\u3155\u3143 \uc5fe \uc5ff \uc600 \uc601 \uc602 \u3164\u3147\u3155\u3149 \uc603 \uc604 \uc605 \uc606 \uc607 \u3164\u3147\u3155\u314f \uc5ec ",
-" row b7_c6_: \u3164\u3147\u3156\uca46 \uc609 \uc60a \uc60b \uc60c \uc60d \uc60e \uc60f \u3164\u3147\u3156\u3138 \uc610 \uc611 \uc612 \uc613 \uc614 \uc615 \uc616 \uc617 \uc618 \uc619 \u3164\u3147\u3156\u3143 \uc61a \uc61b \uc61c \uc61d \uc61e \u3164\u3147\u3156\u3149 \uc61f \uc620 \uc621 \uc622 \uc623 \u3164\u3147\u3156\u314f \uc608 ",
-" row b7_c7_: \u3164\u3147\u3157\uca46 \uc625 \uc626 \uc627 \uc628 \uc629 \uc62a \uc62b \u3164\u3147\u3157\u3138 \uc62c \uc62d \uc62e \uc62f \uc630 \uc631 \uc632 \uc633 \uc634 \uc635 \u3164\u3147\u3157\u3143 \uc636 \uc637 \uc638 \uc639 \uc63a \u3164\u3147\u3157\u3149 \uc63b \uc63c \uc63d \uc63e \uc63f \u3164\u3147\u3157\u314f \uc624 ",
-" row b7_c8_: \u3164\u3147\u3158\uca46 \uc641 \uc642 \uc643 \uc644 \uc645 \uc646 \uc647 \u3164\u3147\u3158\u3138 \uc648 \uc649 \uc64a \uc64b \uc64c \uc64d \uc64e \uc64f \uc650 \uc651 \u3164\u3147\u3158\u3143 \uc652 \uc653 \uc654 \uc655 \uc656 \u3164\u3147\u3158\u3149 \uc657 \uc658 \uc659 \uc65a \uc65b \u3164\u3147\u3158\u314f \uc640 ",
-" row b7_c9_: \u3164\u3147\u3159\uca46 \uc65d \uc65e \uc65f \uc660 \uc661 \uc662 \uc663 \u3164\u3147\u3159\u3138 \uc664 \uc665 \uc666 \uc667 \uc668 \uc669 \uc66a \uc66b \uc66c \uc66d \u3164\u3147\u3159\u3143 \uc66e \uc66f \uc670 \uc671 \uc672 \u3164\u3147\u3159\u3149 \uc673 \uc674 \uc675 \uc676 \uc677 \u3164\u3147\u3159\u314f \uc65c ",
-" row b7_ca_: \u3164\u3147\u315a\uca46 \uc679 \uc67a \uc67b \uc67c \uc67d \uc67e \uc67f \u3164\u3147\u315a\u3138 \uc680 \uc681 \uc682 \uc683 \uc684 \uc685 \uc686 \uc687 \uc688 \uc689 \u3164\u3147\u315a\u3143 \uc68a \uc68b \uc68c \uc68d \uc68e \u3164\u3147\u315a\u3149 \uc68f \uc690 \uc691 \uc692 \uc693 \u3164\u3147\u315a\u314f \uc678 ",
-" row b7_cb_: \u3164\u3147\u315b\uca46 \uc695 \uc696 \uc697 \uc698 \uc699 \uc69a \uc69b \u3164\u3147\u315b\u3138 \uc69c \uc69d \uc69e \uc69f \uc6a0 \uc6a1 \uc6a2 \uc6a3 \uc6a4 \uc6a5 \u3164\u3147\u315b\u3143 \uc6a6 \uc6a7 \uc6a8 \uc6a9 \uc6aa \u3164\u3147\u315b\u3149 \uc6ab \uc6ac \uc6ad \uc6ae \uc6af \u3164\u3147\u315b\u314f \uc694 ",
-" row b7_cc_: \u3164\u3147\u315c\uca46 \uc6b1 \uc6b2 \uc6b3 \uc6b4 \uc6b5 \uc6b6 \uc6b7 \u3164\u3147\u315c\u3138 \uc6b8 \uc6b9 \uc6ba \uc6bb \uc6bc \uc6bd \uc6be \uc6bf \uc6c0 \uc6c1 \u3164\u3147\u315c\u3143 \uc6c2 \uc6c3 \uc6c4 \uc6c5 \uc6c6 \u3164\u3147\u315c\u3149 \uc6c7 \uc6c8 \uc6c9 \uc6ca \uc6cb \u3164\u3147\u315c\u314f \uc6b0 ",
-" row b7_cd_: \u3164\u3147\u315d\uca46 \uc6cd \uc6ce \uc6cf \uc6d0 \uc6d1 \uc6d2 \uc6d3 \u3164\u3147\u315d\u3138 \uc6d4 \uc6d5 \uc6d6 \uc6d7 \uc6d8 \uc6d9 \uc6da \uc6db \uc6dc \uc6dd \u3164\u3147\u315d\u3143 \uc6de \uc6df \uc6e0 \uc6e1 \uc6e2 \u3164\u3147\u315d\u3149 \uc6e3 \uc6e4 \uc6e5 \uc6e6 \uc6e7 \u3164\u3147\u315d\u314f \uc6cc ",
-" row b7_ce_: \u3164\u3147\u315e\uca46 \uc6e9 \uc6ea \uc6eb \uc6ec \uc6ed \uc6ee \uc6ef \u3164\u3147\u315e\u3138 \uc6f0 \uc6f1 \uc6f2 \uc6f3 \uc6f4 \uc6f5 \uc6f6 \uc6f7 \uc6f8 \uc6f9 \u3164\u3147\u315e\u3143 \uc6fa \uc6fb \uc6fc \uc6fd \uc6fe \u3164\u3147\u315e\u3149 \uc6ff \uc700 \uc701 \uc702 \uc703 \u3164\u3147\u315e\u314f \uc6e8 ",
-" row b7_cf_: \u3164\u3147\u315f\uca46 \uc705 \uc706 \uc707 \uc708 \uc709 \uc70a \uc70b \u3164\u3147\u315f\u3138 \uc70c \uc70d \uc70e \uc70f \uc710 \uc711 \uc712 \uc713 \uc714 \uc715 \u3164\u3147\u315f\u3143 \uc716 \uc717 \uc718 \uc719 \uc71a \u3164\u3147\u315f\u3149 \uc71b \uc71c \uc71d \uc71e \uc71f \u3164\u3147\u315f\u314f \uc704 ",
-" row b7_d0_: \u3164\u3147\u3160\uca46 \uc721 \uc722 \uc723 \uc724 \uc725 \uc726 \uc727 \u3164\u3147\u3160\u3138 \uc728 \uc729 \uc72a \uc72b \uc72c \uc72d \uc72e \uc72f \uc730 \uc731 \u3164\u3147\u3160\u3143 \uc732 \uc733 \uc734 \uc735 \uc736 \u3164\u3147\u3160\u3149 \uc737 \uc738 \uc739 \uc73a \uc73b \u3164\u3147\u3160\u314f \uc720 ",
-" row b7_d1_: \u3164\u3147\u3161\uca46 \uc73d \uc73e \uc73f \uc740 \uc741 \uc742 \uc743 \u3164\u3147\u3161\u3138 \uc744 \uc745 \uc746 \uc747 \uc748 \uc749 \uc74a \uc74b \uc74c \uc74d \u3164\u3147\u3161\u3143 \uc74e \uc74f \uc750 \uc751 \uc752 \u3164\u3147\u3161\u3149 \uc753 \uc754 \uc755 \uc756 \uc757 \u3164\u3147\u3161\u314f \uc73c ",
-" row b7_d2_: \u3164\u3147\u3162\uca46 \uc759 \uc75a \uc75b \uc75c \uc75d \uc75e \uc75f \u3164\u3147\u3162\u3138 \uc760 \uc761 \uc762 \uc763 \uc764 \uc765 \uc766 \uc767 \uc768 \uc769 \u3164\u3147\u3162\u3143 \uc76a \uc76b \uc76c \uc76d \uc76e \u3164\u3147\u3162\u3149 \uc76f \uc770 \uc771 \uc772 \uc773 \u3164\u3147\u3162\u314f \uc758 ",
-" row b7_d3_: \u3164\u3147\u3163\uca46 \uc775 \uc776 \uc777 \uc778 \uc779 \uc77a \uc77b \u3164\u3147\u3163\u3138 \uc77c \uc77d \uc77e \uc77f \uc780 \uc781 \uc782 \uc783 \uc784 \uc785 \u3164\u3147\u3163\u3143 \uc786 \uc787 \uc788 \uc789 \uc78a \u3164\u3147\u3163\u3149 \uc78b \uc78c \uc78d \uc78e \uc78f \u3164\u3147\u3163\u314f \uc774 ",
-" row b7_d4_: \u3164\u3147\u3164\uca46 \u3164\u3147\u3164\u3131 \u3164\u3147\u3164\u3132 \u3164\u3147\u3164\u3133 \u3164\u3147\u3164\u3134 \u3164\u3147\u3164\u3135 \u3164\u3147\u3164\u3136 \u3164\u3147\u3164\u3137 \u3164\u3147\u3164\u3138 \u3164\u3147\u3164\u3139 \u3164\u3147\u3164\u313a \u3164\u3147\u3164\u313b \u3164\u3147\u3164\u313c \u3164\u3147\u3164\u313d \u3164\u3147\u3164\u313e \u3164\u3147\u3164\u313f \u3164\u3147\u3164\u3140 \u3164\u3147\u3164\u3141 \u3164\u3147\u3164\u3142 \u3164\u3147\u3164\u3143 \u3164\u3147\u3164\u3144 \u3164\u3147\u3164\u3145 \u3164\u3147\u3164\u3146 \u3164\u3147\u3164\u3147 \u3164\u3147\u3164\u3148 \u3164\u3147\u3164\u3149 \u3164\u3147\u3164\u314a \u3164\u3147\u3164\u314b \u3164\u3147\u3164\u314c \u3164\u3147\u3164\u314d \u3164\u3147\u3164\u314e \u3164\u3147\u3164\u314f \u3164\u3147\u3164\u3164 ",
-" row b8_be_: \u3164\u3148\u314e\uca46 \u3164\u3148\u314e\u3131 \u3164\u3148\u314e\u3132 \u3164\u3148\u314e\u3133 \u3164\u3148\u314e\u3134 \u3164\u3148\u314e\u3135 \u3164\u3148\u314e\u3136 \u3164\u3148\u314e\u3137 \u3164\u3148\u314e\u3138 \u3164\u3148\u314e\u3139 \u3164\u3148\u314e\u313a \u3164\u3148\u314e\u313b \u3164\u3148\u314e\u313c \u3164\u3148\u314e\u313d \u3164\u3148\u314e\u313e \u3164\u3148\u314e\u313f \u3164\u3148\u314e\u3140 \u3164\u3148\u314e\u3141 \u3164\u3148\u314e\u3142 \u3164\u3148\u314e\u3143 \u3164\u3148\u314e\u3144 \u3164\u3148\u314e\u3145 \u3164\u3148\u314e\u3146 \u3164\u3148\u314e\u3147 \u3164\u3148\u314e\u3148 \u3164\u3148\u314e\u3149 \u3164\u3148\u314e\u314a \u3164\u3148\u314e\u314b \u3164\u3148\u314e\u314c \u3164\u3148\u314e\u314d \u3164\u3148\u314e\u314e \u3164\u3148\u314e\u314f \u3164\u3148\u314e\u3164 ",
-" row b8_bf_: \u3164\u3148\u314f\uca46 \uc791 \uc792 \uc793 \uc794 \uc795 \uc796 \uc797 \u3164\u3148\u314f\u3138 \uc798 \uc799 \uc79a \uc79b \uc79c \uc79d \uc79e \uc79f \uc7a0 \uc7a1 \u3164\u3148\u314f\u3143 \uc7a2 \uc7a3 \uc7a4 \uc7a5 \uc7a6 \u3164\u3148\u314f\u3149 \uc7a7 \uc7a8 \uc7a9 \uc7aa \uc7ab \u3164\u3148\u314f\u314f \uc790 ",
-" row b8_c0_: \u3164\u3148\u3150\uca46 \uc7ad \uc7ae \uc7af \uc7b0 \uc7b1 \uc7b2 \uc7b3 \u3164\u3148\u3150\u3138 \uc7b4 \uc7b5 \uc7b6 \uc7b7 \uc7b8 \uc7b9 \uc7ba \uc7bb \uc7bc \uc7bd \u3164\u3148\u3150\u3143 \uc7be \uc7bf \uc7c0 \uc7c1 \uc7c2 \u3164\u3148\u3150\u3149 \uc7c3 \uc7c4 \uc7c5 \uc7c6 \uc7c7 \u3164\u3148\u3150\u314f \uc7ac ",
-" row b8_c1_: \u3164\u3148\u3151\uca46 \uc7c9 \uc7ca \uc7cb \uc7cc \uc7cd \uc7ce \uc7cf \u3164\u3148\u3151\u3138 \uc7d0 \uc7d1 \uc7d2 \uc7d3 \uc7d4 \uc7d5 \uc7d6 \uc7d7 \uc7d8 \uc7d9 \u3164\u3148\u3151\u3143 \uc7da \uc7db \uc7dc \uc7dd \uc7de \u3164\u3148\u3151\u3149 \uc7df \uc7e0 \uc7e1 \uc7e2 \uc7e3 \u3164\u3148\u3151\u314f \uc7c8 ",
-" row b8_c2_: \u3164\u3148\u3152\uca46 \uc7e5 \uc7e6 \uc7e7 \uc7e8 \uc7e9 \uc7ea \uc7eb \u3164\u3148\u3152\u3138 \uc7ec \uc7ed \uc7ee \uc7ef \uc7f0 \uc7f1 \uc7f2 \uc7f3 \uc7f4 \uc7f5 \u3164\u3148\u3152\u3143 \uc7f6 \uc7f7 \uc7f8 \uc7f9 \uc7fa \u3164\u3148\u3152\u3149 \uc7fb \uc7fc \uc7fd \uc7fe \uc7ff \u3164\u3148\u3152\u314f \uc7e4 ",
-" row b8_c3_: \u3164\u3148\u3153\uca46 \uc801 \uc802 \uc803 \uc804 \uc805 \uc806 \uc807 \u3164\u3148\u3153\u3138 \uc808 \uc809 \uc80a \uc80b \uc80c \uc80d \uc80e \uc80f \uc810 \uc811 \u3164\u3148\u3153\u3143 \uc812 \uc813 \uc814 \uc815 \uc816 \u3164\u3148\u3153\u3149 \uc817 \uc818 \uc819 \uc81a \uc81b \u3164\u3148\u3153\u314f \uc800 ",
-" row b8_c4_: \u3164\u3148\u3154\uca46 \uc81d \uc81e \uc81f \uc820 \uc821 \uc822 \uc823 \u3164\u3148\u3154\u3138 \uc824 \uc825 \uc826 \uc827 \uc828 \uc829 \uc82a \uc82b \uc82c \uc82d \u3164\u3148\u3154\u3143 \uc82e \uc82f \uc830 \uc831 \uc832 \u3164\u3148\u3154\u3149 \uc833 \uc834 \uc835 \uc836 \uc837 \u3164\u3148\u3154\u314f \uc81c ",
-" row b8_c5_: \u3164\u3148\u3155\uca46 \uc839 \uc83a \uc83b \uc83c \uc83d \uc83e \uc83f \u3164\u3148\u3155\u3138 \uc840 \uc841 \uc842 \uc843 \uc844 \uc845 \uc846 \uc847 \uc848 \uc849 \u3164\u3148\u3155\u3143 \uc84a \uc84b \uc84c \uc84d \uc84e \u3164\u3148\u3155\u3149 \uc84f \uc850 \uc851 \uc852 \uc853 \u3164\u3148\u3155\u314f \uc838 ",
-" row b8_c6_: \u3164\u3148\u3156\uca46 \uc855 \uc856 \uc857 \uc858 \uc859 \uc85a \uc85b \u3164\u3148\u3156\u3138 \uc85c \uc85d \uc85e \uc85f \uc860 \uc861 \uc862 \uc863 \uc864 \uc865 \u3164\u3148\u3156\u3143 \uc866 \uc867 \uc868 \uc869 \uc86a \u3164\u3148\u3156\u3149 \uc86b \uc86c \uc86d \uc86e \uc86f \u3164\u3148\u3156\u314f \uc854 ",
-" row b8_c7_: \u3164\u3148\u3157\uca46 \uc871 \uc872 \uc873 \uc874 \uc875 \uc876 \uc877 \u3164\u3148\u3157\u3138 \uc878 \uc879 \uc87a \uc87b \uc87c \uc87d \uc87e \uc87f \uc880 \uc881 \u3164\u3148\u3157\u3143 \uc882 \uc883 \uc884 \uc885 \uc886 \u3164\u3148\u3157\u3149 \uc887 \uc888 \uc889 \uc88a \uc88b \u3164\u3148\u3157\u314f \uc870 ",
-" row b8_c8_: \u3164\u3148\u3158\uca46 \uc88d \uc88e \uc88f \uc890 \uc891 \uc892 \uc893 \u3164\u3148\u3158\u3138 \uc894 \uc895 \uc896 \uc897 \uc898 \uc899 \uc89a \uc89b \uc89c \uc89d \u3164\u3148\u3158\u3143 \uc89e \uc89f \uc8a0 \uc8a1 \uc8a2 \u3164\u3148\u3158\u3149 \uc8a3 \uc8a4 \uc8a5 \uc8a6 \uc8a7 \u3164\u3148\u3158\u314f \uc88c ",
-" row b8_c9_: \u3164\u3148\u3159\uca46 \uc8a9 \uc8aa \uc8ab \uc8ac \uc8ad \uc8ae \uc8af \u3164\u3148\u3159\u3138 \uc8b0 \uc8b1 \uc8b2 \uc8b3 \uc8b4 \uc8b5 \uc8b6 \uc8b7 \uc8b8 \uc8b9 \u3164\u3148\u3159\u3143 \uc8ba \uc8bb \uc8bc \uc8bd \uc8be \u3164\u3148\u3159\u3149 \uc8bf \uc8c0 \uc8c1 \uc8c2 \uc8c3 \u3164\u3148\u3159\u314f \uc8a8 ",
-" row b8_ca_: \u3164\u3148\u315a\uca46 \uc8c5 \uc8c6 \uc8c7 \uc8c8 \uc8c9 \uc8ca \uc8cb \u3164\u3148\u315a\u3138 \uc8cc \uc8cd \uc8ce \uc8cf \uc8d0 \uc8d1 \uc8d2 \uc8d3 \uc8d4 \uc8d5 \u3164\u3148\u315a\u3143 \uc8d6 \uc8d7 \uc8d8 \uc8d9 \uc8da \u3164\u3148\u315a\u3149 \uc8db \uc8dc \uc8dd \uc8de \uc8df \u3164\u3148\u315a\u314f \uc8c4 ",
-" row b8_cb_: \u3164\u3148\u315b\uca46 \uc8e1 \uc8e2 \uc8e3 \uc8e4 \uc8e5 \uc8e6 \uc8e7 \u3164\u3148\u315b\u3138 \uc8e8 \uc8e9 \uc8ea \uc8eb \uc8ec \uc8ed \uc8ee \uc8ef \uc8f0 \uc8f1 \u3164\u3148\u315b\u3143 \uc8f2 \uc8f3 \uc8f4 \uc8f5 \uc8f6 \u3164\u3148\u315b\u3149 \uc8f7 \uc8f8 \uc8f9 \uc8fa \uc8fb \u3164\u3148\u315b\u314f \uc8e0 ",
-" row b8_cc_: \u3164\u3148\u315c\uca46 \uc8fd \uc8fe \uc8ff \uc900 \uc901 \uc902 \uc903 \u3164\u3148\u315c\u3138 \uc904 \uc905 \uc906 \uc907 \uc908 \uc909 \uc90a \uc90b \uc90c \uc90d \u3164\u3148\u315c\u3143 \uc90e \uc90f \uc910 \uc911 \uc912 \u3164\u3148\u315c\u3149 \uc913 \uc914 \uc915 \uc916 \uc917 \u3164\u3148\u315c\u314f \uc8fc ",
-" row b8_cd_: \u3164\u3148\u315d\uca46 \uc919 \uc91a \uc91b \uc91c \uc91d \uc91e \uc91f \u3164\u3148\u315d\u3138 \uc920 \uc921 \uc922 \uc923 \uc924 \uc925 \uc926 \uc927 \uc928 \uc929 \u3164\u3148\u315d\u3143 \uc92a \uc92b \uc92c \uc92d \uc92e \u3164\u3148\u315d\u3149 \uc92f \uc930 \uc931 \uc932 \uc933 \u3164\u3148\u315d\u314f \uc918 ",
-" row b8_ce_: \u3164\u3148\u315e\uca46 \uc935 \uc936 \uc937 \uc938 \uc939 \uc93a \uc93b \u3164\u3148\u315e\u3138 \uc93c \uc93d \uc93e \uc93f \uc940 \uc941 \uc942 \uc943 \uc944 \uc945 \u3164\u3148\u315e\u3143 \uc946 \uc947 \uc948 \uc949 \uc94a \u3164\u3148\u315e\u3149 \uc94b \uc94c \uc94d \uc94e \uc94f \u3164\u3148\u315e\u314f \uc934 ",
-" row b8_cf_: \u3164\u3148\u315f\uca46 \uc951 \uc952 \uc953 \uc954 \uc955 \uc956 \uc957 \u3164\u3148\u315f\u3138 \uc958 \uc959 \uc95a \uc95b \uc95c \uc95d \uc95e \uc95f \uc960 \uc961 \u3164\u3148\u315f\u3143 \uc962 \uc963 \uc964 \uc965 \uc966 \u3164\u3148\u315f\u3149 \uc967 \uc968 \uc969 \uc96a \uc96b \u3164\u3148\u315f\u314f \uc950 ",
-" row b8_d0_: \u3164\u3148\u3160\uca46 \uc96d \uc96e \uc96f \uc970 \uc971 \uc972 \uc973 \u3164\u3148\u3160\u3138 \uc974 \uc975 \uc976 \uc977 \uc978 \uc979 \uc97a \uc97b \uc97c \uc97d \u3164\u3148\u3160\u3143 \uc97e \uc97f \uc980 \uc981 \uc982 \u3164\u3148\u3160\u3149 \uc983 \uc984 \uc985 \uc986 \uc987 \u3164\u3148\u3160\u314f \uc96c ",
-" row b8_d1_: \u3164\u3148\u3161\uca46 \uc989 \uc98a \uc98b \uc98c \uc98d \uc98e \uc98f \u3164\u3148\u3161\u3138 \uc990 \uc991 \uc992 \uc993 \uc994 \uc995 \uc996 \uc997 \uc998 \uc999 \u3164\u3148\u3161\u3143 \uc99a \uc99b \uc99c \uc99d \uc99e \u3164\u3148\u3161\u3149 \uc99f \uc9a0 \uc9a1 \uc9a2 \uc9a3 \u3164\u3148\u3161\u314f \uc988 ",
-" row b8_d2_: \u3164\u3148\u3162\uca46 \uc9a5 \uc9a6 \uc9a7 \uc9a8 \uc9a9 \uc9aa \uc9ab \u3164\u3148\u3162\u3138 \uc9ac \uc9ad \uc9ae \uc9af \uc9b0 \uc9b1 \uc9b2 \uc9b3 \uc9b4 \uc9b5 \u3164\u3148\u3162\u3143 \uc9b6 \uc9b7 \uc9b8 \uc9b9 \uc9ba \u3164\u3148\u3162\u3149 \uc9bb \uc9bc \uc9bd \uc9be \uc9bf \u3164\u3148\u3162\u314f \uc9a4 ",
-" row b8_d3_: \u3164\u3148\u3163\uca46 \uc9c1 \uc9c2 \uc9c3 \uc9c4 \uc9c5 \uc9c6 \uc9c7 \u3164\u3148\u3163\u3138 \uc9c8 \uc9c9 \uc9ca \uc9cb \uc9cc \uc9cd \uc9ce \uc9cf \uc9d0 \uc9d1 \u3164\u3148\u3163\u3143 \uc9d2 \uc9d3 \uc9d4 \uc9d5 \uc9d6 \u3164\u3148\u3163\u3149 \uc9d7 \uc9d8 \uc9d9 \uc9da \uc9db \u3164\u3148\u3163\u314f \uc9c0 ",
-" row b8_d4_: \u3164\u3148\u3164\uca46 \u3164\u3148\u3164\u3131 \u3164\u3148\u3164\u3132 \u3164\u3148\u3164\u3133 \u3164\u3148\u3164\u3134 \u3164\u3148\u3164\u3135 \u3164\u3148\u3164\u3136 \u3164\u3148\u3164\u3137 \u3164\u3148\u3164\u3138 \u3164\u3148\u3164\u3139 \u3164\u3148\u3164\u313a \u3164\u3148\u3164\u313b \u3164\u3148\u3164\u313c \u3164\u3148\u3164\u313d \u3164\u3148\u3164\u313e \u3164\u3148\u3164\u313f \u3164\u3148\u3164\u3140 \u3164\u3148\u3164\u3141 \u3164\u3148\u3164\u3142 \u3164\u3148\u3164\u3143 \u3164\u3148\u3164\u3144 \u3164\u3148\u3164\u3145 \u3164\u3148\u3164\u3146 \u3164\u3148\u3164\u3147 \u3164\u3148\u3164\u3148 \u3164\u3148\u3164\u3149 \u3164\u3148\u3164\u314a \u3164\u3148\u3164\u314b \u3164\u3148\u3164\u314c \u3164\u3148\u3164\u314d \u3164\u3148\u3164\u314e \u3164\u3148\u3164\u314f \u3164\u3148\u3164\u3164 ",
-" row b9_be_: \u3164\u3149\u314e\uca46 \u3164\u3149\u314e\u3131 \u3164\u3149\u314e\u3132 \u3164\u3149\u314e\u3133 \u3164\u3149\u314e\u3134 \u3164\u3149\u314e\u3135 \u3164\u3149\u314e\u3136 \u3164\u3149\u314e\u3137 \u3164\u3149\u314e\u3138 \u3164\u3149\u314e\u3139 \u3164\u3149\u314e\u313a \u3164\u3149\u314e\u313b \u3164\u3149\u314e\u313c \u3164\u3149\u314e\u313d \u3164\u3149\u314e\u313e \u3164\u3149\u314e\u313f \u3164\u3149\u314e\u3140 \u3164\u3149\u314e\u3141 \u3164\u3149\u314e\u3142 \u3164\u3149\u314e\u3143 \u3164\u3149\u314e\u3144 \u3164\u3149\u314e\u3145 \u3164\u3149\u314e\u3146 \u3164\u3149\u314e\u3147 \u3164\u3149\u314e\u3148 \u3164\u3149\u314e\u3149 \u3164\u3149\u314e\u314a \u3164\u3149\u314e\u314b \u3164\u3149\u314e\u314c \u3164\u3149\u314e\u314d \u3164\u3149\u314e\u314e \u3164\u3149\u314e\u314f \u3164\u3149\u314e\u3164 ",
-" row b9_bf_: \u3164\u3149\u314f\uca46 \uc9dd \uc9de \uc9df \uc9e0 \uc9e1 \uc9e2 \uc9e3 \u3164\u3149\u314f\u3138 \uc9e4 \uc9e5 \uc9e6 \uc9e7 \uc9e8 \uc9e9 \uc9ea \uc9eb \uc9ec \uc9ed \u3164\u3149\u314f\u3143 \uc9ee \uc9ef \uc9f0 \uc9f1 \uc9f2 \u3164\u3149\u314f\u3149 \uc9f3 \uc9f4 \uc9f5 \uc9f6 \uc9f7 \u3164\u3149\u314f\u314f \uc9dc ",
-" row b9_c0_: \u3164\u3149\u3150\uca46 \uc9f9 \uc9fa \uc9fb \uc9fc \uc9fd \uc9fe \uc9ff \u3164\u3149\u3150\u3138 \uca00 \uca01 \uca02 \uca03 \uca04 \uca05 \uca06 \uca07 \uca08 \uca09 \u3164\u3149\u3150\u3143 \uca0a \uca0b \uca0c \uca0d \uca0e \u3164\u3149\u3150\u3149 \uca0f \uca10 \uca11 \uca12 \uca13 \u3164\u3149\u3150\u314f \uc9f8 ",
-" row b9_c1_: \u3164\u3149\u3151\uca46 \uca15 \uca16 \uca17 \uca18 \uca19 \uca1a \uca1b \u3164\u3149\u3151\u3138 \uca1c \uca1d \uca1e \uca1f \uca20 \uca21 \uca22 \uca23 \uca24 \uca25 \u3164\u3149\u3151\u3143 \uca26 \uca27 \uca28 \uca29 \uca2a \u3164\u3149\u3151\u3149 \uca2b \uca2c \uca2d \uca2e \uca2f \u3164\u3149\u3151\u314f \uca14 ",
-" row b9_c2_: \u3164\u3149\u3152\uca46 \uca31 \uca32 \uca33 \uca34 \uca35 \uca36 \uca37 \u3164\u3149\u3152\u3138 \uca38 \uca39 \uca3a \uca3b \uca3c \uca3d \uca3e \uca3f \uca40 \uca41 \u3164\u3149\u3152\u3143 \uca42 \uca43 \uca44 \uca45 \uca46 \u3164\u3149\u3152\u3149 \uca47 \uca48 \uca49 \uca4a \uca4b \u3164\u3149\u3152\u314f \uca30 ",
-" row b9_c3_: \u3164\u3149\u3153\uca46 \uca4d \uca4e \uca4f \uca50 \uca51 \uca52 \uca53 \u3164\u3149\u3153\u3138 \uca54 \uca55 \uca56 \uca57 \uca58 \uca59 \uca5a \uca5b \uca5c \uca5d \u3164\u3149\u3153\u3143 \uca5e \uca5f \uca60 \uca61 \uca62 \u3164\u3149\u3153\u3149 \uca63 \uca64 \uca65 \uca66 \uca67 \u3164\u3149\u3153\u314f \uca4c ",
-" row b9_c4_: \u3164\u3149\u3154\uca46 \uca69 \uca6a \uca6b \uca6c \uca6d \uca6e \uca6f \u3164\u3149\u3154\u3138 \uca70 \uca71 \uca72 \uca73 \uca74 \uca75 \uca76 \uca77 \uca78 \uca79 \u3164\u3149\u3154\u3143 \uca7a \uca7b \uca7c \uca7d \uca7e \u3164\u3149\u3154\u3149 \uca7f \uca80 \uca81 \uca82 \uca83 \u3164\u3149\u3154\u314f \uca68 ",
-" row b9_c5_: \u3164\u3149\u3155\uca46 \uca85 \uca86 \uca87 \uca88 \uca89 \uca8a \uca8b \u3164\u3149\u3155\u3138 \uca8c \uca8d \uca8e \uca8f \uca90 \uca91 \uca92 \uca93 \uca94 \uca95 \u3164\u3149\u3155\u3143 \uca96 \uca97 \uca98 \uca99 \uca9a \u3164\u3149\u3155\u3149 \uca9b \uca9c \uca9d \uca9e \uca9f \u3164\u3149\u3155\u314f \uca84 ",
-" row b9_c6_: \u3164\u3149\u3156\uca46 \ucaa1 \ucaa2 \ucaa3 \ucaa4 \ucaa5 \ucaa6 \ucaa7 \u3164\u3149\u3156\u3138 \ucaa8 \ucaa9 \ucaaa \ucaab \ucaac \ucaad \ucaae \ucaaf \ucab0 \ucab1 \u3164\u3149\u3156\u3143 \ucab2 \ucab3 \ucab4 \ucab5 \ucab6 \u3164\u3149\u3156\u3149 \ucab7 \ucab8 \ucab9 \ucaba \ucabb \u3164\u3149\u3156\u314f \ucaa0 ",
-" row b9_c7_: \u3164\u3149\u3157\uca46 \ucabd \ucabe \ucabf \ucac0 \ucac1 \ucac2 \ucac3 \u3164\u3149\u3157\u3138 \ucac4 \ucac5 \ucac6 \ucac7 \ucac8 \ucac9 \ucaca \ucacb \ucacc \ucacd \u3164\u3149\u3157\u3143 \ucace \ucacf \ucad0 \ucad1 \ucad2 \u3164\u3149\u3157\u3149 \ucad3 \ucad4 \ucad5 \ucad6 \ucad7 \u3164\u3149\u3157\u314f \ucabc ",
-" row b9_c8_: \u3164\u3149\u3158\uca46 \ucad9 \ucada \ucadb \ucadc \ucadd \ucade \ucadf \u3164\u3149\u3158\u3138 \ucae0 \ucae1 \ucae2 \ucae3 \ucae4 \ucae5 \ucae6 \ucae7 \ucae8 \ucae9 \u3164\u3149\u3158\u3143 \ucaea \ucaeb \ucaec \ucaed \ucaee \u3164\u3149\u3158\u3149 \ucaef \ucaf0 \ucaf1 \ucaf2 \ucaf3 \u3164\u3149\u3158\u314f \ucad8 ",
-" row b9_c9_: \u3164\u3149\u3159\uca46 \ucaf5 \ucaf6 \ucaf7 \ucaf8 \ucaf9 \ucafa \ucafb \u3164\u3149\u3159\u3138 \ucafc \ucafd \ucafe \ucaff \ucb00 \ucb01 \ucb02 \ucb03 \ucb04 \ucb05 \u3164\u3149\u3159\u3143 \ucb06 \ucb07 \ucb08 \ucb09 \ucb0a \u3164\u3149\u3159\u3149 \ucb0b \ucb0c \ucb0d \ucb0e \ucb0f \u3164\u3149\u3159\u314f \ucaf4 ",
-" row b9_ca_: \u3164\u3149\u315a\uca46 \ucb11 \ucb12 \ucb13 \ucb14 \ucb15 \ucb16 \ucb17 \u3164\u3149\u315a\u3138 \ucb18 \ucb19 \ucb1a \ucb1b \ucb1c \ucb1d \ucb1e \ucb1f \ucb20 \ucb21 \u3164\u3149\u315a\u3143 \ucb22 \ucb23 \ucb24 \ucb25 \ucb26 \u3164\u3149\u315a\u3149 \ucb27 \ucb28 \ucb29 \ucb2a \ucb2b \u3164\u3149\u315a\u314f \ucb10 ",
-" row b9_cb_: \u3164\u3149\u315b\uca46 \ucb2d \ucb2e \ucb2f \ucb30 \ucb31 \ucb32 \ucb33 \u3164\u3149\u315b\u3138 \ucb34 \ucb35 \ucb36 \ucb37 \ucb38 \ucb39 \ucb3a \ucb3b \ucb3c \ucb3d \u3164\u3149\u315b\u3143 \ucb3e \ucb3f \ucb40 \ucb41 \ucb42 \u3164\u3149\u315b\u3149 \ucb43 \ucb44 \ucb45 \ucb46 \ucb47 \u3164\u3149\u315b\u314f \ucb2c ",
-" row b9_cc_: \u3164\u3149\u315c\uca46 \ucb49 \ucb4a \ucb4b \ucb4c \ucb4d \ucb4e \ucb4f \u3164\u3149\u315c\u3138 \ucb50 \ucb51 \ucb52 \ucb53 \ucb54 \ucb55 \ucb56 \ucb57 \ucb58 \ucb59 \u3164\u3149\u315c\u3143 \ucb5a \ucb5b \ucb5c \ucb5d \ucb5e \u3164\u3149\u315c\u3149 \ucb5f \ucb60 \ucb61 \ucb62 \ucb63 \u3164\u3149\u315c\u314f \ucb48 ",
-" row b9_cd_: \u3164\u3149\u315d\uca46 \ucb65 \ucb66 \ucb67 \ucb68 \ucb69 \ucb6a \ucb6b \u3164\u3149\u315d\u3138 \ucb6c \ucb6d \ucb6e \ucb6f \ucb70 \ucb71 \ucb72 \ucb73 \ucb74 \ucb75 \u3164\u3149\u315d\u3143 \ucb76 \ucb77 \ucb78 \ucb79 \ucb7a \u3164\u3149\u315d\u3149 \ucb7b \ucb7c \ucb7d \ucb7e \ucb7f \u3164\u3149\u315d\u314f \ucb64 ",
-" row b9_ce_: \u3164\u3149\u315e\uca46 \ucb81 \ucb82 \ucb83 \ucb84 \ucb85 \ucb86 \ucb87 \u3164\u3149\u315e\u3138 \ucb88 \ucb89 \ucb8a \ucb8b \ucb8c \ucb8d \ucb8e \ucb8f \ucb90 \ucb91 \u3164\u3149\u315e\u3143 \ucb92 \ucb93 \ucb94 \ucb95 \ucb96 \u3164\u3149\u315e\u3149 \ucb97 \ucb98 \ucb99 \ucb9a \ucb9b \u3164\u3149\u315e\u314f \ucb80 ",
-" row b9_cf_: \u3164\u3149\u315f\uca46 \ucb9d \ucb9e \ucb9f \ucba0 \ucba1 \ucba2 \ucba3 \u3164\u3149\u315f\u3138 \ucba4 \ucba5 \ucba6 \ucba7 \ucba8 \ucba9 \ucbaa \ucbab \ucbac \ucbad \u3164\u3149\u315f\u3143 \ucbae \ucbaf \ucbb0 \ucbb1 \ucbb2 \u3164\u3149\u315f\u3149 \ucbb3 \ucbb4 \ucbb5 \ucbb6 \ucbb7 \u3164\u3149\u315f\u314f \ucb9c ",
-" row b9_d0_: \u3164\u3149\u3160\uca46 \ucbb9 \ucbba \ucbbb \ucbbc \ucbbd \ucbbe \ucbbf \u3164\u3149\u3160\u3138 \ucbc0 \ucbc1 \ucbc2 \ucbc3 \ucbc4 \ucbc5 \ucbc6 \ucbc7 \ucbc8 \ucbc9 \u3164\u3149\u3160\u3143 \ucbca \ucbcb \ucbcc \ucbcd \ucbce \u3164\u3149\u3160\u3149 \ucbcf \ucbd0 \ucbd1 \ucbd2 \ucbd3 \u3164\u3149\u3160\u314f \ucbb8 ",
-" row b9_d1_: \u3164\u3149\u3161\uca46 \ucbd5 \ucbd6 \ucbd7 \ucbd8 \ucbd9 \ucbda \ucbdb \u3164\u3149\u3161\u3138 \ucbdc \ucbdd \ucbde \ucbdf \ucbe0 \ucbe1 \ucbe2 \ucbe3 \ucbe4 \ucbe5 \u3164\u3149\u3161\u3143 \ucbe6 \ucbe7 \ucbe8 \ucbe9 \ucbea \u3164\u3149\u3161\u3149 \ucbeb \ucbec \ucbed \ucbee \ucbef \u3164\u3149\u3161\u314f \ucbd4 ",
-" row b9_d2_: \u3164\u3149\u3162\uca46 \ucbf1 \ucbf2 \ucbf3 \ucbf4 \ucbf5 \ucbf6 \ucbf7 \u3164\u3149\u3162\u3138 \ucbf8 \ucbf9 \ucbfa \ucbfb \ucbfc \ucbfd \ucbfe \ucbff \ucc00 \ucc01 \u3164\u3149\u3162\u3143 \ucc02 \ucc03 \ucc04 \ucc05 \ucc06 \u3164\u3149\u3162\u3149 \ucc07 \ucc08 \ucc09 \ucc0a \ucc0b \u3164\u3149\u3162\u314f \ucbf0 ",
-" row b9_d3_: \u3164\u3149\u3163\uca46 \ucc0d \ucc0e \ucc0f \ucc10 \ucc11 \ucc12 \ucc13 \u3164\u3149\u3163\u3138 \ucc14 \ucc15 \ucc16 \ucc17 \ucc18 \ucc19 \ucc1a \ucc1b \ucc1c \ucc1d \u3164\u3149\u3163\u3143 \ucc1e \ucc1f \ucc20 \ucc21 \ucc22 \u3164\u3149\u3163\u3149 \ucc23 \ucc24 \ucc25 \ucc26 \ucc27 \u3164\u3149\u3163\u314f \ucc0c ",
-" row b9_d4_: \u3164\u3149\u3164\uca46 \u3164\u3149\u3164\u3131 \u3164\u3149\u3164\u3132 \u3164\u3149\u3164\u3133 \u3164\u3149\u3164\u3134 \u3164\u3149\u3164\u3135 \u3164\u3149\u3164\u3136 \u3164\u3149\u3164\u3137 \u3164\u3149\u3164\u3138 \u3164\u3149\u3164\u3139 \u3164\u3149\u3164\u313a \u3164\u3149\u3164\u313b \u3164\u3149\u3164\u313c \u3164\u3149\u3164\u313d \u3164\u3149\u3164\u313e \u3164\u3149\u3164\u313f \u3164\u3149\u3164\u3140 \u3164\u3149\u3164\u3141 \u3164\u3149\u3164\u3142 \u3164\u3149\u3164\u3143 \u3164\u3149\u3164\u3144 \u3164\u3149\u3164\u3145 \u3164\u3149\u3164\u3146 \u3164\u3149\u3164\u3147 \u3164\u3149\u3164\u3148 \u3164\u3149\u3164\u3149 \u3164\u3149\u3164\u314a \u3164\u3149\u3164\u314b \u3164\u3149\u3164\u314c \u3164\u3149\u3164\u314d \u3164\u3149\u3164\u314e \u3164\u3149\u3164\u314f \u3164\u3149\u3164\u3164 ",
-" row ba_be_: \u3164\u314a\u314e\uca46 \u3164\u314a\u314e\u3131 \u3164\u314a\u314e\u3132 \u3164\u314a\u314e\u3133 \u3164\u314a\u314e\u3134 \u3164\u314a\u314e\u3135 \u3164\u314a\u314e\u3136 \u3164\u314a\u314e\u3137 \u3164\u314a\u314e\u3138 \u3164\u314a\u314e\u3139 \u3164\u314a\u314e\u313a \u3164\u314a\u314e\u313b \u3164\u314a\u314e\u313c \u3164\u314a\u314e\u313d \u3164\u314a\u314e\u313e \u3164\u314a\u314e\u313f \u3164\u314a\u314e\u3140 \u3164\u314a\u314e\u3141 \u3164\u314a\u314e\u3142 \u3164\u314a\u314e\u3143 \u3164\u314a\u314e\u3144 \u3164\u314a\u314e\u3145 \u3164\u314a\u314e\u3146 \u3164\u314a\u314e\u3147 \u3164\u314a\u314e\u3148 \u3164\u314a\u314e\u3149 \u3164\u314a\u314e\u314a \u3164\u314a\u314e\u314b \u3164\u314a\u314e\u314c \u3164\u314a\u314e\u314d \u3164\u314a\u314e\u314e \u3164\u314a\u314e\u314f \u3164\u314a\u314e\u3164 ",
-" row ba_bf_: \u3164\u314a\u314f\uca46 \ucc29 \ucc2a \ucc2b \ucc2c \ucc2d \ucc2e \ucc2f \u3164\u314a\u314f\u3138 \ucc30 \ucc31 \ucc32 \ucc33 \ucc34 \ucc35 \ucc36 \ucc37 \ucc38 \ucc39 \u3164\u314a\u314f\u3143 \ucc3a \ucc3b \ucc3c \ucc3d \ucc3e \u3164\u314a\u314f\u3149 \ucc3f \ucc40 \ucc41 \ucc42 \ucc43 \u3164\u314a\u314f\u314f \ucc28 ",
-" row ba_c0_: \u3164\u314a\u3150\uca46 \ucc45 \ucc46 \ucc47 \ucc48 \ucc49 \ucc4a \ucc4b \u3164\u314a\u3150\u3138 \ucc4c \ucc4d \ucc4e \ucc4f \ucc50 \ucc51 \ucc52 \ucc53 \ucc54 \ucc55 \u3164\u314a\u3150\u3143 \ucc56 \ucc57 \ucc58 \ucc59 \ucc5a \u3164\u314a\u3150\u3149 \ucc5b \ucc5c \ucc5d \ucc5e \ucc5f \u3164\u314a\u3150\u314f \ucc44 ",
-" row ba_c1_: \u3164\u314a\u3151\uca46 \ucc61 \ucc62 \ucc63 \ucc64 \ucc65 \ucc66 \ucc67 \u3164\u314a\u3151\u3138 \ucc68 \ucc69 \ucc6a \ucc6b \ucc6c \ucc6d \ucc6e \ucc6f \ucc70 \ucc71 \u3164\u314a\u3151\u3143 \ucc72 \ucc73 \ucc74 \ucc75 \ucc76 \u3164\u314a\u3151\u3149 \ucc77 \ucc78 \ucc79 \ucc7a \ucc7b \u3164\u314a\u3151\u314f \ucc60 ",
-" row ba_c2_: \u3164\u314a\u3152\uca46 \ucc7d \ucc7e \ucc7f \ucc80 \ucc81 \ucc82 \ucc83 \u3164\u314a\u3152\u3138 \ucc84 \ucc85 \ucc86 \ucc87 \ucc88 \ucc89 \ucc8a \ucc8b \ucc8c \ucc8d \u3164\u314a\u3152\u3143 \ucc8e \ucc8f \ucc90 \ucc91 \ucc92 \u3164\u314a\u3152\u3149 \ucc93 \ucc94 \ucc95 \ucc96 \ucc97 \u3164\u314a\u3152\u314f \ucc7c ",
-" row ba_c3_: \u3164\u314a\u3153\uca46 \ucc99 \ucc9a \ucc9b \ucc9c \ucc9d \ucc9e \ucc9f \u3164\u314a\u3153\u3138 \ucca0 \ucca1 \ucca2 \ucca3 \ucca4 \ucca5 \ucca6 \ucca7 \ucca8 \ucca9 \u3164\u314a\u3153\u3143 \uccaa \uccab \uccac \uccad \uccae \u3164\u314a\u3153\u3149 \uccaf \uccb0 \uccb1 \uccb2 \uccb3 \u3164\u314a\u3153\u314f \ucc98 ",
-" row ba_c4_: \u3164\u314a\u3154\uca46 \uccb5 \uccb6 \uccb7 \uccb8 \uccb9 \uccba \uccbb \u3164\u314a\u3154\u3138 \uccbc \uccbd \uccbe \uccbf \uccc0 \uccc1 \uccc2 \uccc3 \uccc4 \uccc5 \u3164\u314a\u3154\u3143 \uccc6 \uccc7 \uccc8 \uccc9 \uccca \u3164\u314a\u3154\u3149 \ucccb \ucccc \ucccd \uccce \ucccf \u3164\u314a\u3154\u314f \uccb4 ",
-" row ba_c5_: \u3164\u314a\u3155\uca46 \uccd1 \uccd2 \uccd3 \uccd4 \uccd5 \uccd6 \uccd7 \u3164\u314a\u3155\u3138 \uccd8 \uccd9 \uccda \uccdb \uccdc \uccdd \uccde \uccdf \ucce0 \ucce1 \u3164\u314a\u3155\u3143 \ucce2 \ucce3 \ucce4 \ucce5 \ucce6 \u3164\u314a\u3155\u3149 \ucce7 \ucce8 \ucce9 \uccea \ucceb \u3164\u314a\u3155\u314f \uccd0 ",
-" row ba_c6_: \u3164\u314a\u3156\uca46 \ucced \uccee \uccef \uccf0 \uccf1 \uccf2 \uccf3 \u3164\u314a\u3156\u3138 \uccf4 \uccf5 \uccf6 \uccf7 \uccf8 \uccf9 \uccfa \uccfb \uccfc \uccfd \u3164\u314a\u3156\u3143 \uccfe \uccff \ucd00 \ucd01 \ucd02 \u3164\u314a\u3156\u3149 \ucd03 \ucd04 \ucd05 \ucd06 \ucd07 \u3164\u314a\u3156\u314f \uccec ",
-" row ba_c7_: \u3164\u314a\u3157\uca46 \ucd09 \ucd0a \ucd0b \ucd0c \ucd0d \ucd0e \ucd0f \u3164\u314a\u3157\u3138 \ucd10 \ucd11 \ucd12 \ucd13 \ucd14 \ucd15 \ucd16 \ucd17 \ucd18 \ucd19 \u3164\u314a\u3157\u3143 \ucd1a \ucd1b \ucd1c \ucd1d \ucd1e \u3164\u314a\u3157\u3149 \ucd1f \ucd20 \ucd21 \ucd22 \ucd23 \u3164\u314a\u3157\u314f \ucd08 ",
-" row ba_c8_: \u3164\u314a\u3158\uca46 \ucd25 \ucd26 \ucd27 \ucd28 \ucd29 \ucd2a \ucd2b \u3164\u314a\u3158\u3138 \ucd2c \ucd2d \ucd2e \ucd2f \ucd30 \ucd31 \ucd32 \ucd33 \ucd34 \ucd35 \u3164\u314a\u3158\u3143 \ucd36 \ucd37 \ucd38 \ucd39 \ucd3a \u3164\u314a\u3158\u3149 \ucd3b \ucd3c \ucd3d \ucd3e \ucd3f \u3164\u314a\u3158\u314f \ucd24 ",
-" row ba_c9_: \u3164\u314a\u3159\uca46 \ucd41 \ucd42 \ucd43 \ucd44 \ucd45 \ucd46 \ucd47 \u3164\u314a\u3159\u3138 \ucd48 \ucd49 \ucd4a \ucd4b \ucd4c \ucd4d \ucd4e \ucd4f \ucd50 \ucd51 \u3164\u314a\u3159\u3143 \ucd52 \ucd53 \ucd54 \ucd55 \ucd56 \u3164\u314a\u3159\u3149 \ucd57 \ucd58 \ucd59 \ucd5a \ucd5b \u3164\u314a\u3159\u314f \ucd40 ",
-" row ba_ca_: \u3164\u314a\u315a\uca46 \ucd5d \ucd5e \ucd5f \ucd60 \ucd61 \ucd62 \ucd63 \u3164\u314a\u315a\u3138 \ucd64 \ucd65 \ucd66 \ucd67 \ucd68 \ucd69 \ucd6a \ucd6b \ucd6c \ucd6d \u3164\u314a\u315a\u3143 \ucd6e \ucd6f \ucd70 \ucd71 \ucd72 \u3164\u314a\u315a\u3149 \ucd73 \ucd74 \ucd75 \ucd76 \ucd77 \u3164\u314a\u315a\u314f \ucd5c ",
-" row ba_cb_: \u3164\u314a\u315b\uca46 \ucd79 \ucd7a \ucd7b \ucd7c \ucd7d \ucd7e \ucd7f \u3164\u314a\u315b\u3138 \ucd80 \ucd81 \ucd82 \ucd83 \ucd84 \ucd85 \ucd86 \ucd87 \ucd88 \ucd89 \u3164\u314a\u315b\u3143 \ucd8a \ucd8b \ucd8c \ucd8d \ucd8e \u3164\u314a\u315b\u3149 \ucd8f \ucd90 \ucd91 \ucd92 \ucd93 \u3164\u314a\u315b\u314f \ucd78 ",
-" row ba_cc_: \u3164\u314a\u315c\uca46 \ucd95 \ucd96 \ucd97 \ucd98 \ucd99 \ucd9a \ucd9b \u3164\u314a\u315c\u3138 \ucd9c \ucd9d \ucd9e \ucd9f \ucda0 \ucda1 \ucda2 \ucda3 \ucda4 \ucda5 \u3164\u314a\u315c\u3143 \ucda6 \ucda7 \ucda8 \ucda9 \ucdaa \u3164\u314a\u315c\u3149 \ucdab \ucdac \ucdad \ucdae \ucdaf \u3164\u314a\u315c\u314f \ucd94 ",
-" row ba_cd_: \u3164\u314a\u315d\uca46 \ucdb1 \ucdb2 \ucdb3 \ucdb4 \ucdb5 \ucdb6 \ucdb7 \u3164\u314a\u315d\u3138 \ucdb8 \ucdb9 \ucdba \ucdbb \ucdbc \ucdbd \ucdbe \ucdbf \ucdc0 \ucdc1 \u3164\u314a\u315d\u3143 \ucdc2 \ucdc3 \ucdc4 \ucdc5 \ucdc6 \u3164\u314a\u315d\u3149 \ucdc7 \ucdc8 \ucdc9 \ucdca \ucdcb \u3164\u314a\u315d\u314f \ucdb0 ",
-" row ba_ce_: \u3164\u314a\u315e\uca46 \ucdcd \ucdce \ucdcf \ucdd0 \ucdd1 \ucdd2 \ucdd3 \u3164\u314a\u315e\u3138 \ucdd4 \ucdd5 \ucdd6 \ucdd7 \ucdd8 \ucdd9 \ucdda \ucddb \ucddc \ucddd \u3164\u314a\u315e\u3143 \ucdde \ucddf \ucde0 \ucde1 \ucde2 \u3164\u314a\u315e\u3149 \ucde3 \ucde4 \ucde5 \ucde6 \ucde7 \u3164\u314a\u315e\u314f \ucdcc ",
-" row ba_cf_: \u3164\u314a\u315f\uca46 \ucde9 \ucdea \ucdeb \ucdec \ucded \ucdee \ucdef \u3164\u314a\u315f\u3138 \ucdf0 \ucdf1 \ucdf2 \ucdf3 \ucdf4 \ucdf5 \ucdf6 \ucdf7 \ucdf8 \ucdf9 \u3164\u314a\u315f\u3143 \ucdfa \ucdfb \ucdfc \ucdfd \ucdfe \u3164\u314a\u315f\u3149 \ucdff \uce00 \uce01 \uce02 \uce03 \u3164\u314a\u315f\u314f \ucde8 ",
-" row ba_d0_: \u3164\u314a\u3160\uca46 \uce05 \uce06 \uce07 \uce08 \uce09 \uce0a \uce0b \u3164\u314a\u3160\u3138 \uce0c \uce0d \uce0e \uce0f \uce10 \uce11 \uce12 \uce13 \uce14 \uce15 \u3164\u314a\u3160\u3143 \uce16 \uce17 \uce18 \uce19 \uce1a \u3164\u314a\u3160\u3149 \uce1b \uce1c \uce1d \uce1e \uce1f \u3164\u314a\u3160\u314f \uce04 ",
-" row ba_d1_: \u3164\u314a\u3161\uca46 \uce21 \uce22 \uce23 \uce24 \uce25 \uce26 \uce27 \u3164\u314a\u3161\u3138 \uce28 \uce29 \uce2a \uce2b \uce2c \uce2d \uce2e \uce2f \uce30 \uce31 \u3164\u314a\u3161\u3143 \uce32 \uce33 \uce34 \uce35 \uce36 \u3164\u314a\u3161\u3149 \uce37 \uce38 \uce39 \uce3a \uce3b \u3164\u314a\u3161\u314f \uce20 ",
-" row ba_d2_: \u3164\u314a\u3162\uca46 \uce3d \uce3e \uce3f \uce40 \uce41 \uce42 \uce43 \u3164\u314a\u3162\u3138 \uce44 \uce45 \uce46 \uce47 \uce48 \uce49 \uce4a \uce4b \uce4c \uce4d \u3164\u314a\u3162\u3143 \uce4e \uce4f \uce50 \uce51 \uce52 \u3164\u314a\u3162\u3149 \uce53 \uce54 \uce55 \uce56 \uce57 \u3164\u314a\u3162\u314f \uce3c ",
-" row ba_d3_: \u3164\u314a\u3163\uca46 \uce59 \uce5a \uce5b \uce5c \uce5d \uce5e \uce5f \u3164\u314a\u3163\u3138 \uce60 \uce61 \uce62 \uce63 \uce64 \uce65 \uce66 \uce67 \uce68 \uce69 \u3164\u314a\u3163\u3143 \uce6a \uce6b \uce6c \uce6d \uce6e \u3164\u314a\u3163\u3149 \uce6f \uce70 \uce71 \uce72 \uce73 \u3164\u314a\u3163\u314f \uce58 ",
-" row ba_d4_: \u3164\u314a\u3164\uca46 \u3164\u314a\u3164\u3131 \u3164\u314a\u3164\u3132 \u3164\u314a\u3164\u3133 \u3164\u314a\u3164\u3134 \u3164\u314a\u3164\u3135 \u3164\u314a\u3164\u3136 \u3164\u314a\u3164\u3137 \u3164\u314a\u3164\u3138 \u3164\u314a\u3164\u3139 \u3164\u314a\u3164\u313a \u3164\u314a\u3164\u313b \u3164\u314a\u3164\u313c \u3164\u314a\u3164\u313d \u3164\u314a\u3164\u313e \u3164\u314a\u3164\u313f \u3164\u314a\u3164\u3140 \u3164\u314a\u3164\u3141 \u3164\u314a\u3164\u3142 \u3164\u314a\u3164\u3143 \u3164\u314a\u3164\u3144 \u3164\u314a\u3164\u3145 \u3164\u314a\u3164\u3146 \u3164\u314a\u3164\u3147 \u3164\u314a\u3164\u3148 \u3164\u314a\u3164\u3149 \u3164\u314a\u3164\u314a \u3164\u314a\u3164\u314b \u3164\u314a\u3164\u314c \u3164\u314a\u3164\u314d \u3164\u314a\u3164\u314e \u3164\u314a\u3164\u314f \u3164\u314a\u3164\u3164 ",
-" row bb_be_: \u3164\u314b\u314e\uca46 \u3164\u314b\u314e\u3131 \u3164\u314b\u314e\u3132 \u3164\u314b\u314e\u3133 \u3164\u314b\u314e\u3134 \u3164\u314b\u314e\u3135 \u3164\u314b\u314e\u3136 \u3164\u314b\u314e\u3137 \u3164\u314b\u314e\u3138 \u3164\u314b\u314e\u3139 \u3164\u314b\u314e\u313a \u3164\u314b\u314e\u313b \u3164\u314b\u314e\u313c \u3164\u314b\u314e\u313d \u3164\u314b\u314e\u313e \u3164\u314b\u314e\u313f \u3164\u314b\u314e\u3140 \u3164\u314b\u314e\u3141 \u3164\u314b\u314e\u3142 \u3164\u314b\u314e\u3143 \u3164\u314b\u314e\u3144 \u3164\u314b\u314e\u3145 \u3164\u314b\u314e\u3146 \u3164\u314b\u314e\u3147 \u3164\u314b\u314e\u3148 \u3164\u314b\u314e\u3149 \u3164\u314b\u314e\u314a \u3164\u314b\u314e\u314b \u3164\u314b\u314e\u314c \u3164\u314b\u314e\u314d \u3164\u314b\u314e\u314e \u3164\u314b\u314e\u314f \u3164\u314b\u314e\u3164 ",
-" row bb_bf_: \u3164\u314b\u314f\uca46 \uce75 \uce76 \uce77 \uce78 \uce79 \uce7a \uce7b \u3164\u314b\u314f\u3138 \uce7c \uce7d \uce7e \uce7f \uce80 \uce81 \uce82 \uce83 \uce84 \uce85 \u3164\u314b\u314f\u3143 \uce86 \uce87 \uce88 \uce89 \uce8a \u3164\u314b\u314f\u3149 \uce8b \uce8c \uce8d \uce8e \uce8f \u3164\u314b\u314f\u314f \uce74 ",
-" row bb_c0_: \u3164\u314b\u3150\uca46 \uce91 \uce92 \uce93 \uce94 \uce95 \uce96 \uce97 \u3164\u314b\u3150\u3138 \uce98 \uce99 \uce9a \uce9b \uce9c \uce9d \uce9e \uce9f \ucea0 \ucea1 \u3164\u314b\u3150\u3143 \ucea2 \ucea3 \ucea4 \ucea5 \ucea6 \u3164\u314b\u3150\u3149 \ucea7 \ucea8 \ucea9 \uceaa \uceab \u3164\u314b\u3150\u314f \uce90 ",
-" row bb_c1_: \u3164\u314b\u3151\uca46 \ucead \uceae \uceaf \uceb0 \uceb1 \uceb2 \uceb3 \u3164\u314b\u3151\u3138 \uceb4 \uceb5 \uceb6 \uceb7 \uceb8 \uceb9 \uceba \ucebb \ucebc \ucebd \u3164\u314b\u3151\u3143 \ucebe \ucebf \ucec0 \ucec1 \ucec2 \u3164\u314b\u3151\u3149 \ucec3 \ucec4 \ucec5 \ucec6 \ucec7 \u3164\u314b\u3151\u314f \uceac ",
-" row bb_c2_: \u3164\u314b\u3152\uca46 \ucec9 \uceca \ucecb \ucecc \ucecd \ucece \ucecf \u3164\u314b\u3152\u3138 \uced0 \uced1 \uced2 \uced3 \uced4 \uced5 \uced6 \uced7 \uced8 \uced9 \u3164\u314b\u3152\u3143 \uceda \ucedb \ucedc \ucedd \ucede \u3164\u314b\u3152\u3149 \ucedf \ucee0 \ucee1 \ucee2 \ucee3 \u3164\u314b\u3152\u314f \ucec8 ",
-" row bb_c3_: \u3164\u314b\u3153\uca46 \ucee5 \ucee6 \ucee7 \ucee8 \ucee9 \uceea \uceeb \u3164\u314b\u3153\u3138 \uceec \uceed \uceee \uceef \ucef0 \ucef1 \ucef2 \ucef3 \ucef4 \ucef5 \u3164\u314b\u3153\u3143 \ucef6 \ucef7 \ucef8 \ucef9 \ucefa \u3164\u314b\u3153\u3149 \ucefb \ucefc \ucefd \ucefe \uceff \u3164\u314b\u3153\u314f \ucee4 ",
-" row bb_c4_: \u3164\u314b\u3154\uca46 \ucf01 \ucf02 \ucf03 \ucf04 \ucf05 \ucf06 \ucf07 \u3164\u314b\u3154\u3138 \ucf08 \ucf09 \ucf0a \ucf0b \ucf0c \ucf0d \ucf0e \ucf0f \ucf10 \ucf11 \u3164\u314b\u3154\u3143 \ucf12 \ucf13 \ucf14 \ucf15 \ucf16 \u3164\u314b\u3154\u3149 \ucf17 \ucf18 \ucf19 \ucf1a \ucf1b \u3164\u314b\u3154\u314f \ucf00 ",
-" row bb_c5_: \u3164\u314b\u3155\uca46 \ucf1d \ucf1e \ucf1f \ucf20 \ucf21 \ucf22 \ucf23 \u3164\u314b\u3155\u3138 \ucf24 \ucf25 \ucf26 \ucf27 \ucf28 \ucf29 \ucf2a \ucf2b \ucf2c \ucf2d \u3164\u314b\u3155\u3143 \ucf2e \ucf2f \ucf30 \ucf31 \ucf32 \u3164\u314b\u3155\u3149 \ucf33 \ucf34 \ucf35 \ucf36 \ucf37 \u3164\u314b\u3155\u314f \ucf1c ",
-" row bb_c6_: \u3164\u314b\u3156\uca46 \ucf39 \ucf3a \ucf3b \ucf3c \ucf3d \ucf3e \ucf3f \u3164\u314b\u3156\u3138 \ucf40 \ucf41 \ucf42 \ucf43 \ucf44 \ucf45 \ucf46 \ucf47 \ucf48 \ucf49 \u3164\u314b\u3156\u3143 \ucf4a \ucf4b \ucf4c \ucf4d \ucf4e \u3164\u314b\u3156\u3149 \ucf4f \ucf50 \ucf51 \ucf52 \ucf53 \u3164\u314b\u3156\u314f \ucf38 ",
-" row bb_c7_: \u3164\u314b\u3157\uca46 \ucf55 \ucf56 \ucf57 \ucf58 \ucf59 \ucf5a \ucf5b \u3164\u314b\u3157\u3138 \ucf5c \ucf5d \ucf5e \ucf5f \ucf60 \ucf61 \ucf62 \ucf63 \ucf64 \ucf65 \u3164\u314b\u3157\u3143 \ucf66 \ucf67 \ucf68 \ucf69 \ucf6a \u3164\u314b\u3157\u3149 \ucf6b \ucf6c \ucf6d \ucf6e \ucf6f \u3164\u314b\u3157\u314f \ucf54 ",
-" row bb_c8_: \u3164\u314b\u3158\uca46 \ucf71 \ucf72 \ucf73 \ucf74 \ucf75 \ucf76 \ucf77 \u3164\u314b\u3158\u3138 \ucf78 \ucf79 \ucf7a \ucf7b \ucf7c \ucf7d \ucf7e \ucf7f \ucf80 \ucf81 \u3164\u314b\u3158\u3143 \ucf82 \ucf83 \ucf84 \ucf85 \ucf86 \u3164\u314b\u3158\u3149 \ucf87 \ucf88 \ucf89 \ucf8a \ucf8b \u3164\u314b\u3158\u314f \ucf70 ",
-" row bb_c9_: \u3164\u314b\u3159\uca46 \ucf8d \ucf8e \ucf8f \ucf90 \ucf91 \ucf92 \ucf93 \u3164\u314b\u3159\u3138 \ucf94 \ucf95 \ucf96 \ucf97 \ucf98 \ucf99 \ucf9a \ucf9b \ucf9c \ucf9d \u3164\u314b\u3159\u3143 \ucf9e \ucf9f \ucfa0 \ucfa1 \ucfa2 \u3164\u314b\u3159\u3149 \ucfa3 \ucfa4 \ucfa5 \ucfa6 \ucfa7 \u3164\u314b\u3159\u314f \ucf8c ",
-" row bb_ca_: \u3164\u314b\u315a\uca46 \ucfa9 \ucfaa \ucfab \ucfac \ucfad \ucfae \ucfaf \u3164\u314b\u315a\u3138 \ucfb0 \ucfb1 \ucfb2 \ucfb3 \ucfb4 \ucfb5 \ucfb6 \ucfb7 \ucfb8 \ucfb9 \u3164\u314b\u315a\u3143 \ucfba \ucfbb \ucfbc \ucfbd \ucfbe \u3164\u314b\u315a\u3149 \ucfbf \ucfc0 \ucfc1 \ucfc2 \ucfc3 \u3164\u314b\u315a\u314f \ucfa8 ",
-" row bb_cb_: \u3164\u314b\u315b\uca46 \ucfc5 \ucfc6 \ucfc7 \ucfc8 \ucfc9 \ucfca \ucfcb \u3164\u314b\u315b\u3138 \ucfcc \ucfcd \ucfce \ucfcf \ucfd0 \ucfd1 \ucfd2 \ucfd3 \ucfd4 \ucfd5 \u3164\u314b\u315b\u3143 \ucfd6 \ucfd7 \ucfd8 \ucfd9 \ucfda \u3164\u314b\u315b\u3149 \ucfdb \ucfdc \ucfdd \ucfde \ucfdf \u3164\u314b\u315b\u314f \ucfc4 ",
-" row bb_cc_: \u3164\u314b\u315c\uca46 \ucfe1 \ucfe2 \ucfe3 \ucfe4 \ucfe5 \ucfe6 \ucfe7 \u3164\u314b\u315c\u3138 \ucfe8 \ucfe9 \ucfea \ucfeb \ucfec \ucfed \ucfee \ucfef \ucff0 \ucff1 \u3164\u314b\u315c\u3143 \ucff2 \ucff3 \ucff4 \ucff5 \ucff6 \u3164\u314b\u315c\u3149 \ucff7 \ucff8 \ucff9 \ucffa \ucffb \u3164\u314b\u315c\u314f \ucfe0 ",
-" row bb_cd_: \u3164\u314b\u315d\uca46 \ucffd \ucffe \ucfff \ud000 \ud001 \ud002 \ud003 \u3164\u314b\u315d\u3138 \ud004 \ud005 \ud006 \ud007 \ud008 \ud009 \ud00a \ud00b \ud00c \ud00d \u3164\u314b\u315d\u3143 \ud00e \ud00f \ud010 \ud011 \ud012 \u3164\u314b\u315d\u3149 \ud013 \ud014 \ud015 \ud016 \ud017 \u3164\u314b\u315d\u314f \ucffc ",
-" row bb_ce_: \u3164\u314b\u315e\uca46 \ud019 \ud01a \ud01b \ud01c \ud01d \ud01e \ud01f \u3164\u314b\u315e\u3138 \ud020 \ud021 \ud022 \ud023 \ud024 \ud025 \ud026 \ud027 \ud028 \ud029 \u3164\u314b\u315e\u3143 \ud02a \ud02b \ud02c \ud02d \ud02e \u3164\u314b\u315e\u3149 \ud02f \ud030 \ud031 \ud032 \ud033 \u3164\u314b\u315e\u314f \ud018 ",
-" row bb_cf_: \u3164\u314b\u315f\uca46 \ud035 \ud036 \ud037 \ud038 \ud039 \ud03a \ud03b \u3164\u314b\u315f\u3138 \ud03c \ud03d \ud03e \ud03f \ud040 \ud041 \ud042 \ud043 \ud044 \ud045 \u3164\u314b\u315f\u3143 \ud046 \ud047 \ud048 \ud049 \ud04a \u3164\u314b\u315f\u3149 \ud04b \ud04c \ud04d \ud04e \ud04f \u3164\u314b\u315f\u314f \ud034 ",
-" row bb_d0_: \u3164\u314b\u3160\uca46 \ud051 \ud052 \ud053 \ud054 \ud055 \ud056 \ud057 \u3164\u314b\u3160\u3138 \ud058 \ud059 \ud05a \ud05b \ud05c \ud05d \ud05e \ud05f \ud060 \ud061 \u3164\u314b\u3160\u3143 \ud062 \ud063 \ud064 \ud065 \ud066 \u3164\u314b\u3160\u3149 \ud067 \ud068 \ud069 \ud06a \ud06b \u3164\u314b\u3160\u314f \ud050 ",
-" row bb_d1_: \u3164\u314b\u3161\uca46 \ud06d \ud06e \ud06f \ud070 \ud071 \ud072 \ud073 \u3164\u314b\u3161\u3138 \ud074 \ud075 \ud076 \ud077 \ud078 \ud079 \ud07a \ud07b \ud07c \ud07d \u3164\u314b\u3161\u3143 \ud07e \ud07f \ud080 \ud081 \ud082 \u3164\u314b\u3161\u3149 \ud083 \ud084 \ud085 \ud086 \ud087 \u3164\u314b\u3161\u314f \ud06c ",
-" row bb_d2_: \u3164\u314b\u3162\uca46 \ud089 \ud08a \ud08b \ud08c \ud08d \ud08e \ud08f \u3164\u314b\u3162\u3138 \ud090 \ud091 \ud092 \ud093 \ud094 \ud095 \ud096 \ud097 \ud098 \ud099 \u3164\u314b\u3162\u3143 \ud09a \ud09b \ud09c \ud09d \ud09e \u3164\u314b\u3162\u3149 \ud09f \ud0a0 \ud0a1 \ud0a2 \ud0a3 \u3164\u314b\u3162\u314f \ud088 ",
-" row bb_d3_: \u3164\u314b\u3163\uca46 \ud0a5 \ud0a6 \ud0a7 \ud0a8 \ud0a9 \ud0aa \ud0ab \u3164\u314b\u3163\u3138 \ud0ac \ud0ad \ud0ae \ud0af \ud0b0 \ud0b1 \ud0b2 \ud0b3 \ud0b4 \ud0b5 \u3164\u314b\u3163\u3143 \ud0b6 \ud0b7 \ud0b8 \ud0b9 \ud0ba \u3164\u314b\u3163\u3149 \ud0bb \ud0bc \ud0bd \ud0be \ud0bf \u3164\u314b\u3163\u314f \ud0a4 ",
-" row bb_d4_: \u3164\u314b\u3164\uca46 \u3164\u314b\u3164\u3131 \u3164\u314b\u3164\u3132 \u3164\u314b\u3164\u3133 \u3164\u314b\u3164\u3134 \u3164\u314b\u3164\u3135 \u3164\u314b\u3164\u3136 \u3164\u314b\u3164\u3137 \u3164\u314b\u3164\u3138 \u3164\u314b\u3164\u3139 \u3164\u314b\u3164\u313a \u3164\u314b\u3164\u313b \u3164\u314b\u3164\u313c \u3164\u314b\u3164\u313d \u3164\u314b\u3164\u313e \u3164\u314b\u3164\u313f \u3164\u314b\u3164\u3140 \u3164\u314b\u3164\u3141 \u3164\u314b\u3164\u3142 \u3164\u314b\u3164\u3143 \u3164\u314b\u3164\u3144 \u3164\u314b\u3164\u3145 \u3164\u314b\u3164\u3146 \u3164\u314b\u3164\u3147 \u3164\u314b\u3164\u3148 \u3164\u314b\u3164\u3149 \u3164\u314b\u3164\u314a \u3164\u314b\u3164\u314b \u3164\u314b\u3164\u314c \u3164\u314b\u3164\u314d \u3164\u314b\u3164\u314e \u3164\u314b\u3164\u314f \u3164\u314b\u3164\u3164 ",
-" row bc_be_: \u3164\u314c\u314e\uca46 \u3164\u314c\u314e\u3131 \u3164\u314c\u314e\u3132 \u3164\u314c\u314e\u3133 \u3164\u314c\u314e\u3134 \u3164\u314c\u314e\u3135 \u3164\u314c\u314e\u3136 \u3164\u314c\u314e\u3137 \u3164\u314c\u314e\u3138 \u3164\u314c\u314e\u3139 \u3164\u314c\u314e\u313a \u3164\u314c\u314e\u313b \u3164\u314c\u314e\u313c \u3164\u314c\u314e\u313d \u3164\u314c\u314e\u313e \u3164\u314c\u314e\u313f \u3164\u314c\u314e\u3140 \u3164\u314c\u314e\u3141 \u3164\u314c\u314e\u3142 \u3164\u314c\u314e\u3143 \u3164\u314c\u314e\u3144 \u3164\u314c\u314e\u3145 \u3164\u314c\u314e\u3146 \u3164\u314c\u314e\u3147 \u3164\u314c\u314e\u3148 \u3164\u314c\u314e\u3149 \u3164\u314c\u314e\u314a \u3164\u314c\u314e\u314b \u3164\u314c\u314e\u314c \u3164\u314c\u314e\u314d \u3164\u314c\u314e\u314e \u3164\u314c\u314e\u314f \u3164\u314c\u314e\u3164 ",
-" row bc_bf_: \u3164\u314c\u314f\uca46 \ud0c1 \ud0c2 \ud0c3 \ud0c4 \ud0c5 \ud0c6 \ud0c7 \u3164\u314c\u314f\u3138 \ud0c8 \ud0c9 \ud0ca \ud0cb \ud0cc \ud0cd \ud0ce \ud0cf \ud0d0 \ud0d1 \u3164\u314c\u314f\u3143 \ud0d2 \ud0d3 \ud0d4 \ud0d5 \ud0d6 \u3164\u314c\u314f\u3149 \ud0d7 \ud0d8 \ud0d9 \ud0da \ud0db \u3164\u314c\u314f\u314f \ud0c0 ",
-" row bc_c0_: \u3164\u314c\u3150\uca46 \ud0dd \ud0de \ud0df \ud0e0 \ud0e1 \ud0e2 \ud0e3 \u3164\u314c\u3150\u3138 \ud0e4 \ud0e5 \ud0e6 \ud0e7 \ud0e8 \ud0e9 \ud0ea \ud0eb \ud0ec \ud0ed \u3164\u314c\u3150\u3143 \ud0ee \ud0ef \ud0f0 \ud0f1 \ud0f2 \u3164\u314c\u3150\u3149 \ud0f3 \ud0f4 \ud0f5 \ud0f6 \ud0f7 \u3164\u314c\u3150\u314f \ud0dc ",
-" row bc_c1_: \u3164\u314c\u3151\uca46 \ud0f9 \ud0fa \ud0fb \ud0fc \ud0fd \ud0fe \ud0ff \u3164\u314c\u3151\u3138 \ud100 \ud101 \ud102 \ud103 \ud104 \ud105 \ud106 \ud107 \ud108 \ud109 \u3164\u314c\u3151\u3143 \ud10a \ud10b \ud10c \ud10d \ud10e \u3164\u314c\u3151\u3149 \ud10f \ud110 \ud111 \ud112 \ud113 \u3164\u314c\u3151\u314f \ud0f8 ",
-" row bc_c2_: \u3164\u314c\u3152\uca46 \ud115 \ud116 \ud117 \ud118 \ud119 \ud11a \ud11b \u3164\u314c\u3152\u3138 \ud11c \ud11d \ud11e \ud11f \ud120 \ud121 \ud122 \ud123 \ud124 \ud125 \u3164\u314c\u3152\u3143 \ud126 \ud127 \ud128 \ud129 \ud12a \u3164\u314c\u3152\u3149 \ud12b \ud12c \ud12d \ud12e \ud12f \u3164\u314c\u3152\u314f \ud114 ",
-" row bc_c3_: \u3164\u314c\u3153\uca46 \ud131 \ud132 \ud133 \ud134 \ud135 \ud136 \ud137 \u3164\u314c\u3153\u3138 \ud138 \ud139 \ud13a \ud13b \ud13c \ud13d \ud13e \ud13f \ud140 \ud141 \u3164\u314c\u3153\u3143 \ud142 \ud143 \ud144 \ud145 \ud146 \u3164\u314c\u3153\u3149 \ud147 \ud148 \ud149 \ud14a \ud14b \u3164\u314c\u3153\u314f \ud130 ",
-" row bc_c4_: \u3164\u314c\u3154\uca46 \ud14d \ud14e \ud14f \ud150 \ud151 \ud152 \ud153 \u3164\u314c\u3154\u3138 \ud154 \ud155 \ud156 \ud157 \ud158 \ud159 \ud15a \ud15b \ud15c \ud15d \u3164\u314c\u3154\u3143 \ud15e \ud15f \ud160 \ud161 \ud162 \u3164\u314c\u3154\u3149 \ud163 \ud164 \ud165 \ud166 \ud167 \u3164\u314c\u3154\u314f \ud14c ",
-" row bc_c5_: \u3164\u314c\u3155\uca46 \ud169 \ud16a \ud16b \ud16c \ud16d \ud16e \ud16f \u3164\u314c\u3155\u3138 \ud170 \ud171 \ud172 \ud173 \ud174 \ud175 \ud176 \ud177 \ud178 \ud179 \u3164\u314c\u3155\u3143 \ud17a \ud17b \ud17c \ud17d \ud17e \u3164\u314c\u3155\u3149 \ud17f \ud180 \ud181 \ud182 \ud183 \u3164\u314c\u3155\u314f \ud168 ",
-" row bc_c6_: \u3164\u314c\u3156\uca46 \ud185 \ud186 \ud187 \ud188 \ud189 \ud18a \ud18b \u3164\u314c\u3156\u3138 \ud18c \ud18d \ud18e \ud18f \ud190 \ud191 \ud192 \ud193 \ud194 \ud195 \u3164\u314c\u3156\u3143 \ud196 \ud197 \ud198 \ud199 \ud19a \u3164\u314c\u3156\u3149 \ud19b \ud19c \ud19d \ud19e \ud19f \u3164\u314c\u3156\u314f \ud184 ",
-" row bc_c7_: \u3164\u314c\u3157\uca46 \ud1a1 \ud1a2 \ud1a3 \ud1a4 \ud1a5 \ud1a6 \ud1a7 \u3164\u314c\u3157\u3138 \ud1a8 \ud1a9 \ud1aa \ud1ab \ud1ac \ud1ad \ud1ae \ud1af \ud1b0 \ud1b1 \u3164\u314c\u3157\u3143 \ud1b2 \ud1b3 \ud1b4 \ud1b5 \ud1b6 \u3164\u314c\u3157\u3149 \ud1b7 \ud1b8 \ud1b9 \ud1ba \ud1bb \u3164\u314c\u3157\u314f \ud1a0 ",
-" row bc_c8_: \u3164\u314c\u3158\uca46 \ud1bd \ud1be \ud1bf \ud1c0 \ud1c1 \ud1c2 \ud1c3 \u3164\u314c\u3158\u3138 \ud1c4 \ud1c5 \ud1c6 \ud1c7 \ud1c8 \ud1c9 \ud1ca \ud1cb \ud1cc \ud1cd \u3164\u314c\u3158\u3143 \ud1ce \ud1cf \ud1d0 \ud1d1 \ud1d2 \u3164\u314c\u3158\u3149 \ud1d3 \ud1d4 \ud1d5 \ud1d6 \ud1d7 \u3164\u314c\u3158\u314f \ud1bc ",
-" row bc_c9_: \u3164\u314c\u3159\uca46 \ud1d9 \ud1da \ud1db \ud1dc \ud1dd \ud1de \ud1df \u3164\u314c\u3159\u3138 \ud1e0 \ud1e1 \ud1e2 \ud1e3 \ud1e4 \ud1e5 \ud1e6 \ud1e7 \ud1e8 \ud1e9 \u3164\u314c\u3159\u3143 \ud1ea \ud1eb \ud1ec \ud1ed \ud1ee \u3164\u314c\u3159\u3149 \ud1ef \ud1f0 \ud1f1 \ud1f2 \ud1f3 \u3164\u314c\u3159\u314f \ud1d8 ",
-" row bc_ca_: \u3164\u314c\u315a\uca46 \ud1f5 \ud1f6 \ud1f7 \ud1f8 \ud1f9 \ud1fa \ud1fb \u3164\u314c\u315a\u3138 \ud1fc \ud1fd \ud1fe \ud1ff \ud200 \ud201 \ud202 \ud203 \ud204 \ud205 \u3164\u314c\u315a\u3143 \ud206 \ud207 \ud208 \ud209 \ud20a \u3164\u314c\u315a\u3149 \ud20b \ud20c \ud20d \ud20e \ud20f \u3164\u314c\u315a\u314f \ud1f4 ",
-" row bc_cb_: \u3164\u314c\u315b\uca46 \ud211 \ud212 \ud213 \ud214 \ud215 \ud216 \ud217 \u3164\u314c\u315b\u3138 \ud218 \ud219 \ud21a \ud21b \ud21c \ud21d \ud21e \ud21f \ud220 \ud221 \u3164\u314c\u315b\u3143 \ud222 \ud223 \ud224 \ud225 \ud226 \u3164\u314c\u315b\u3149 \ud227 \ud228 \ud229 \ud22a \ud22b \u3164\u314c\u315b\u314f \ud210 ",
-" row bc_cc_: \u3164\u314c\u315c\uca46 \ud22d \ud22e \ud22f \ud230 \ud231 \ud232 \ud233 \u3164\u314c\u315c\u3138 \ud234 \ud235 \ud236 \ud237 \ud238 \ud239 \ud23a \ud23b \ud23c \ud23d \u3164\u314c\u315c\u3143 \ud23e \ud23f \ud240 \ud241 \ud242 \u3164\u314c\u315c\u3149 \ud243 \ud244 \ud245 \ud246 \ud247 \u3164\u314c\u315c\u314f \ud22c ",
-" row bc_cd_: \u3164\u314c\u315d\uca46 \ud249 \ud24a \ud24b \ud24c \ud24d \ud24e \ud24f \u3164\u314c\u315d\u3138 \ud250 \ud251 \ud252 \ud253 \ud254 \ud255 \ud256 \ud257 \ud258 \ud259 \u3164\u314c\u315d\u3143 \ud25a \ud25b \ud25c \ud25d \ud25e \u3164\u314c\u315d\u3149 \ud25f \ud260 \ud261 \ud262 \ud263 \u3164\u314c\u315d\u314f \ud248 ",
-" row bc_ce_: \u3164\u314c\u315e\uca46 \ud265 \ud266 \ud267 \ud268 \ud269 \ud26a \ud26b \u3164\u314c\u315e\u3138 \ud26c \ud26d \ud26e \ud26f \ud270 \ud271 \ud272 \ud273 \ud274 \ud275 \u3164\u314c\u315e\u3143 \ud276 \ud277 \ud278 \ud279 \ud27a \u3164\u314c\u315e\u3149 \ud27b \ud27c \ud27d \ud27e \ud27f \u3164\u314c\u315e\u314f \ud264 ",
-" row bc_cf_: \u3164\u314c\u315f\uca46 \ud281 \ud282 \ud283 \ud284 \ud285 \ud286 \ud287 \u3164\u314c\u315f\u3138 \ud288 \ud289 \ud28a \ud28b \ud28c \ud28d \ud28e \ud28f \ud290 \ud291 \u3164\u314c\u315f\u3143 \ud292 \ud293 \ud294 \ud295 \ud296 \u3164\u314c\u315f\u3149 \ud297 \ud298 \ud299 \ud29a \ud29b \u3164\u314c\u315f\u314f \ud280 ",
-" row bc_d0_: \u3164\u314c\u3160\uca46 \ud29d \ud29e \ud29f \ud2a0 \ud2a1 \ud2a2 \ud2a3 \u3164\u314c\u3160\u3138 \ud2a4 \ud2a5 \ud2a6 \ud2a7 \ud2a8 \ud2a9 \ud2aa \ud2ab \ud2ac \ud2ad \u3164\u314c\u3160\u3143 \ud2ae \ud2af \ud2b0 \ud2b1 \ud2b2 \u3164\u314c\u3160\u3149 \ud2b3 \ud2b4 \ud2b5 \ud2b6 \ud2b7 \u3164\u314c\u3160\u314f \ud29c ",
-" row bc_d1_: \u3164\u314c\u3161\uca46 \ud2b9 \ud2ba \ud2bb \ud2bc \ud2bd \ud2be \ud2bf \u3164\u314c\u3161\u3138 \ud2c0 \ud2c1 \ud2c2 \ud2c3 \ud2c4 \ud2c5 \ud2c6 \ud2c7 \ud2c8 \ud2c9 \u3164\u314c\u3161\u3143 \ud2ca \ud2cb \ud2cc \ud2cd \ud2ce \u3164\u314c\u3161\u3149 \ud2cf \ud2d0 \ud2d1 \ud2d2 \ud2d3 \u3164\u314c\u3161\u314f \ud2b8 ",
-" row bc_d2_: \u3164\u314c\u3162\uca46 \ud2d5 \ud2d6 \ud2d7 \ud2d8 \ud2d9 \ud2da \ud2db \u3164\u314c\u3162\u3138 \ud2dc \ud2dd \ud2de \ud2df \ud2e0 \ud2e1 \ud2e2 \ud2e3 \ud2e4 \ud2e5 \u3164\u314c\u3162\u3143 \ud2e6 \ud2e7 \ud2e8 \ud2e9 \ud2ea \u3164\u314c\u3162\u3149 \ud2eb \ud2ec \ud2ed \ud2ee \ud2ef \u3164\u314c\u3162\u314f \ud2d4 ",
-" row bc_d3_: \u3164\u314c\u3163\uca46 \ud2f1 \ud2f2 \ud2f3 \ud2f4 \ud2f5 \ud2f6 \ud2f7 \u3164\u314c\u3163\u3138 \ud2f8 \ud2f9 \ud2fa \ud2fb \ud2fc \ud2fd \ud2fe \ud2ff \ud300 \ud301 \u3164\u314c\u3163\u3143 \ud302 \ud303 \ud304 \ud305 \ud306 \u3164\u314c\u3163\u3149 \ud307 \ud308 \ud309 \ud30a \ud30b \u3164\u314c\u3163\u314f \ud2f0 ",
-" row bc_d4_: \u3164\u314c\u3164\uca46 \u3164\u314c\u3164\u3131 \u3164\u314c\u3164\u3132 \u3164\u314c\u3164\u3133 \u3164\u314c\u3164\u3134 \u3164\u314c\u3164\u3135 \u3164\u314c\u3164\u3136 \u3164\u314c\u3164\u3137 \u3164\u314c\u3164\u3138 \u3164\u314c\u3164\u3139 \u3164\u314c\u3164\u313a \u3164\u314c\u3164\u313b \u3164\u314c\u3164\u313c \u3164\u314c\u3164\u313d \u3164\u314c\u3164\u313e \u3164\u314c\u3164\u313f \u3164\u314c\u3164\u3140 \u3164\u314c\u3164\u3141 \u3164\u314c\u3164\u3142 \u3164\u314c\u3164\u3143 \u3164\u314c\u3164\u3144 \u3164\u314c\u3164\u3145 \u3164\u314c\u3164\u3146 \u3164\u314c\u3164\u3147 \u3164\u314c\u3164\u3148 \u3164\u314c\u3164\u3149 \u3164\u314c\u3164\u314a \u3164\u314c\u3164\u314b \u3164\u314c\u3164\u314c \u3164\u314c\u3164\u314d \u3164\u314c\u3164\u314e \u3164\u314c\u3164\u314f \u3164\u314c\u3164\u3164 ",
-" row bd_be_: \u3164\u314d\u314e\uca46 \u3164\u314d\u314e\u3131 \u3164\u314d\u314e\u3132 \u3164\u314d\u314e\u3133 \u3164\u314d\u314e\u3134 \u3164\u314d\u314e\u3135 \u3164\u314d\u314e\u3136 \u3164\u314d\u314e\u3137 \u3164\u314d\u314e\u3138 \u3164\u314d\u314e\u3139 \u3164\u314d\u314e\u313a \u3164\u314d\u314e\u313b \u3164\u314d\u314e\u313c \u3164\u314d\u314e\u313d \u3164\u314d\u314e\u313e \u3164\u314d\u314e\u313f \u3164\u314d\u314e\u3140 \u3164\u314d\u314e\u3141 \u3164\u314d\u314e\u3142 \u3164\u314d\u314e\u3143 \u3164\u314d\u314e\u3144 \u3164\u314d\u314e\u3145 \u3164\u314d\u314e\u3146 \u3164\u314d\u314e\u3147 \u3164\u314d\u314e\u3148 \u3164\u314d\u314e\u3149 \u3164\u314d\u314e\u314a \u3164\u314d\u314e\u314b \u3164\u314d\u314e\u314c \u3164\u314d\u314e\u314d \u3164\u314d\u314e\u314e \u3164\u314d\u314e\u314f \u3164\u314d\u314e\u3164 ",
-" row bd_bf_: \u3164\u314d\u314f\uca46 \ud30d \ud30e \ud30f \ud310 \ud311 \ud312 \ud313 \u3164\u314d\u314f\u3138 \ud314 \ud315 \ud316 \ud317 \ud318 \ud319 \ud31a \ud31b \ud31c \ud31d \u3164\u314d\u314f\u3143 \ud31e \ud31f \ud320 \ud321 \ud322 \u3164\u314d\u314f\u3149 \ud323 \ud324 \ud325 \ud326 \ud327 \u3164\u314d\u314f\u314f \ud30c ",
-" row bd_c0_: \u3164\u314d\u3150\uca46 \ud329 \ud32a \ud32b \ud32c \ud32d \ud32e \ud32f \u3164\u314d\u3150\u3138 \ud330 \ud331 \ud332 \ud333 \ud334 \ud335 \ud336 \ud337 \ud338 \ud339 \u3164\u314d\u3150\u3143 \ud33a \ud33b \ud33c \ud33d \ud33e \u3164\u314d\u3150\u3149 \ud33f \ud340 \ud341 \ud342 \ud343 \u3164\u314d\u3150\u314f \ud328 ",
-" row bd_c1_: \u3164\u314d\u3151\uca46 \ud345 \ud346 \ud347 \ud348 \ud349 \ud34a \ud34b \u3164\u314d\u3151\u3138 \ud34c \ud34d \ud34e \ud34f \ud350 \ud351 \ud352 \ud353 \ud354 \ud355 \u3164\u314d\u3151\u3143 \ud356 \ud357 \ud358 \ud359 \ud35a \u3164\u314d\u3151\u3149 \ud35b \ud35c \ud35d \ud35e \ud35f \u3164\u314d\u3151\u314f \ud344 ",
-" row bd_c2_: \u3164\u314d\u3152\uca46 \ud361 \ud362 \ud363 \ud364 \ud365 \ud366 \ud367 \u3164\u314d\u3152\u3138 \ud368 \ud369 \ud36a \ud36b \ud36c \ud36d \ud36e \ud36f \ud370 \ud371 \u3164\u314d\u3152\u3143 \ud372 \ud373 \ud374 \ud375 \ud376 \u3164\u314d\u3152\u3149 \ud377 \ud378 \ud379 \ud37a \ud37b \u3164\u314d\u3152\u314f \ud360 ",
-" row bd_c3_: \u3164\u314d\u3153\uca46 \ud37d \ud37e \ud37f \ud380 \ud381 \ud382 \ud383 \u3164\u314d\u3153\u3138 \ud384 \ud385 \ud386 \ud387 \ud388 \ud389 \ud38a \ud38b \ud38c \ud38d \u3164\u314d\u3153\u3143 \ud38e \ud38f \ud390 \ud391 \ud392 \u3164\u314d\u3153\u3149 \ud393 \ud394 \ud395 \ud396 \ud397 \u3164\u314d\u3153\u314f \ud37c ",
-" row bd_c4_: \u3164\u314d\u3154\uca46 \ud399 \ud39a \ud39b \ud39c \ud39d \ud39e \ud39f \u3164\u314d\u3154\u3138 \ud3a0 \ud3a1 \ud3a2 \ud3a3 \ud3a4 \ud3a5 \ud3a6 \ud3a7 \ud3a8 \ud3a9 \u3164\u314d\u3154\u3143 \ud3aa \ud3ab \ud3ac \ud3ad \ud3ae \u3164\u314d\u3154\u3149 \ud3af \ud3b0 \ud3b1 \ud3b2 \ud3b3 \u3164\u314d\u3154\u314f \ud398 ",
-" row bd_c5_: \u3164\u314d\u3155\uca46 \ud3b5 \ud3b6 \ud3b7 \ud3b8 \ud3b9 \ud3ba \ud3bb \u3164\u314d\u3155\u3138 \ud3bc \ud3bd \ud3be \ud3bf \ud3c0 \ud3c1 \ud3c2 \ud3c3 \ud3c4 \ud3c5 \u3164\u314d\u3155\u3143 \ud3c6 \ud3c7 \ud3c8 \ud3c9 \ud3ca \u3164\u314d\u3155\u3149 \ud3cb \ud3cc \ud3cd \ud3ce \ud3cf \u3164\u314d\u3155\u314f \ud3b4 ",
-" row bd_c6_: \u3164\u314d\u3156\uca46 \ud3d1 \ud3d2 \ud3d3 \ud3d4 \ud3d5 \ud3d6 \ud3d7 \u3164\u314d\u3156\u3138 \ud3d8 \ud3d9 \ud3da \ud3db \ud3dc \ud3dd \ud3de \ud3df \ud3e0 \ud3e1 \u3164\u314d\u3156\u3143 \ud3e2 \ud3e3 \ud3e4 \ud3e5 \ud3e6 \u3164\u314d\u3156\u3149 \ud3e7 \ud3e8 \ud3e9 \ud3ea \ud3eb \u3164\u314d\u3156\u314f \ud3d0 ",
-" row bd_c7_: \u3164\u314d\u3157\uca46 \ud3ed \ud3ee \ud3ef \ud3f0 \ud3f1 \ud3f2 \ud3f3 \u3164\u314d\u3157\u3138 \ud3f4 \ud3f5 \ud3f6 \ud3f7 \ud3f8 \ud3f9 \ud3fa \ud3fb \ud3fc \ud3fd \u3164\u314d\u3157\u3143 \ud3fe \ud3ff \ud400 \ud401 \ud402 \u3164\u314d\u3157\u3149 \ud403 \ud404 \ud405 \ud406 \ud407 \u3164\u314d\u3157\u314f \ud3ec ",
-" row bd_c8_: \u3164\u314d\u3158\uca46 \ud409 \ud40a \ud40b \ud40c \ud40d \ud40e \ud40f \u3164\u314d\u3158\u3138 \ud410 \ud411 \ud412 \ud413 \ud414 \ud415 \ud416 \ud417 \ud418 \ud419 \u3164\u314d\u3158\u3143 \ud41a \ud41b \ud41c \ud41d \ud41e \u3164\u314d\u3158\u3149 \ud41f \ud420 \ud421 \ud422 \ud423 \u3164\u314d\u3158\u314f \ud408 ",
-" row bd_c9_: \u3164\u314d\u3159\uca46 \ud425 \ud426 \ud427 \ud428 \ud429 \ud42a \ud42b \u3164\u314d\u3159\u3138 \ud42c \ud42d \ud42e \ud42f \ud430 \ud431 \ud432 \ud433 \ud434 \ud435 \u3164\u314d\u3159\u3143 \ud436 \ud437 \ud438 \ud439 \ud43a \u3164\u314d\u3159\u3149 \ud43b \ud43c \ud43d \ud43e \ud43f \u3164\u314d\u3159\u314f \ud424 ",
-" row bd_ca_: \u3164\u314d\u315a\uca46 \ud441 \ud442 \ud443 \ud444 \ud445 \ud446 \ud447 \u3164\u314d\u315a\u3138 \ud448 \ud449 \ud44a \ud44b \ud44c \ud44d \ud44e \ud44f \ud450 \ud451 \u3164\u314d\u315a\u3143 \ud452 \ud453 \ud454 \ud455 \ud456 \u3164\u314d\u315a\u3149 \ud457 \ud458 \ud459 \ud45a \ud45b \u3164\u314d\u315a\u314f \ud440 ",
-" row bd_cb_: \u3164\u314d\u315b\uca46 \ud45d \ud45e \ud45f \ud460 \ud461 \ud462 \ud463 \u3164\u314d\u315b\u3138 \ud464 \ud465 \ud466 \ud467 \ud468 \ud469 \ud46a \ud46b \ud46c \ud46d \u3164\u314d\u315b\u3143 \ud46e \ud46f \ud470 \ud471 \ud472 \u3164\u314d\u315b\u3149 \ud473 \ud474 \ud475 \ud476 \ud477 \u3164\u314d\u315b\u314f \ud45c ",
-" row bd_cc_: \u3164\u314d\u315c\uca46 \ud479 \ud47a \ud47b \ud47c \ud47d \ud47e \ud47f \u3164\u314d\u315c\u3138 \ud480 \ud481 \ud482 \ud483 \ud484 \ud485 \ud486 \ud487 \ud488 \ud489 \u3164\u314d\u315c\u3143 \ud48a \ud48b \ud48c \ud48d \ud48e \u3164\u314d\u315c\u3149 \ud48f \ud490 \ud491 \ud492 \ud493 \u3164\u314d\u315c\u314f \ud478 ",
-" row bd_cd_: \u3164\u314d\u315d\uca46 \ud495 \ud496 \ud497 \ud498 \ud499 \ud49a \ud49b \u3164\u314d\u315d\u3138 \ud49c \ud49d \ud49e \ud49f \ud4a0 \ud4a1 \ud4a2 \ud4a3 \ud4a4 \ud4a5 \u3164\u314d\u315d\u3143 \ud4a6 \ud4a7 \ud4a8 \ud4a9 \ud4aa \u3164\u314d\u315d\u3149 \ud4ab \ud4ac \ud4ad \ud4ae \ud4af \u3164\u314d\u315d\u314f \ud494 ",
-" row bd_ce_: \u3164\u314d\u315e\uca46 \ud4b1 \ud4b2 \ud4b3 \ud4b4 \ud4b5 \ud4b6 \ud4b7 \u3164\u314d\u315e\u3138 \ud4b8 \ud4b9 \ud4ba \ud4bb \ud4bc \ud4bd \ud4be \ud4bf \ud4c0 \ud4c1 \u3164\u314d\u315e\u3143 \ud4c2 \ud4c3 \ud4c4 \ud4c5 \ud4c6 \u3164\u314d\u315e\u3149 \ud4c7 \ud4c8 \ud4c9 \ud4ca \ud4cb \u3164\u314d\u315e\u314f \ud4b0 ",
-" row bd_cf_: \u3164\u314d\u315f\uca46 \ud4cd \ud4ce \ud4cf \ud4d0 \ud4d1 \ud4d2 \ud4d3 \u3164\u314d\u315f\u3138 \ud4d4 \ud4d5 \ud4d6 \ud4d7 \ud4d8 \ud4d9 \ud4da \ud4db \ud4dc \ud4dd \u3164\u314d\u315f\u3143 \ud4de \ud4df \ud4e0 \ud4e1 \ud4e2 \u3164\u314d\u315f\u3149 \ud4e3 \ud4e4 \ud4e5 \ud4e6 \ud4e7 \u3164\u314d\u315f\u314f \ud4cc ",
-" row bd_d0_: \u3164\u314d\u3160\uca46 \ud4e9 \ud4ea \ud4eb \ud4ec \ud4ed \ud4ee \ud4ef \u3164\u314d\u3160\u3138 \ud4f0 \ud4f1 \ud4f2 \ud4f3 \ud4f4 \ud4f5 \ud4f6 \ud4f7 \ud4f8 \ud4f9 \u3164\u314d\u3160\u3143 \ud4fa \ud4fb \ud4fc \ud4fd \ud4fe \u3164\u314d\u3160\u3149 \ud4ff \ud500 \ud501 \ud502 \ud503 \u3164\u314d\u3160\u314f \ud4e8 ",
-" row bd_d1_: \u3164\u314d\u3161\uca46 \ud505 \ud506 \ud507 \ud508 \ud509 \ud50a \ud50b \u3164\u314d\u3161\u3138 \ud50c \ud50d \ud50e \ud50f \ud510 \ud511 \ud512 \ud513 \ud514 \ud515 \u3164\u314d\u3161\u3143 \ud516 \ud517 \ud518 \ud519 \ud51a \u3164\u314d\u3161\u3149 \ud51b \ud51c \ud51d \ud51e \ud51f \u3164\u314d\u3161\u314f \ud504 ",
-" row bd_d2_: \u3164\u314d\u3162\uca46 \ud521 \ud522 \ud523 \ud524 \ud525 \ud526 \ud527 \u3164\u314d\u3162\u3138 \ud528 \ud529 \ud52a \ud52b \ud52c \ud52d \ud52e \ud52f \ud530 \ud531 \u3164\u314d\u3162\u3143 \ud532 \ud533 \ud534 \ud535 \ud536 \u3164\u314d\u3162\u3149 \ud537 \ud538 \ud539 \ud53a \ud53b \u3164\u314d\u3162\u314f \ud520 ",
-" row bd_d3_: \u3164\u314d\u3163\uca46 \ud53d \ud53e \ud53f \ud540 \ud541 \ud542 \ud543 \u3164\u314d\u3163\u3138 \ud544 \ud545 \ud546 \ud547 \ud548 \ud549 \ud54a \ud54b \ud54c \ud54d \u3164\u314d\u3163\u3143 \ud54e \ud54f \ud550 \ud551 \ud552 \u3164\u314d\u3163\u3149 \ud553 \ud554 \ud555 \ud556 \ud557 \u3164\u314d\u3163\u314f \ud53c ",
-" row bd_d4_: \u3164\u314d\u3164\uca46 \u3164\u314d\u3164\u3131 \u3164\u314d\u3164\u3132 \u3164\u314d\u3164\u3133 \u3164\u314d\u3164\u3134 \u3164\u314d\u3164\u3135 \u3164\u314d\u3164\u3136 \u3164\u314d\u3164\u3137 \u3164\u314d\u3164\u3138 \u3164\u314d\u3164\u3139 \u3164\u314d\u3164\u313a \u3164\u314d\u3164\u313b \u3164\u314d\u3164\u313c \u3164\u314d\u3164\u313d \u3164\u314d\u3164\u313e \u3164\u314d\u3164\u313f \u3164\u314d\u3164\u3140 \u3164\u314d\u3164\u3141 \u3164\u314d\u3164\u3142 \u3164\u314d\u3164\u3143 \u3164\u314d\u3164\u3144 \u3164\u314d\u3164\u3145 \u3164\u314d\u3164\u3146 \u3164\u314d\u3164\u3147 \u3164\u314d\u3164\u3148 \u3164\u314d\u3164\u3149 \u3164\u314d\u3164\u314a \u3164\u314d\u3164\u314b \u3164\u314d\u3164\u314c \u3164\u314d\u3164\u314d \u3164\u314d\u3164\u314e \u3164\u314d\u3164\u314f \u3164\u314d\u3164\u3164 ",
-" row be_be_: \u3164\u314e\u314e\uca46 \u3164\u314e\u314e\u3131 \u3164\u314e\u314e\u3132 \u3164\u314e\u314e\u3133 \u3164\u314e\u314e\u3134 \u3164\u314e\u314e\u3135 \u3164\u314e\u314e\u3136 \u3164\u314e\u314e\u3137 \u3164\u314e\u314e\u3138 \u3164\u314e\u314e\u3139 \u3164\u314e\u314e\u313a \u3164\u314e\u314e\u313b \u3164\u314e\u314e\u313c \u3164\u314e\u314e\u313d \u3164\u314e\u314e\u313e \u3164\u314e\u314e\u313f \u3164\u314e\u314e\u3140 \u3164\u314e\u314e\u3141 \u3164\u314e\u314e\u3142 \u3164\u314e\u314e\u3143 \u3164\u314e\u314e\u3144 \u3164\u314e\u314e\u3145 \u3164\u314e\u314e\u3146 \u3164\u314e\u314e\u3147 \u3164\u314e\u314e\u3148 \u3164\u314e\u314e\u3149 \u3164\u314e\u314e\u314a \u3164\u314e\u314e\u314b \u3164\u314e\u314e\u314c \u3164\u314e\u314e\u314d \u3164\u314e\u314e\u314e \u3164\u314e\u314e\u314f \u3164\u314e\u314e\u3164 ",
-" row be_bf_: \u3164\u314e\u314f\uca46 \ud559 \ud55a \ud55b \ud55c \ud55d \ud55e \ud55f \u3164\u314e\u314f\u3138 \ud560 \ud561 \ud562 \ud563 \ud564 \ud565 \ud566 \ud567 \ud568 \ud569 \u3164\u314e\u314f\u3143 \ud56a \ud56b \ud56c \ud56d \ud56e \u3164\u314e\u314f\u3149 \ud56f \ud570 \ud571 \ud572 \ud573 \u3164\u314e\u314f\u314f \ud558 ",
-" row be_c0_: \u3164\u314e\u3150\uca46 \ud575 \ud576 \ud577 \ud578 \ud579 \ud57a \ud57b \u3164\u314e\u3150\u3138 \ud57c \ud57d \ud57e \ud57f \ud580 \ud581 \ud582 \ud583 \ud584 \ud585 \u3164\u314e\u3150\u3143 \ud586 \ud587 \ud588 \ud589 \ud58a \u3164\u314e\u3150\u3149 \ud58b \ud58c \ud58d \ud58e \ud58f \u3164\u314e\u3150\u314f \ud574 ",
-" row be_c1_: \u3164\u314e\u3151\uca46 \ud591 \ud592 \ud593 \ud594 \ud595 \ud596 \ud597 \u3164\u314e\u3151\u3138 \ud598 \ud599 \ud59a \ud59b \ud59c \ud59d \ud59e \ud59f \ud5a0 \ud5a1 \u3164\u314e\u3151\u3143 \ud5a2 \ud5a3 \ud5a4 \ud5a5 \ud5a6 \u3164\u314e\u3151\u3149 \ud5a7 \ud5a8 \ud5a9 \ud5aa \ud5ab \u3164\u314e\u3151\u314f \ud590 ",
-" row be_c2_: \u3164\u314e\u3152\uca46 \ud5ad \ud5ae \ud5af \ud5b0 \ud5b1 \ud5b2 \ud5b3 \u3164\u314e\u3152\u3138 \ud5b4 \ud5b5 \ud5b6 \ud5b7 \ud5b8 \ud5b9 \ud5ba \ud5bb \ud5bc \ud5bd \u3164\u314e\u3152\u3143 \ud5be \ud5bf \ud5c0 \ud5c1 \ud5c2 \u3164\u314e\u3152\u3149 \ud5c3 \ud5c4 \ud5c5 \ud5c6 \ud5c7 \u3164\u314e\u3152\u314f \ud5ac ",
-" row be_c3_: \u3164\u314e\u3153\uca46 \ud5c9 \ud5ca \ud5cb \ud5cc \ud5cd \ud5ce \ud5cf \u3164\u314e\u3153\u3138 \ud5d0 \ud5d1 \ud5d2 \ud5d3 \ud5d4 \ud5d5 \ud5d6 \ud5d7 \ud5d8 \ud5d9 \u3164\u314e\u3153\u3143 \ud5da \ud5db \ud5dc \ud5dd \ud5de \u3164\u314e\u3153\u3149 \ud5df \ud5e0 \ud5e1 \ud5e2 \ud5e3 \u3164\u314e\u3153\u314f \ud5c8 ",
-" row be_c4_: \u3164\u314e\u3154\uca46 \ud5e5 \ud5e6 \ud5e7 \ud5e8 \ud5e9 \ud5ea \ud5eb \u3164\u314e\u3154\u3138 \ud5ec \ud5ed \ud5ee \ud5ef \ud5f0 \ud5f1 \ud5f2 \ud5f3 \ud5f4 \ud5f5 \u3164\u314e\u3154\u3143 \ud5f6 \ud5f7 \ud5f8 \ud5f9 \ud5fa \u3164\u314e\u3154\u3149 \ud5fb \ud5fc \ud5fd \ud5fe \ud5ff \u3164\u314e\u3154\u314f \ud5e4 ",
-" row be_c5_: \u3164\u314e\u3155\uca46 \ud601 \ud602 \ud603 \ud604 \ud605 \ud606 \ud607 \u3164\u314e\u3155\u3138 \ud608 \ud609 \ud60a \ud60b \ud60c \ud60d \ud60e \ud60f \ud610 \ud611 \u3164\u314e\u3155\u3143 \ud612 \ud613 \ud614 \ud615 \ud616 \u3164\u314e\u3155\u3149 \ud617 \ud618 \ud619 \ud61a \ud61b \u3164\u314e\u3155\u314f \ud600 ",
-" row be_c6_: \u3164\u314e\u3156\uca46 \ud61d \ud61e \ud61f \ud620 \ud621 \ud622 \ud623 \u3164\u314e\u3156\u3138 \ud624 \ud625 \ud626 \ud627 \ud628 \ud629 \ud62a \ud62b \ud62c \ud62d \u3164\u314e\u3156\u3143 \ud62e \ud62f \ud630 \ud631 \ud632 \u3164\u314e\u3156\u3149 \ud633 \ud634 \ud635 \ud636 \ud637 \u3164\u314e\u3156\u314f \ud61c ",
-" row be_c7_: \u3164\u314e\u3157\uca46 \ud639 \ud63a \ud63b \ud63c \ud63d \ud63e \ud63f \u3164\u314e\u3157\u3138 \ud640 \ud641 \ud642 \ud643 \ud644 \ud645 \ud646 \ud647 \ud648 \ud649 \u3164\u314e\u3157\u3143 \ud64a \ud64b \ud64c \ud64d \ud64e \u3164\u314e\u3157\u3149 \ud64f \ud650 \ud651 \ud652 \ud653 \u3164\u314e\u3157\u314f \ud638 ",
-" row be_c8_: \u3164\u314e\u3158\uca46 \ud655 \ud656 \ud657 \ud658 \ud659 \ud65a \ud65b \u3164\u314e\u3158\u3138 \ud65c \ud65d \ud65e \ud65f \ud660 \ud661 \ud662 \ud663 \ud664 \ud665 \u3164\u314e\u3158\u3143 \ud666 \ud667 \ud668 \ud669 \ud66a \u3164\u314e\u3158\u3149 \ud66b \ud66c \ud66d \ud66e \ud66f \u3164\u314e\u3158\u314f \ud654 ",
-" row be_c9_: \u3164\u314e\u3159\uca46 \ud671 \ud672 \ud673 \ud674 \ud675 \ud676 \ud677 \u3164\u314e\u3159\u3138 \ud678 \ud679 \ud67a \ud67b \ud67c \ud67d \ud67e \ud67f \ud680 \ud681 \u3164\u314e\u3159\u3143 \ud682 \ud683 \ud684 \ud685 \ud686 \u3164\u314e\u3159\u3149 \ud687 \ud688 \ud689 \ud68a \ud68b \u3164\u314e\u3159\u314f \ud670 ",
-" row be_ca_: \u3164\u314e\u315a\uca46 \ud68d \ud68e \ud68f \ud690 \ud691 \ud692 \ud693 \u3164\u314e\u315a\u3138 \ud694 \ud695 \ud696 \ud697 \ud698 \ud699 \ud69a \ud69b \ud69c \ud69d \u3164\u314e\u315a\u3143 \ud69e \ud69f \ud6a0 \ud6a1 \ud6a2 \u3164\u314e\u315a\u3149 \ud6a3 \ud6a4 \ud6a5 \ud6a6 \ud6a7 \u3164\u314e\u315a\u314f \ud68c ",
-" row be_cb_: \u3164\u314e\u315b\uca46 \ud6a9 \ud6aa \ud6ab \ud6ac \ud6ad \ud6ae \ud6af \u3164\u314e\u315b\u3138 \ud6b0 \ud6b1 \ud6b2 \ud6b3 \ud6b4 \ud6b5 \ud6b6 \ud6b7 \ud6b8 \ud6b9 \u3164\u314e\u315b\u3143 \ud6ba \ud6bb \ud6bc \ud6bd \ud6be \u3164\u314e\u315b\u3149 \ud6bf \ud6c0 \ud6c1 \ud6c2 \ud6c3 \u3164\u314e\u315b\u314f \ud6a8 ",
-" row be_cc_: \u3164\u314e\u315c\uca46 \ud6c5 \ud6c6 \ud6c7 \ud6c8 \ud6c9 \ud6ca \ud6cb \u3164\u314e\u315c\u3138 \ud6cc \ud6cd \ud6ce \ud6cf \ud6d0 \ud6d1 \ud6d2 \ud6d3 \ud6d4 \ud6d5 \u3164\u314e\u315c\u3143 \ud6d6 \ud6d7 \ud6d8 \ud6d9 \ud6da \u3164\u314e\u315c\u3149 \ud6db \ud6dc \ud6dd \ud6de \ud6df \u3164\u314e\u315c\u314f \ud6c4 ",
-" row be_cd_: \u3164\u314e\u315d\uca46 \ud6e1 \ud6e2 \ud6e3 \ud6e4 \ud6e5 \ud6e6 \ud6e7 \u3164\u314e\u315d\u3138 \ud6e8 \ud6e9 \ud6ea \ud6eb \ud6ec \ud6ed \ud6ee \ud6ef \ud6f0 \ud6f1 \u3164\u314e\u315d\u3143 \ud6f2 \ud6f3 \ud6f4 \ud6f5 \ud6f6 \u3164\u314e\u315d\u3149 \ud6f7 \ud6f8 \ud6f9 \ud6fa \ud6fb \u3164\u314e\u315d\u314f \ud6e0 ",
-" row be_ce_: \u3164\u314e\u315e\uca46 \ud6fd \ud6fe \ud6ff \ud700 \ud701 \ud702 \ud703 \u3164\u314e\u315e\u3138 \ud704 \ud705 \ud706 \ud707 \ud708 \ud709 \ud70a \ud70b \ud70c \ud70d \u3164\u314e\u315e\u3143 \ud70e \ud70f \ud710 \ud711 \ud712 \u3164\u314e\u315e\u3149 \ud713 \ud714 \ud715 \ud716 \ud717 \u3164\u314e\u315e\u314f \ud6fc ",
-" row be_cf_: \u3164\u314e\u315f\uca46 \ud719 \ud71a \ud71b \ud71c \ud71d \ud71e \ud71f \u3164\u314e\u315f\u3138 \ud720 \ud721 \ud722 \ud723 \ud724 \ud725 \ud726 \ud727 \ud728 \ud729 \u3164\u314e\u315f\u3143 \ud72a \ud72b \ud72c \ud72d \ud72e \u3164\u314e\u315f\u3149 \ud72f \ud730 \ud731 \ud732 \ud733 \u3164\u314e\u315f\u314f \ud718 ",
-" row be_d0_: \u3164\u314e\u3160\uca46 \ud735 \ud736 \ud737 \ud738 \ud739 \ud73a \ud73b \u3164\u314e\u3160\u3138 \ud73c \ud73d \ud73e \ud73f \ud740 \ud741 \ud742 \ud743 \ud744 \ud745 \u3164\u314e\u3160\u3143 \ud746 \ud747 \ud748 \ud749 \ud74a \u3164\u314e\u3160\u3149 \ud74b \ud74c \ud74d \ud74e \ud74f \u3164\u314e\u3160\u314f \ud734 ",
-" row be_d1_: \u3164\u314e\u3161\uca46 \ud751 \ud752 \ud753 \ud754 \ud755 \ud756 \ud757 \u3164\u314e\u3161\u3138 \ud758 \ud759 \ud75a \ud75b \ud75c \ud75d \ud75e \ud75f \ud760 \ud761 \u3164\u314e\u3161\u3143 \ud762 \ud763 \ud764 \ud765 \ud766 \u3164\u314e\u3161\u3149 \ud767 \ud768 \ud769 \ud76a \ud76b \u3164\u314e\u3161\u314f \ud750 ",
-" row be_d2_: \u3164\u314e\u3162\uca46 \ud76d \ud76e \ud76f \ud770 \ud771 \ud772 \ud773 \u3164\u314e\u3162\u3138 \ud774 \ud775 \ud776 \ud777 \ud778 \ud779 \ud77a \ud77b \ud77c \ud77d \u3164\u314e\u3162\u3143 \ud77e \ud77f \ud780 \ud781 \ud782 \u3164\u314e\u3162\u3149 \ud783 \ud784 \ud785 \ud786 \ud787 \u3164\u314e\u3162\u314f \ud76c ",
-" row be_d3_: \u3164\u314e\u3163\uca46 \ud789 \ud78a \ud78b \ud78c \ud78d \ud78e \ud78f \u3164\u314e\u3163\u3138 \ud790 \ud791 \ud792 \ud793 \ud794 \ud795 \ud796 \ud797 \ud798 \ud799 \u3164\u314e\u3163\u3143 \ud79a \ud79b \ud79c \ud79d \ud79e \u3164\u314e\u3163\u3149 \ud79f \ud7a0 \ud7a1 \ud7a2 \ud7a3 \u3164\u314e\u3163\u314f \ud788 ",
-" row be_d4_: \u3164\u314e\u3164\uca46 \u3164\u314e\u3164\u3131 \u3164\u314e\u3164\u3132 \u3164\u314e\u3164\u3133 \u3164\u314e\u3164\u3134 \u3164\u314e\u3164\u3135 \u3164\u314e\u3164\u3136 \u3164\u314e\u3164\u3137 \u3164\u314e\u3164\u3138 \u3164\u314e\u3164\u3139 \u3164\u314e\u3164\u313a \u3164\u314e\u3164\u313b \u3164\u314e\u3164\u313c \u3164\u314e\u3164\u313d \u3164\u314e\u3164\u313e \u3164\u314e\u3164\u313f \u3164\u314e\u3164\u3140 \u3164\u314e\u3164\u3141 \u3164\u314e\u3164\u3142 \u3164\u314e\u3164\u3143 \u3164\u314e\u3164\u3144 \u3164\u314e\u3164\u3145 \u3164\u314e\u3164\u3146 \u3164\u314e\u3164\u3147 \u3164\u314e\u3164\u3148 \u3164\u314e\u3164\u3149 \u3164\u314e\u3164\u314a \u3164\u314e\u3164\u314b \u3164\u314e\u3164\u314c \u3164\u314e\u3164\u314d \u3164\u314e\u3164\u314e \u3164\u314e\u3164\u314f \u3164\u314e\u3164\u3164 ",
-" row bf_be_: \u3164\u314f\u314e\uca46 \u3164\u314f\u314e\u3131 \u3164\u314f\u314e\u3132 \u3164\u314f\u314e\u3133 \u3164\u314f\u314e\u3134 \u3164\u314f\u314e\u3135 \u3164\u314f\u314e\u3136 \u3164\u314f\u314e\u3137 \u3164\u314f\u314e\u3138 \u3164\u314f\u314e\u3139 \u3164\u314f\u314e\u313a \u3164\u314f\u314e\u313b \u3164\u314f\u314e\u313c \u3164\u314f\u314e\u313d \u3164\u314f\u314e\u313e \u3164\u314f\u314e\u313f \u3164\u314f\u314e\u3140 \u3164\u314f\u314e\u3141 \u3164\u314f\u314e\u3142 \u3164\u314f\u314e\u3143 \u3164\u314f\u314e\u3144 \u3164\u314f\u314e\u3145 \u3164\u314f\u314e\u3146 \u3164\u314f\u314e\u3147 \u3164\u314f\u314e\u3148 \u3164\u314f\u314e\u3149 \u3164\u314f\u314e\u314a \u3164\u314f\u314e\u314b \u3164\u314f\u314e\u314c \u3164\u314f\u314e\u314d \u3164\u314f\u314e\u314e \u3164\u314f\u314e\u314f \u3164\u314f\u314e\u3164 ",
-" row bf_bf_: \u3164\u314f\u314f\uca46 \u3164\u314f\u314f\u3131 \u3164\u314f\u314f\u3132 \u3164\u314f\u314f\u3133 \u3164\u314f\u314f\u3134 \u3164\u314f\u314f\u3135 \u3164\u314f\u314f\u3136 \u3164\u314f\u314f\u3137 \u3164\u314f\u314f\u3138 \u3164\u314f\u314f\u3139 \u3164\u314f\u314f\u313a \u3164\u314f\u314f\u313b \u3164\u314f\u314f\u313c \u3164\u314f\u314f\u313d \u3164\u314f\u314f\u313e \u3164\u314f\u314f\u313f \u3164\u314f\u314f\u3140 \u3164\u314f\u314f\u3141 \u3164\u314f\u314f\u3142 \u3164\u314f\u314f\u3143 \u3164\u314f\u314f\u3144 \u3164\u314f\u314f\u3145 \u3164\u314f\u314f\u3146 \u3164\u314f\u314f\u3147 \u3164\u314f\u314f\u3148 \u3164\u314f\u314f\u3149 \u3164\u314f\u314f\u314a \u3164\u314f\u314f\u314b \u3164\u314f\u314f\u314c \u3164\u314f\u314f\u314d \u3164\u314f\u314f\u314e \u3164\u314f\u314f\u314f \u3164\u314f\u314f\u3164 ",
-" row bf_c0_: \u3164\u314f\u3150\uca46 \u3164\u314f\u3150\u3131 \u3164\u314f\u3150\u3132 \u3164\u314f\u3150\u3133 \u3164\u314f\u3150\u3134 \u3164\u314f\u3150\u3135 \u3164\u314f\u3150\u3136 \u3164\u314f\u3150\u3137 \u3164\u314f\u3150\u3138 \u3164\u314f\u3150\u3139 \u3164\u314f\u3150\u313a \u3164\u314f\u3150\u313b \u3164\u314f\u3150\u313c \u3164\u314f\u3150\u313d \u3164\u314f\u3150\u313e \u3164\u314f\u3150\u313f \u3164\u314f\u3150\u3140 \u3164\u314f\u3150\u3141 \u3164\u314f\u3150\u3142 \u3164\u314f\u3150\u3143 \u3164\u314f\u3150\u3144 \u3164\u314f\u3150\u3145 \u3164\u314f\u3150\u3146 \u3164\u314f\u3150\u3147 \u3164\u314f\u3150\u3148 \u3164\u314f\u3150\u3149 \u3164\u314f\u3150\u314a \u3164\u314f\u3150\u314b \u3164\u314f\u3150\u314c \u3164\u314f\u3150\u314d \u3164\u314f\u3150\u314e \u3164\u314f\u3150\u314f \u3164\u314f\u3150\u3164 ",
-" row bf_c1_: \u3164\u314f\u3151\uca46 \u3164\u314f\u3151\u3131 \u3164\u314f\u3151\u3132 \u3164\u314f\u3151\u3133 \u3164\u314f\u3151\u3134 \u3164\u314f\u3151\u3135 \u3164\u314f\u3151\u3136 \u3164\u314f\u3151\u3137 \u3164\u314f\u3151\u3138 \u3164\u314f\u3151\u3139 \u3164\u314f\u3151\u313a \u3164\u314f\u3151\u313b \u3164\u314f\u3151\u313c \u3164\u314f\u3151\u313d \u3164\u314f\u3151\u313e \u3164\u314f\u3151\u313f \u3164\u314f\u3151\u3140 \u3164\u314f\u3151\u3141 \u3164\u314f\u3151\u3142 \u3164\u314f\u3151\u3143 \u3164\u314f\u3151\u3144 \u3164\u314f\u3151\u3145 \u3164\u314f\u3151\u3146 \u3164\u314f\u3151\u3147 \u3164\u314f\u3151\u3148 \u3164\u314f\u3151\u3149 \u3164\u314f\u3151\u314a \u3164\u314f\u3151\u314b \u3164\u314f\u3151\u314c \u3164\u314f\u3151\u314d \u3164\u314f\u3151\u314e \u3164\u314f\u3151\u314f \u3164\u314f\u3151\u3164 ",
-" row bf_c2_: \u3164\u314f\u3152\uca46 \u3164\u314f\u3152\u3131 \u3164\u314f\u3152\u3132 \u3164\u314f\u3152\u3133 \u3164\u314f\u3152\u3134 \u3164\u314f\u3152\u3135 \u3164\u314f\u3152\u3136 \u3164\u314f\u3152\u3137 \u3164\u314f\u3152\u3138 \u3164\u314f\u3152\u3139 \u3164\u314f\u3152\u313a \u3164\u314f\u3152\u313b \u3164\u314f\u3152\u313c \u3164\u314f\u3152\u313d \u3164\u314f\u3152\u313e \u3164\u314f\u3152\u313f \u3164\u314f\u3152\u3140 \u3164\u314f\u3152\u3141 \u3164\u314f\u3152\u3142 \u3164\u314f\u3152\u3143 \u3164\u314f\u3152\u3144 \u3164\u314f\u3152\u3145 \u3164\u314f\u3152\u3146 \u3164\u314f\u3152\u3147 \u3164\u314f\u3152\u3148 \u3164\u314f\u3152\u3149 \u3164\u314f\u3152\u314a \u3164\u314f\u3152\u314b \u3164\u314f\u3152\u314c \u3164\u314f\u3152\u314d \u3164\u314f\u3152\u314e \u3164\u314f\u3152\u314f \u3164\u314f\u3152\u3164 ",
-" row bf_c3_: \u3164\u314f\u3153\uca46 \u3164\u314f\u3153\u3131 \u3164\u314f\u3153\u3132 \u3164\u314f\u3153\u3133 \u3164\u314f\u3153\u3134 \u3164\u314f\u3153\u3135 \u3164\u314f\u3153\u3136 \u3164\u314f\u3153\u3137 \u3164\u314f\u3153\u3138 \u3164\u314f\u3153\u3139 \u3164\u314f\u3153\u313a \u3164\u314f\u3153\u313b \u3164\u314f\u3153\u313c \u3164\u314f\u3153\u313d \u3164\u314f\u3153\u313e \u3164\u314f\u3153\u313f \u3164\u314f\u3153\u3140 \u3164\u314f\u3153\u3141 \u3164\u314f\u3153\u3142 \u3164\u314f\u3153\u3143 \u3164\u314f\u3153\u3144 \u3164\u314f\u3153\u3145 \u3164\u314f\u3153\u3146 \u3164\u314f\u3153\u3147 \u3164\u314f\u3153\u3148 \u3164\u314f\u3153\u3149 \u3164\u314f\u3153\u314a \u3164\u314f\u3153\u314b \u3164\u314f\u3153\u314c \u3164\u314f\u3153\u314d \u3164\u314f\u3153\u314e \u3164\u314f\u3153\u314f \u3164\u314f\u3153\u3164 ",
-" row bf_c4_: \u3164\u314f\u3154\uca46 \u3164\u314f\u3154\u3131 \u3164\u314f\u3154\u3132 \u3164\u314f\u3154\u3133 \u3164\u314f\u3154\u3134 \u3164\u314f\u3154\u3135 \u3164\u314f\u3154\u3136 \u3164\u314f\u3154\u3137 \u3164\u314f\u3154\u3138 \u3164\u314f\u3154\u3139 \u3164\u314f\u3154\u313a \u3164\u314f\u3154\u313b \u3164\u314f\u3154\u313c \u3164\u314f\u3154\u313d \u3164\u314f\u3154\u313e \u3164\u314f\u3154\u313f \u3164\u314f\u3154\u3140 \u3164\u314f\u3154\u3141 \u3164\u314f\u3154\u3142 \u3164\u314f\u3154\u3143 \u3164\u314f\u3154\u3144 \u3164\u314f\u3154\u3145 \u3164\u314f\u3154\u3146 \u3164\u314f\u3154\u3147 \u3164\u314f\u3154\u3148 \u3164\u314f\u3154\u3149 \u3164\u314f\u3154\u314a \u3164\u314f\u3154\u314b \u3164\u314f\u3154\u314c \u3164\u314f\u3154\u314d \u3164\u314f\u3154\u314e \u3164\u314f\u3154\u314f \u3164\u314f\u3154\u3164 ",
-" row bf_c5_: \u3164\u314f\u3155\uca46 \u3164\u314f\u3155\u3131 \u3164\u314f\u3155\u3132 \u3164\u314f\u3155\u3133 \u3164\u314f\u3155\u3134 \u3164\u314f\u3155\u3135 \u3164\u314f\u3155\u3136 \u3164\u314f\u3155\u3137 \u3164\u314f\u3155\u3138 \u3164\u314f\u3155\u3139 \u3164\u314f\u3155\u313a \u3164\u314f\u3155\u313b \u3164\u314f\u3155\u313c \u3164\u314f\u3155\u313d \u3164\u314f\u3155\u313e \u3164\u314f\u3155\u313f \u3164\u314f\u3155\u3140 \u3164\u314f\u3155\u3141 \u3164\u314f\u3155\u3142 \u3164\u314f\u3155\u3143 \u3164\u314f\u3155\u3144 \u3164\u314f\u3155\u3145 \u3164\u314f\u3155\u3146 \u3164\u314f\u3155\u3147 \u3164\u314f\u3155\u3148 \u3164\u314f\u3155\u3149 \u3164\u314f\u3155\u314a \u3164\u314f\u3155\u314b \u3164\u314f\u3155\u314c \u3164\u314f\u3155\u314d \u3164\u314f\u3155\u314e \u3164\u314f\u3155\u314f \u3164\u314f\u3155\u3164 ",
-" row bf_c6_: \u3164\u314f\u3156\uca46 \u3164\u314f\u3156\u3131 \u3164\u314f\u3156\u3132 \u3164\u314f\u3156\u3133 \u3164\u314f\u3156\u3134 \u3164\u314f\u3156\u3135 \u3164\u314f\u3156\u3136 \u3164\u314f\u3156\u3137 \u3164\u314f\u3156\u3138 \u3164\u314f\u3156\u3139 \u3164\u314f\u3156\u313a \u3164\u314f\u3156\u313b \u3164\u314f\u3156\u313c \u3164\u314f\u3156\u313d \u3164\u314f\u3156\u313e \u3164\u314f\u3156\u313f \u3164\u314f\u3156\u3140 \u3164\u314f\u3156\u3141 \u3164\u314f\u3156\u3142 \u3164\u314f\u3156\u3143 \u3164\u314f\u3156\u3144 \u3164\u314f\u3156\u3145 \u3164\u314f\u3156\u3146 \u3164\u314f\u3156\u3147 \u3164\u314f\u3156\u3148 \u3164\u314f\u3156\u3149 \u3164\u314f\u3156\u314a \u3164\u314f\u3156\u314b \u3164\u314f\u3156\u314c \u3164\u314f\u3156\u314d \u3164\u314f\u3156\u314e \u3164\u314f\u3156\u314f \u3164\u314f\u3156\u3164 ",
-" row bf_c7_: \u3164\u314f\u3157\uca46 \u3164\u314f\u3157\u3131 \u3164\u314f\u3157\u3132 \u3164\u314f\u3157\u3133 \u3164\u314f\u3157\u3134 \u3164\u314f\u3157\u3135 \u3164\u314f\u3157\u3136 \u3164\u314f\u3157\u3137 \u3164\u314f\u3157\u3138 \u3164\u314f\u3157\u3139 \u3164\u314f\u3157\u313a \u3164\u314f\u3157\u313b \u3164\u314f\u3157\u313c \u3164\u314f\u3157\u313d \u3164\u314f\u3157\u313e \u3164\u314f\u3157\u313f \u3164\u314f\u3157\u3140 \u3164\u314f\u3157\u3141 \u3164\u314f\u3157\u3142 \u3164\u314f\u3157\u3143 \u3164\u314f\u3157\u3144 \u3164\u314f\u3157\u3145 \u3164\u314f\u3157\u3146 \u3164\u314f\u3157\u3147 \u3164\u314f\u3157\u3148 \u3164\u314f\u3157\u3149 \u3164\u314f\u3157\u314a \u3164\u314f\u3157\u314b \u3164\u314f\u3157\u314c \u3164\u314f\u3157\u314d \u3164\u314f\u3157\u314e \u3164\u314f\u3157\u314f \u3164\u314f\u3157\u3164 ",
-" row bf_c8_: \u3164\u314f\u3158\uca46 \u3164\u314f\u3158\u3131 \u3164\u314f\u3158\u3132 \u3164\u314f\u3158\u3133 \u3164\u314f\u3158\u3134 \u3164\u314f\u3158\u3135 \u3164\u314f\u3158\u3136 \u3164\u314f\u3158\u3137 \u3164\u314f\u3158\u3138 \u3164\u314f\u3158\u3139 \u3164\u314f\u3158\u313a \u3164\u314f\u3158\u313b \u3164\u314f\u3158\u313c \u3164\u314f\u3158\u313d \u3164\u314f\u3158\u313e \u3164\u314f\u3158\u313f \u3164\u314f\u3158\u3140 \u3164\u314f\u3158\u3141 \u3164\u314f\u3158\u3142 \u3164\u314f\u3158\u3143 \u3164\u314f\u3158\u3144 \u3164\u314f\u3158\u3145 \u3164\u314f\u3158\u3146 \u3164\u314f\u3158\u3147 \u3164\u314f\u3158\u3148 \u3164\u314f\u3158\u3149 \u3164\u314f\u3158\u314a \u3164\u314f\u3158\u314b \u3164\u314f\u3158\u314c \u3164\u314f\u3158\u314d \u3164\u314f\u3158\u314e \u3164\u314f\u3158\u314f \u3164\u314f\u3158\u3164 ",
-" row bf_c9_: \u3164\u314f\u3159\uca46 \u3164\u314f\u3159\u3131 \u3164\u314f\u3159\u3132 \u3164\u314f\u3159\u3133 \u3164\u314f\u3159\u3134 \u3164\u314f\u3159\u3135 \u3164\u314f\u3159\u3136 \u3164\u314f\u3159\u3137 \u3164\u314f\u3159\u3138 \u3164\u314f\u3159\u3139 \u3164\u314f\u3159\u313a \u3164\u314f\u3159\u313b \u3164\u314f\u3159\u313c \u3164\u314f\u3159\u313d \u3164\u314f\u3159\u313e \u3164\u314f\u3159\u313f \u3164\u314f\u3159\u3140 \u3164\u314f\u3159\u3141 \u3164\u314f\u3159\u3142 \u3164\u314f\u3159\u3143 \u3164\u314f\u3159\u3144 \u3164\u314f\u3159\u3145 \u3164\u314f\u3159\u3146 \u3164\u314f\u3159\u3147 \u3164\u314f\u3159\u3148 \u3164\u314f\u3159\u3149 \u3164\u314f\u3159\u314a \u3164\u314f\u3159\u314b \u3164\u314f\u3159\u314c \u3164\u314f\u3159\u314d \u3164\u314f\u3159\u314e \u3164\u314f\u3159\u314f \u3164\u314f\u3159\u3164 ",
-" row bf_ca_: \u3164\u314f\u315a\uca46 \u3164\u314f\u315a\u3131 \u3164\u314f\u315a\u3132 \u3164\u314f\u315a\u3133 \u3164\u314f\u315a\u3134 \u3164\u314f\u315a\u3135 \u3164\u314f\u315a\u3136 \u3164\u314f\u315a\u3137 \u3164\u314f\u315a\u3138 \u3164\u314f\u315a\u3139 \u3164\u314f\u315a\u313a \u3164\u314f\u315a\u313b \u3164\u314f\u315a\u313c \u3164\u314f\u315a\u313d \u3164\u314f\u315a\u313e \u3164\u314f\u315a\u313f \u3164\u314f\u315a\u3140 \u3164\u314f\u315a\u3141 \u3164\u314f\u315a\u3142 \u3164\u314f\u315a\u3143 \u3164\u314f\u315a\u3144 \u3164\u314f\u315a\u3145 \u3164\u314f\u315a\u3146 \u3164\u314f\u315a\u3147 \u3164\u314f\u315a\u3148 \u3164\u314f\u315a\u3149 \u3164\u314f\u315a\u314a \u3164\u314f\u315a\u314b \u3164\u314f\u315a\u314c \u3164\u314f\u315a\u314d \u3164\u314f\u315a\u314e \u3164\u314f\u315a\u314f \u3164\u314f\u315a\u3164 ",
-" row bf_cb_: \u3164\u314f\u315b\uca46 \u3164\u314f\u315b\u3131 \u3164\u314f\u315b\u3132 \u3164\u314f\u315b\u3133 \u3164\u314f\u315b\u3134 \u3164\u314f\u315b\u3135 \u3164\u314f\u315b\u3136 \u3164\u314f\u315b\u3137 \u3164\u314f\u315b\u3138 \u3164\u314f\u315b\u3139 \u3164\u314f\u315b\u313a \u3164\u314f\u315b\u313b \u3164\u314f\u315b\u313c \u3164\u314f\u315b\u313d \u3164\u314f\u315b\u313e \u3164\u314f\u315b\u313f \u3164\u314f\u315b\u3140 \u3164\u314f\u315b\u3141 \u3164\u314f\u315b\u3142 \u3164\u314f\u315b\u3143 \u3164\u314f\u315b\u3144 \u3164\u314f\u315b\u3145 \u3164\u314f\u315b\u3146 \u3164\u314f\u315b\u3147 \u3164\u314f\u315b\u3148 \u3164\u314f\u315b\u3149 \u3164\u314f\u315b\u314a \u3164\u314f\u315b\u314b \u3164\u314f\u315b\u314c \u3164\u314f\u315b\u314d \u3164\u314f\u315b\u314e \u3164\u314f\u315b\u314f \u3164\u314f\u315b\u3164 ",
-" row bf_cc_: \u3164\u314f\u315c\uca46 \u3164\u314f\u315c\u3131 \u3164\u314f\u315c\u3132 \u3164\u314f\u315c\u3133 \u3164\u314f\u315c\u3134 \u3164\u314f\u315c\u3135 \u3164\u314f\u315c\u3136 \u3164\u314f\u315c\u3137 \u3164\u314f\u315c\u3138 \u3164\u314f\u315c\u3139 \u3164\u314f\u315c\u313a \u3164\u314f\u315c\u313b \u3164\u314f\u315c\u313c \u3164\u314f\u315c\u313d \u3164\u314f\u315c\u313e \u3164\u314f\u315c\u313f \u3164\u314f\u315c\u3140 \u3164\u314f\u315c\u3141 \u3164\u314f\u315c\u3142 \u3164\u314f\u315c\u3143 \u3164\u314f\u315c\u3144 \u3164\u314f\u315c\u3145 \u3164\u314f\u315c\u3146 \u3164\u314f\u315c\u3147 \u3164\u314f\u315c\u3148 \u3164\u314f\u315c\u3149 \u3164\u314f\u315c\u314a \u3164\u314f\u315c\u314b \u3164\u314f\u315c\u314c \u3164\u314f\u315c\u314d \u3164\u314f\u315c\u314e \u3164\u314f\u315c\u314f \u3164\u314f\u315c\u3164 ",
-" row bf_cd_: \u3164\u314f\u315d\uca46 \u3164\u314f\u315d\u3131 \u3164\u314f\u315d\u3132 \u3164\u314f\u315d\u3133 \u3164\u314f\u315d\u3134 \u3164\u314f\u315d\u3135 \u3164\u314f\u315d\u3136 \u3164\u314f\u315d\u3137 \u3164\u314f\u315d\u3138 \u3164\u314f\u315d\u3139 \u3164\u314f\u315d\u313a \u3164\u314f\u315d\u313b \u3164\u314f\u315d\u313c \u3164\u314f\u315d\u313d \u3164\u314f\u315d\u313e \u3164\u314f\u315d\u313f \u3164\u314f\u315d\u3140 \u3164\u314f\u315d\u3141 \u3164\u314f\u315d\u3142 \u3164\u314f\u315d\u3143 \u3164\u314f\u315d\u3144 \u3164\u314f\u315d\u3145 \u3164\u314f\u315d\u3146 \u3164\u314f\u315d\u3147 \u3164\u314f\u315d\u3148 \u3164\u314f\u315d\u3149 \u3164\u314f\u315d\u314a \u3164\u314f\u315d\u314b \u3164\u314f\u315d\u314c \u3164\u314f\u315d\u314d \u3164\u314f\u315d\u314e \u3164\u314f\u315d\u314f \u3164\u314f\u315d\u3164 ",
-" row bf_ce_: \u3164\u314f\u315e\uca46 \u3164\u314f\u315e\u3131 \u3164\u314f\u315e\u3132 \u3164\u314f\u315e\u3133 \u3164\u314f\u315e\u3134 \u3164\u314f\u315e\u3135 \u3164\u314f\u315e\u3136 \u3164\u314f\u315e\u3137 \u3164\u314f\u315e\u3138 \u3164\u314f\u315e\u3139 \u3164\u314f\u315e\u313a \u3164\u314f\u315e\u313b \u3164\u314f\u315e\u313c \u3164\u314f\u315e\u313d \u3164\u314f\u315e\u313e \u3164\u314f\u315e\u313f \u3164\u314f\u315e\u3140 \u3164\u314f\u315e\u3141 \u3164\u314f\u315e\u3142 \u3164\u314f\u315e\u3143 \u3164\u314f\u315e\u3144 \u3164\u314f\u315e\u3145 \u3164\u314f\u315e\u3146 \u3164\u314f\u315e\u3147 \u3164\u314f\u315e\u3148 \u3164\u314f\u315e\u3149 \u3164\u314f\u315e\u314a \u3164\u314f\u315e\u314b \u3164\u314f\u315e\u314c \u3164\u314f\u315e\u314d \u3164\u314f\u315e\u314e \u3164\u314f\u315e\u314f \u3164\u314f\u315e\u3164 ",
-" row bf_cf_: \u3164\u314f\u315f\uca46 \u3164\u314f\u315f\u3131 \u3164\u314f\u315f\u3132 \u3164\u314f\u315f\u3133 \u3164\u314f\u315f\u3134 \u3164\u314f\u315f\u3135 \u3164\u314f\u315f\u3136 \u3164\u314f\u315f\u3137 \u3164\u314f\u315f\u3138 \u3164\u314f\u315f\u3139 \u3164\u314f\u315f\u313a \u3164\u314f\u315f\u313b \u3164\u314f\u315f\u313c \u3164\u314f\u315f\u313d \u3164\u314f\u315f\u313e \u3164\u314f\u315f\u313f \u3164\u314f\u315f\u3140 \u3164\u314f\u315f\u3141 \u3164\u314f\u315f\u3142 \u3164\u314f\u315f\u3143 \u3164\u314f\u315f\u3144 \u3164\u314f\u315f\u3145 \u3164\u314f\u315f\u3146 \u3164\u314f\u315f\u3147 \u3164\u314f\u315f\u3148 \u3164\u314f\u315f\u3149 \u3164\u314f\u315f\u314a \u3164\u314f\u315f\u314b \u3164\u314f\u315f\u314c \u3164\u314f\u315f\u314d \u3164\u314f\u315f\u314e \u3164\u314f\u315f\u314f \u3164\u314f\u315f\u3164 ",
-" row bf_d0_: \u3164\u314f\u3160\uca46 \u3164\u314f\u3160\u3131 \u3164\u314f\u3160\u3132 \u3164\u314f\u3160\u3133 \u3164\u314f\u3160\u3134 \u3164\u314f\u3160\u3135 \u3164\u314f\u3160\u3136 \u3164\u314f\u3160\u3137 \u3164\u314f\u3160\u3138 \u3164\u314f\u3160\u3139 \u3164\u314f\u3160\u313a \u3164\u314f\u3160\u313b \u3164\u314f\u3160\u313c \u3164\u314f\u3160\u313d \u3164\u314f\u3160\u313e \u3164\u314f\u3160\u313f \u3164\u314f\u3160\u3140 \u3164\u314f\u3160\u3141 \u3164\u314f\u3160\u3142 \u3164\u314f\u3160\u3143 \u3164\u314f\u3160\u3144 \u3164\u314f\u3160\u3145 \u3164\u314f\u3160\u3146 \u3164\u314f\u3160\u3147 \u3164\u314f\u3160\u3148 \u3164\u314f\u3160\u3149 \u3164\u314f\u3160\u314a \u3164\u314f\u3160\u314b \u3164\u314f\u3160\u314c \u3164\u314f\u3160\u314d \u3164\u314f\u3160\u314e \u3164\u314f\u3160\u314f \u3164\u314f\u3160\u3164 ",
-" row bf_d1_: \u3164\u314f\u3161\uca46 \u3164\u314f\u3161\u3131 \u3164\u314f\u3161\u3132 \u3164\u314f\u3161\u3133 \u3164\u314f\u3161\u3134 \u3164\u314f\u3161\u3135 \u3164\u314f\u3161\u3136 \u3164\u314f\u3161\u3137 \u3164\u314f\u3161\u3138 \u3164\u314f\u3161\u3139 \u3164\u314f\u3161\u313a \u3164\u314f\u3161\u313b \u3164\u314f\u3161\u313c \u3164\u314f\u3161\u313d \u3164\u314f\u3161\u313e \u3164\u314f\u3161\u313f \u3164\u314f\u3161\u3140 \u3164\u314f\u3161\u3141 \u3164\u314f\u3161\u3142 \u3164\u314f\u3161\u3143 \u3164\u314f\u3161\u3144 \u3164\u314f\u3161\u3145 \u3164\u314f\u3161\u3146 \u3164\u314f\u3161\u3147 \u3164\u314f\u3161\u3148 \u3164\u314f\u3161\u3149 \u3164\u314f\u3161\u314a \u3164\u314f\u3161\u314b \u3164\u314f\u3161\u314c \u3164\u314f\u3161\u314d \u3164\u314f\u3161\u314e \u3164\u314f\u3161\u314f \u3164\u314f\u3161\u3164 ",
-" row bf_d2_: \u3164\u314f\u3162\uca46 \u3164\u314f\u3162\u3131 \u3164\u314f\u3162\u3132 \u3164\u314f\u3162\u3133 \u3164\u314f\u3162\u3134 \u3164\u314f\u3162\u3135 \u3164\u314f\u3162\u3136 \u3164\u314f\u3162\u3137 \u3164\u314f\u3162\u3138 \u3164\u314f\u3162\u3139 \u3164\u314f\u3162\u313a \u3164\u314f\u3162\u313b \u3164\u314f\u3162\u313c \u3164\u314f\u3162\u313d \u3164\u314f\u3162\u313e \u3164\u314f\u3162\u313f \u3164\u314f\u3162\u3140 \u3164\u314f\u3162\u3141 \u3164\u314f\u3162\u3142 \u3164\u314f\u3162\u3143 \u3164\u314f\u3162\u3144 \u3164\u314f\u3162\u3145 \u3164\u314f\u3162\u3146 \u3164\u314f\u3162\u3147 \u3164\u314f\u3162\u3148 \u3164\u314f\u3162\u3149 \u3164\u314f\u3162\u314a \u3164\u314f\u3162\u314b \u3164\u314f\u3162\u314c \u3164\u314f\u3162\u314d \u3164\u314f\u3162\u314e \u3164\u314f\u3162\u314f \u3164\u314f\u3162\u3164 ",
-" row bf_d3_: \u3164\u314f\u3163\uca46 \u3164\u314f\u3163\u3131 \u3164\u314f\u3163\u3132 \u3164\u314f\u3163\u3133 \u3164\u314f\u3163\u3134 \u3164\u314f\u3163\u3135 \u3164\u314f\u3163\u3136 \u3164\u314f\u3163\u3137 \u3164\u314f\u3163\u3138 \u3164\u314f\u3163\u3139 \u3164\u314f\u3163\u313a \u3164\u314f\u3163\u313b \u3164\u314f\u3163\u313c \u3164\u314f\u3163\u313d \u3164\u314f\u3163\u313e \u3164\u314f\u3163\u313f \u3164\u314f\u3163\u3140 \u3164\u314f\u3163\u3141 \u3164\u314f\u3163\u3142 \u3164\u314f\u3163\u3143 \u3164\u314f\u3163\u3144 \u3164\u314f\u3163\u3145 \u3164\u314f\u3163\u3146 \u3164\u314f\u3163\u3147 \u3164\u314f\u3163\u3148 \u3164\u314f\u3163\u3149 \u3164\u314f\u3163\u314a \u3164\u314f\u3163\u314b \u3164\u314f\u3163\u314c \u3164\u314f\u3163\u314d \u3164\u314f\u3163\u314e \u3164\u314f\u3163\u314f \u3164\u314f\u3163\u3164 ",
-" row bf_d4_: \u3164\u314f\u3164\uca46 \u3164\u314f\u3164\u3131 \u3164\u314f\u3164\u3132 \u3164\u314f\u3164\u3133 \u3164\u314f\u3164\u3134 \u3164\u314f\u3164\u3135 \u3164\u314f\u3164\u3136 \u3164\u314f\u3164\u3137 \u3164\u314f\u3164\u3138 \u3164\u314f\u3164\u3139 \u3164\u314f\u3164\u313a \u3164\u314f\u3164\u313b \u3164\u314f\u3164\u313c \u3164\u314f\u3164\u313d \u3164\u314f\u3164\u313e \u3164\u314f\u3164\u313f \u3164\u314f\u3164\u3140 \u3164\u314f\u3164\u3141 \u3164\u314f\u3164\u3142 \u3164\u314f\u3164\u3143 \u3164\u314f\u3164\u3144 \u3164\u314f\u3164\u3145 \u3164\u314f\u3164\u3146 \u3164\u314f\u3164\u3147 \u3164\u314f\u3164\u3148 \u3164\u314f\u3164\u3149 \u3164\u314f\u3164\u314a \u3164\u314f\u3164\u314b \u3164\u314f\u3164\u314c \u3164\u314f\u3164\u314d \u3164\u314f\u3164\u314e \u3164\u314f\u3164\u314f \u3164\u314f\u3164\u3164 ",
-    ];
-
deleted file mode 100644
--- a/intl/uconv/tests/unit/test_bug1008832.js
+++ /dev/null
@@ -1,13 +0,0 @@
-// Test case-insensitive internal encoding handling in nsIScriptableUConv
-	
-load('CharsetConversionTests.js');
-	
-const inString = " !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xaa\xab\xac\xad\xae\xaf\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff";
-    
-const expectedString = " !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\u00c4\ufb1f\u00c7\u00c9\u00d1\u00d6\u00dc\u00e1\u00e0\u00e2\u00e4\u00e3\u00e5\u00e7\u00e9\u00e8\u00ea\u00eb\u00ed\u00ec\u00ee\u00ef\u00f1\u00f3\u00f2\u00f4\u00f6\u00f5\u00fa\u00f9\u00fb\u00fc !\"#$%\u20aa'()*+,-./0123456789:;<=>?\ufffd\u201e\uf89b\uf89c\uf89d\uf89e\u05bc\ufb4b\ufb35\u2026\u00a0\u05b8\u05b7\u05b5\u05b6\u05b4\u2013\u2014\u201c\u201d\u2018\u2019\ufb2a\ufb2b\u05bf\u05b0\u05b2\u05b1\u05bb\u05b9\ufffd\u05b3\u05d0\u05d1\u05d2\u05d3\u05d4\u05d5\u05d6\u05d7\u05d8\u05d9\u05da\u05db\u05dc\u05dd\u05de\u05df\u05e0\u05e1\u05e2\u05e3\u05e4\u05e5\u05e6\u05e7\u05e8\u05e9\u05ea}]{[|";
-
-const aliases = [ "x-Mac-Hebrew" ];
-
-function run_test() {
-  testDecodeAliasesInternal();
-}
--- a/intl/uconv/tests/unit/test_bug116882.js
+++ b/intl/uconv/tests/unit/test_bug116882.js
@@ -1,13 +1,13 @@
 /* Tests conversion of undefined and illegal sequences from Shift-JIS
  *  to Unicode (bug 116882)
  */
 
 const inText = "\xfd\xfe\xff\x81\x20\x81\x3f\x86\x3c";
-const expectedText = "\uf8f1\uf8f2\uf8f3\ufffd \ufffd?\ufffd<";
+const expectedText = "\ufffd\ufffd\ufffd\ufffd \ufffd?\ufffd<";
 const charset = "Shift_JIS";
-    
+
 load('CharsetConversionTests.js');
 
 function run_test() {
   checkDecode(CreateScriptableConverter(), charset, inText, expectedText);
 }
--- a/intl/uconv/tests/unit/test_bug340714.js
+++ b/intl/uconv/tests/unit/test_bug340714.js
@@ -15,17 +15,17 @@ var Ci = Components.interfaces;
 var Cu = Components.utils;
 
 Cu.import("resource://gre/modules/NetUtil.jsm");
 
 const beBOM="%FE%FF";
 const leBOM="%FF%FE";
 const sampleUTF16BE="%00%22%04%12%04%41%04%35%00%20%04%41%04%47%04%30%04%41%04%42%04%3B%04%38%04%32%04%4B%04%35%00%20%04%41%04%35%04%3C%04%4C%04%38%00%20%04%3F%04%3E%04%45%04%3E%04%36%04%38%00%20%04%34%04%40%04%43%04%33%00%20%04%3D%04%30%00%20%04%34%04%40%04%43%04%33%04%30%00%2C%00%20%04%3A%04%30%04%36%04%34%04%30%04%4F%00%20%04%3D%04%35%04%41%04%47%04%30%04%41%04%42%04%3B%04%38%04%32%04%30%04%4F%00%20%04%41%04%35%04%3C%04%4C%04%4F%00%20%04%3D%04%35%04%41%04%47%04%30%04%41%04%42%04%3B%04%38%04%32%04%30%00%20%04%3F%04%3E%00%2D%04%41%04%32%04%3E%04%35%04%3C%04%43%00%2E%00%22";
 const sampleUTF16LE="%22%00%12%04%41%04%35%04%20%00%41%04%47%04%30%04%41%04%42%04%3B%04%38%04%32%04%4B%04%35%04%20%00%41%04%35%04%3C%04%4C%04%38%04%20%00%3F%04%3E%04%45%04%3E%04%36%04%38%04%20%00%34%04%40%04%43%04%33%04%20%00%3D%04%30%04%20%00%34%04%40%04%43%04%33%04%30%04%2C%00%20%00%3A%04%30%04%36%04%34%04%30%04%4F%04%20%00%3D%04%35%04%41%04%47%04%30%04%41%04%42%04%3B%04%38%04%32%04%30%04%4F%04%20%00%41%04%35%04%3C%04%4C%04%4F%04%20%00%3D%04%35%04%41%04%47%04%30%04%41%04%42%04%3B%04%38%04%32%04%30%04%20%00%3F%04%3E%04%2D%00%41%04%32%04%3E%04%35%04%3C%04%43%04%2E%00%22%00";
-const expected = "\"\u0412\u0441\u0435 \u0441\u0447\u0430\u0441\u0442\u043B\u0438\u0432\u044B\u0435 \u0441\u0435\u043C\u044C\u0438 \u043F\u043E\u0445\u043E\u0436\u0438 \u0434\u0440\u0443\u0433 \u043D\u0430 \u0434\u0440\u0443\u0433\u0430, \u043A\u0430\u0436\u0434\u0430\u044F \u043D\u0435\u0441\u0447\u0430\u0441\u0442\u043B\u0438\u0432\u0430\u044F \u0441\u0435\u043C\u044C\u044F \u043D\u0435\u0441\u0447\u0430\u0441\u0442\u043B\u0438\u0432\u0430 \u043F\u043E-\u0441\u0432\u043E\u0435\u043C\u0443.\""; 
+const expected = "\"\u0412\u0441\u0435 \u0441\u0447\u0430\u0441\u0442\u043B\u0438\u0432\u044B\u0435 \u0441\u0435\u043C\u044C\u0438 \u043F\u043E\u0445\u043E\u0436\u0438 \u0434\u0440\u0443\u0433 \u043D\u0430 \u0434\u0440\u0443\u0433\u0430, \u043A\u0430\u0436\u0434\u0430\u044F \u043D\u0435\u0441\u0447\u0430\u0441\u0442\u043B\u0438\u0432\u0430\u044F \u0441\u0435\u043C\u044C\u044F \u043D\u0435\u0441\u0447\u0430\u0441\u0442\u043B\u0438\u0432\u0430 \u043F\u043E-\u0441\u0432\u043E\u0435\u043C\u0443.\"";
 
 function makeText(withBOM, charset)
 {
   var theText = eval("sample" + charset);
   if (withBOM) {
     if (charset == "UTF16BE") {
       theText = beBOM + theText;
     } else {
@@ -80,25 +80,21 @@ function testCase(withBOM, charset, char
   // escape the strings before comparing for better readability
   do_check_eq(escape(outStr), escape(expected));
 }
 
 function run_test()
 {
     /*       BOM    charset    charset   decoder     buffer
                                declaration           length */
-    testCase(true,  "UTF16LE", "UTF-16", "UTF-16",   64);
-    testCase(true,  "UTF16BE", "UTF-16", "UTF-16",   64);
+    testCase(true,  "UTF16LE", "UTF-16", "UTF-16BE", 64);
+    testCase(true,  "UTF16BE", "UTF-16", "UTF-16LE", 64);
     testCase(true,  "UTF16LE", "UTF-16", "UTF-16LE", 64);
     testCase(true,  "UTF16BE", "UTF-16", "UTF-16BE", 64);
-    testCase(false, "UTF16LE", "UTF-16", "UTF-16",   64);
-    testCase(false, "UTF16BE", "UTF-16", "UTF-16",   64);
     testCase(false, "UTF16LE", "UTF-16", "UTF-16LE", 64);
     testCase(false, "UTF16BE", "UTF-16", "UTF-16BE", 64);
-    testCase(true,  "UTF16LE", "UTF-16", "UTF-16",   65);
-    testCase(true,  "UTF16BE", "UTF-16", "UTF-16",   65);
+    testCase(true,  "UTF16LE", "UTF-16", "UTF-16BE", 65);
+    testCase(true,  "UTF16BE", "UTF-16", "UTF-16LE", 65);
     testCase(true,  "UTF16LE", "UTF-16", "UTF-16LE", 65);
     testCase(true,  "UTF16BE", "UTF-16", "UTF-16BE", 65);
-    testCase(false, "UTF16LE", "UTF-16", "UTF-16",   65);
-    testCase(false, "UTF16BE", "UTF-16", "UTF-16",   65);
     testCase(false, "UTF16LE", "UTF-16", "UTF-16LE", 65);
     testCase(false, "UTF16BE", "UTF-16", "UTF-16BE", 65);
 }
--- a/intl/uconv/tests/unit/test_bug563283.js
+++ b/intl/uconv/tests/unit/test_bug563283.js
@@ -6,46 +6,46 @@ const inStrings = [
 // 。「」、・ヲァィゥェォャュョッーアイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワン゙゚
   "\uFF61\uFF62\uFF63\uFF64\uFF65\uFF66\uFF67\uFF68\uFF69\uFF6A\uFF6B\uFF6C\uFF6D\uFF6E\uFF6F\uFF70\uFF71\uFF72\uFF73\uFF74\uFF75\uFF76\uFF77\uFF78\uFF79\uFF7A\uFF7B\uFF7C\uFF7D\uFF7E\uFF7F\uFF80\uFF81\uFF82\uFF83\uFF84\uFF85\uFF86\uFF87\uFF88\uFF89\uFF8A\uFF8B\uFF8C\uFF8D\uFF8E\uFF8F\uFF90\uFF91\uFF92\uFF93\uFF94\uFF95\uFF96\uFF97\uFF98\uFF99\uFF9A\uFF9B\uFF9C\uFF9D\uFF9E\uFF9F",
 // equivalent to
 // 。「」、・ヲァィゥェォャュョッーアイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワン゛゜
 // \u3002\u300c\u300d\u3001\u30fb\u30f2\u30a1\u30a3\u30a5\u30a7\u30a9\u30e3\u30e5\u30e7\u30c3\u30fc\u30a2\u30a4\u30a6\u30a8\u30aa\u30ab\u30ad\u30af\u30b1\u30b3\u30b5\u30b7\u30b9\u30bb\u30bd\u30bf\u30c1\u30c4\u30c6\u30c8\u30ca\u30cb\u30cc\u30cd\u30ce\u30cf\u30d2\u30d5\u30d8\u30db\u30de\u30df\u30e0\u30e1\u30e2\u30e4\u30e6\u30e8\u30e9\u30ea\u30eb\u30ec\u30ed\u30ef\u30f3\u309b\u309c"
 
 // ガギグゲゴザジズゼゾダヂヅデドバビブベボ
   "\uFF76\uFF9E\uFF77\uFF9E\uFF78\uFF9E\uFF79\uFF9E\uFF7A\uFF9E\uFF7B\uFF9E\uFF7C\uFF9E\uFF7D\uFF9E\uFF7E\uFF9E\uFF7F\uFF9E\uFF80\uFF9E\uFF81\uFF9E\uFF82\uFF9E\uFF83\uFF9E\uFF84\uFF9E\uFF8A\uFF9E\uFF8B\uFF9E\uFF8C\uFF9E\uFF8D\uFF9E\uFF8E\uFF9E",
-// equivalent to 
-// ガギゲゴザジズゼゾダヂヅデドバビブベボ
-// \u30AC\u30AE\u30B2\u30B4\u30B6\u30B8\u30BA\u30BC\u30BE\u30C0\u30C2\u30C5\u30C7\u30C9\u30D0\u30D3\u30D6\u30D9\u30DC
+// equivalent to
+// カ゛キ゛ク゛ケ゛コ゛サ゛シ゛ス゛セ゛ソ゛タ゛チ゛ツ゛テ゛ト゛ハ゛ヒ゛フ゛ヘ゛ホ゛
+// \u30AB\u309B\u30AD\u309B\u30AF\u309B\u30B1\u309B\u30B3\u309B\u30B5\u309B\u30B7\u309B\u30B9\u309B\u30BB\u309B\u30BD\u309B\u30BF\u309B\u30C1\u309B\u30C4\u309B\u30C6\u309B\u30C8\u309B\u30CF\u309B\u30D2\u309B\u30D5\u309B\u30D8\u309B\u30DB\u309B
 
 // パピプペポ
   "\uFF8A\uFF9F\uFF8B\uFF9F\uFF8C\uFF9F\uFF8D\uFF9F\uFF8E\uFF9F",
-// equivalent to 
-// パピプペポ
-// \u30D1\u30D4\u30D7\u30DA\u30DD"
+// equivalent to
+// ハ゜ヒ゜フ゜ヘ゜ホ゜
+// \u30CF\u309C\u30D2\u309C\u30D5\u309C\u30D8\u309C\u30DB\u309C"
 
 // Hankaku preceded and followed by regular Katakana (no change of charset)
 // フランツ・ヨーゼフ・ハイドン
   "\u30D5\u30E9\u30F3\u30C4\u30FB\uFF96\uFF70\uFF7E\uFF9E\uFF8C\u30FB\u30CF\u30A4\u30C9\u30F3",
 
 // Hankaku preceded and followed by Roman (charset change)
 // Mozilla (モジラ) Foundation
   "Mozilla (\uFF93\uFF7C\uFF9E\uFF97) Foundation",
 
 // Hankaku preceded and followed by unencodable characters
 // दिल्ली・デリー・ਦਿੱਲੀ
 "\u0926\u093F\u0932\u094D\u0932\u0940\uFF65\uFF83\uFF9E\uFF98\uFF70\uFF65\u0A26\u0A3F\u0A71\u0A32\u0A40"
                    ];
 
 const expectedStrings = [
                          "\x1B$B!#!V!W!\x22!&%r%!%#%%%'%)%c%e%g%C!<%\x22%$%&%(%*%+%-%/%1%3%5%7%9%;%=%?%A%D%F%H%J%K%L%M%N%O%R%U%X%[%^%_%`%a%b%d%f%h%i%j%k%l%m%o%s!+!,\x1B(B",
-                         "\x1B$B%,%.%0%2%4%6%8%:%<%>%@%B%E%G%I%P%S%V%Y%\x5C\x1B(B",
-                         "\x1B$B%Q%T%W%Z%]\x1B(B",
-			 "\x1B$B%U%i%s%D!&%h!<%<%U!&%O%$%I%s\x1B(B",
-			 "Mozilla (\x1B$B%b%8%i\x1B(B) Foundation",
-			 "??????\x1B$B!&%G%j!<!&\x1B(B?????"
+                         "\x1B$B%+!+%-!+%/!+%1!+%3!+%5!+%7!+%9!+%;!+%=!+%?!+%A!+%D!+%F!+%H!+%O!+%R!+%U!+%X!+%[!+\x1B(B",
+                         "\x1B$B%O!,%R!,%U!,%X!,%[!,\x1B(B",
+			 "\x1B$B%U%i%s%D!&%h!<%;!+%U!&%O%$%I%s\x1B(B",
+			 "Mozilla (\x1B$B%b%7!+%i\x1B(B) Foundation",
+			 "??????\x1B$B!&%F!+%j!<!&\x1B(B?????"
 			 ];
 
 function run_test()
 {
     for (var i = 0; i < inStrings.length; ++i) {
         checkEncode(CreateScriptableConverter(), "ISO-2022-JP",
                     inStrings[i], expectedStrings[i]);
     }
--- a/intl/uconv/tests/unit/test_charset_conversion.js
+++ b/intl/uconv/tests/unit/test_charset_conversion.js
@@ -29,19 +29,16 @@ function run_test()
                                "init");
   CIS = Components.Constructor("@mozilla.org/intl/converter-input-stream;1",
                                "nsIConverterInputStream",
                                "init");
 
   dataDir = do_get_file("data/");
 
   test_utf8_1();
-  test_utf16_1();
-  test_utf16_2();
-  test_utf16_3();
   test_cross_conversion();
 }
 
 const UNICODE_STRINGS =
   [
     '\u00BD + \u00BE == \u00BD\u00B2 + \u00BC + \u00BE',
 
     'AZaz09 \u007F ' +               // U+000000 to U+00007F
@@ -77,61 +74,16 @@ function test_utf8_1()
     conv.close();
 
     if (!equalStreams(new UTF8(pipe.inputStream),
                stringToCodePoints(UNICODE_STRINGS[i])))
       do_throw("UNICODE_STRINGS[" + i + "] not handled correctly");
   }
 }
 
-function test_utf16_1()
-{
-  for (var i = 0; i < UNICODE_STRINGS.length; i++)
-  {
-    var pipe = Pipe();
-    var conv = new COS(pipe.outputStream, "UTF-16", 1024, 0x0);
-    do_check_true(conv.writeString(UNICODE_STRINGS[i]));
-    conv.close();
-
-    if (!equalStreams(new UTF16(pipe.inputStream),
-               stringToCodePoints(UNICODE_STRINGS[i])))
-      do_throw("UNICODE_STRINGS[" + i + "] not handled correctly");
-  }
-}
-
-function test_utf16_2()
-{
-  for (var i = 0; i < UNICODE_STRINGS.length; i++)
-  {
-    var pipe = Pipe();
-    var conv = new COS(pipe.outputStream, "UTF-16LE", 1024, 0x0);
-    do_check_true(conv.writeString(UNICODE_STRINGS[i]));
-    conv.close();
-
-    if (!equalStreams(new UTF16(pipe.inputStream, false),
-               stringToCodePoints(UNICODE_STRINGS[i])))
-      do_throw("UNICODE_STRINGS[" + i + "] not handled correctly");
-  }
-}
-
-function test_utf16_3()
-{
-  for (var i = 0; i < UNICODE_STRINGS.length; i++)
-  {
-    var pipe = Pipe();
-    var conv = new COS(pipe.outputStream, "UTF-16BE", 1024, 0x0);
-    do_check_true(conv.writeString(UNICODE_STRINGS[i]));
-    conv.close();
-
-    if (!equalStreams(new UTF16(pipe.inputStream, true),
-               stringToCodePoints(UNICODE_STRINGS[i])))
-      do_throw("UNICODE_STRINGS[" + i + "] not handled correctly");
-  }
-}
-
 
 function test_cross_conversion()
 {
   for (var fn1 in UNICODE_FILES)
   {
     var fin = getBinaryInputStream(fn1);
     var ss = StorageStream();
 
deleted file mode 100644
--- a/intl/uconv/tests/unit/test_decode_EUCKR_Hangul.js
+++ /dev/null
@@ -1,31 +0,0 @@
-// Tests conversion of 8-byte decomposed Hangul from EUC-KR (and variants)
-// to Unicode, including invalid input
-        
-load('CharsetConversionTests.js');
-load('hangulTestStrings.js');
-
-const aliases = [ "euc-kr", "EUC-KR", "iso-ir-149", "ks_c_5601-1989", "ksc_5601", "ksc5601", "korean", "csksc56011987", "windows-949", "ks_c_5601-1987", "cseuckr"];
-
-function to8byteHangul(byte3, byte5, byte7)
-{
-    return String.fromCharCode(0xa4, 0xd4, 0xa4, byte3, 0xa4, byte5, 0xa4, byte7);
-}
-
-function run_test() {
-    var converter = CreateScriptableConverter();
-    for (var i = 0; i < aliases.length; ++i) {
-        var row = 0;
-        for (var byte3 = 0xa0; byte3 < 0xc0; ++byte3) {
-            for (var byte5 = 0xbe; byte5 < 0xd5; ++byte5) {
-                var inString = " row " + byte3.toString(16) + "_" +
-                    byte5.toString(16) + "_: ";
-                for (var byte7 = 0xa0; byte7 < 0xc0; ++byte7) {
-                    inString += to8byteHangul(byte3, byte5, byte7) + " ";
-                }
-                inString += to8byteHangul(byte3, byte5, 0xd4) + " ";
-                checkDecode(converter, aliases[i], inString, expectedStrings[row++]);
-            }
-        }
-        do_check_eq(row, expectedStrings.length);
-    }
-}
deleted file mode 100644
--- a/intl/uconv/tests/unit/test_decode_x_mac_arabic.js
+++ /dev/null
@@ -1,15 +0,0 @@
-// Tests conversion from x-mac-arabic to Unicode
-// Support for this charset was removed in bug 601429, so it should fall back
-// to default.
-	
-load('CharsetConversionTests.js');
-	
-const inString = " !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xaa\xab\xac\xad\xae\xaf\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff";
-    
-const expectedString = " !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\u00a0\u00a1\u00a2\u00a3\u00a4\u00a5\u00a6\u00a7\u00a8\u00a9\u00aa\u00ab\u00ac\u00ad\u00ae\u00af\u00b0\u00b1\u00b2\u00b3\u00b4\u00b5\u00b6\u00b7\u00b8\u00b9\u00ba\u00bb\u00bc\u00bd\u00be\u00bf\u00c0\u00c1\u00c2\u00c3\u00c4\u00c5\u00c6\u00c7\u00c8\u00c9\u00ca\u00cb\u00cc\u00cd\u00ce\u00cf\u00d0\u00d1\u00d2\u00d3\u00d4\u00d5\u00d6\u00d7\u00d8\u00d9\u00da\u00db\u00dc\u00dd\u00de\u00df\u00e0\u00e1\u00e2\u00e3\u00e4\u00e5\u00e6\u00e7\u00e8\u00e9\u00ea\u00eb\u00ec\u00ed\u00ee\u00ef\u00f0\u00f1\u00f2\u00f3\u00f4\u00f5\u00f6\u00f7\u00f8\u00f9\u00fa\u00fb\u00fc\u00fd\u00fe\u00ff";
-
-const aliases = [ "x-mac-arabic" ];
-
-function run_test() {
-  testDecodeAliases();
-}
deleted file mode 100644
--- a/intl/uconv/tests/unit/test_decode_x_mac_arabic_internal.js
+++ /dev/null
@@ -1,13 +0,0 @@
-// Tests conversion from x-mac-arabic to Unicode
-	
-load('CharsetConversionTests.js');
-	
-const inString = " !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xaa\xab\xac\xad\xae\xaf\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff";
-    
-const expectedString = " !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\u00c4\u00a0\u00c7\u00c9\u00d1\u00d6\u00dc\u00e1\u00e0\u00e2\u00e4\u06ba\u00ab\u00e7\u00e9\u00e8\u00ea\u00eb\u00ed\u2026\u00ee\u00ef\u00f1\u00f3\u00bb\u00f4\u00f6\u00f7\u00fa\u00f9\u00fb\u00fc !\"#$\u066a&'()*+\u060c-./\u0660\u0661\u0662\u0663\u0664\u0665\u0666\u0667\u0668\u0669:\u061b<=>\u061f\u274a\u0621\u0622\u0623\u0624\u0625\u0626\u0627\u0628\u0629\u062a\u062b\u062c\u062d\u062e\u062f\u0630\u0631\u0632\u0633\u0634\u0635\u0636\u0637\u0638\u0639\u063a[\\]^_\u0640\u0641\u0642\u0643\u0644\u0645\u0646\u0647\u0648\u0649\u064a\u064b\u064c\u064d\u064e\u064f\u0650\u0651\u0652\u067e\u0679\u0686\u06d5\u06a4\u06af\u0688\u0691{|}\u0698\u06d2";
-
-const aliases = [ "x-mac-arabic" ];
-
-function run_test() {
-  testDecodeAliasesInternal();
-}
deleted file mode 100644
--- a/intl/uconv/tests/unit/test_decode_x_mac_ce.js
+++ /dev/null
@@ -1,13 +0,0 @@
-// Tests conversion from x-mac-ce to Unicode
-	
-load('CharsetConversionTests.js');
-	
-const inString = " !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xaa\xab\xac\xad\xae\xaf\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff";
-    
-const expectedString = " !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\u00c4\u0100\u0101\u00c9\u0104\u00d6\u00dc\u00e1\u0105\u010c\u00e4\u010d\u0106\u0107\u00e9\u0179\u017a\u010e\u00ed\u010f\u0112\u0113\u0116\u00f3\u0117\u00f4\u00f6\u00f5\u00fa\u011a\u011b\u00fc\u2020\u00b0\u0118\u00a3\u00a7\u2022\u00b6\u00df\u00ae\u00a9\u2122\u0119\u00a8\u2260\u0123\u012e\u012f\u012a\u2264\u2265\u012b\u0136\u2202\u2211\u0142\u013b\u013c\u013d\u013e\u0139\u013a\u0145\u0146\u0143\u00ac\u221a\u0144\u0147\u2206\u00ab\u00bb\u2026\u00a0\u0148\u0150\u00d5\u0151\u014c\u2013\u2014\u201c\u201d\u2018\u2019\u00f7\u25ca\u014d\u0154\u0155\u0158\u2039\u203a\u0159\u0156\u0157\u0160\u201a\u201e\u0161\u015a\u015b\u00c1\u0164\u0165\u00cd\u017d\u017e\u016a\u00d3\u00d4\u016b\u016e\u00da\u016f\u0170\u0171\u0172\u0173\u00dd\u00fd\u0137\u017b\u0141\u017c\u0122\u02c7";
-
-const aliases = [ "x-mac-ce" ];
-
-function run_test() {
-  testDecodeAliasesInternal();
-}
deleted file mode 100644
--- a/intl/uconv/tests/unit/test_decode_x_mac_croatian.js
+++ /dev/null
@@ -1,13 +0,0 @@
-// Tests conversion from x-mac-croatian to Unicode
-	
-load('CharsetConversionTests.js');
-	
-const inString = " !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xaa\xab\xac\xad\xae\xaf\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff";
-    
-const expectedString = " !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\u00c4\u00c5\u00c7\u00c9\u00d1\u00d6\u00dc\u00e1\u00e0\u00e2\u00e4\u00e3\u00e5\u00e7\u00e9\u00e8\u00ea\u00eb\u00ed\u00ec\u00ee\u00ef\u00f1\u00f3\u00f2\u00f4\u00f6\u00f5\u00fa\u00f9\u00fb\u00fc\u2020\u00b0\u00a2\u00a3\u00a7\u2022\u00b6\u00df\u00ae\u0160\u2122\u00b4\u00a8\u2260\u017d\u00d8\u221e\u00b1\u2264\u2265\u2206\u00b5\u2202\u2211\u220f\u0161\u222b\u00aa\u00ba\u03a9\u017e\u00f8\u00bf\u00a1\u00ac\u221a\u0192\u2248\u0106\u00ab\u010c\u2026\u00a0\u00c0\u00c3\u00d5\u0152\u0153\u0110\u2014\u201c\u201d\u2018\u2019\u00f7\u25ca\uf8ff\u00a9\u2044\u20ac\u2039\u203a\u00c6\u00bb\u2013\u00b7\u201a\u201e\u2030\u00c2\u0107\u00c1\u010d\u00c8\u00cd\u00ce\u00cf\u00cc\u00d3\u00d4\u0111\u00d2\u00da\u00db\u00d9\u0131\u02c6\u02dc\u00af\u03c0\u00cb\u02da\u00b8\u00ca\u00e6\u02c7";
-
-const aliases = [ "x-mac-croatian" ];
-
-function run_test() {
-  testDecodeAliasesInternal();
-}
deleted file mode 100644
--- a/intl/uconv/tests/unit/test_decode_x_mac_devanagari.js
+++ /dev/null
@@ -1,13 +0,0 @@
-// Tests conversion from x-mac-devanagari to Unicode
-	
-load('CharsetConversionTests.js');
-	
-const inString = " !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x90\x91\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xaa\xab\xac\xad\xae\xaf\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa";
-    
-const expectedString = " !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\u00d7\u2212\u2013\u2014\u2018\u2019\u2026\u2022\u00a9\u00ae\u2122\u0965\u0970\u0901\u0902\u0903\u0905\u0906\u0907\u0908\u0909\u090a\u090b\u090e\u090f\u0910\u090d\u0912\u0913\u0914\u0911\u0915\u0916\u0917\u0918\u0919\u091a\u091b\u091c\u091d\u091e\u091f\u0920\u0921\u0922\u0923\u0924\u0925\u0926\u0927\u0928\u0929\u092a\u092b\u092c\u092d\u092e\u092f\u095f\u0930\u0931\u0932\u0933\u0934\u0935\u0936\u0937\u0938\u0939\u200e\u093e\u093f\u0940\u0941\u0942\u0943\u0946\u0947\u0948\u0945\u094a\u094b\u094c\u0949\u094d\u093c\u0964\u0966\u0967\u0968\u0969\u096a\u096b\u096c\u096d\u096e\u096f";
-
-const aliases = [ "x-mac-devanagari" ];
-
-function run_test() {
-  testDecodeAliasesInternal();
-}
deleted file mode 100644
--- a/intl/uconv/tests/unit/test_decode_x_mac_farsi.js
+++ /dev/null
@@ -1,15 +0,0 @@
-// Tests conversion from x-mac-farsi to Unicode
-// Support for this charset was removed in bug 601429, so it should fall back
-// to default.
-	
-load('CharsetConversionTests.js');
-	
-const inString = " !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xaa\xab\xac\xad\xae\xaf\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff";
-    
-const expectedString = " !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\u00a0\u00a1\u00a2\u00a3\u00a4\u00a5\u00a6\u00a7\u00a8\u00a9\u00aa\u00ab\u00ac\u00ad\u00ae\u00af\u00b0\u00b1\u00b2\u00b3\u00b4\u00b5\u00b6\u00b7\u00b8\u00b9\u00ba\u00bb\u00bc\u00bd\u00be\u00bf\u00c0\u00c1\u00c2\u00c3\u00c4\u00c5\u00c6\u00c7\u00c8\u00c9\u00ca\u00cb\u00cc\u00cd\u00ce\u00cf\u00d0\u00d1\u00d2\u00d3\u00d4\u00d5\u00d6\u00d7\u00d8\u00d9\u00da\u00db\u00dc\u00dd\u00de\u00df\u00e0\u00e1\u00e2\u00e3\u00e4\u00e5\u00e6\u00e7\u00e8\u00e9\u00ea\u00eb\u00ec\u00ed\u00ee\u00ef\u00f0\u00f1\u00f2\u00f3\u00f4\u00f5\u00f6\u00f7\u00f8\u00f9\u00fa\u00fb\u00fc\u00fd\u00fe\u00ff";
-
-const aliases = [ "x-mac-farsi" ];
-
-function run_test() {
-  testDecodeAliases();
-}
deleted file mode 100644
--- a/intl/uconv/tests/unit/test_decode_x_mac_farsi_internal.js
+++ /dev/null
@@ -1,13 +0,0 @@
-// Tests conversion from x-mac-farsi to Unicode
-	
-load('CharsetConversionTests.js');
-	
-const inString = " !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xaa\xab\xac\xad\xae\xaf\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff";
-    
-const expectedString = " !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\u00c4\u00a0\u00c7\u00c9\u00d1\u00d6\u00dc\u00e1\u00e0\u00e2\u00e4\u06ba\u00ab\u00e7\u00e9\u00e8\u00ea\u00eb\u00ed\u2026\u00ee\u00ef\u00f1\u00f3\u00bb\u00f4\u00f6\u00f7\u00fa\u00f9\u00fb\u00fc !\"#$\u066a&'()*+\u060c-./\u06f0\u06f1\u06f2\u06f3\u06f4\u06f5\u06f6\u06f7\u06f8\u06f9:\u061b<=>\u061f\u274a\u0621\u0622\u0623\u0624\u0625\u0626\u0627\u0628\u0629\u062a\u062b\u062c\u062d\u062e\u062f\u0630\u0631\u0632\u0633\u0634\u0635\u0636\u0637\u0638\u0639\u063a[\\]^_\u0640\u0641\u0642\u0643\u0644\u0645\u0646\u0647\u0648\u0649\u064a\u064b\u064c\u064d\u064e\u064f\u0650\u0651\u0652\u067e\u0679\u0686\u06d5\u06a4\u06af\u0688\u0691{|}\u0698\u06d2";
-
-const aliases = [ "x-mac-farsi" ];
-
-function run_test() {
-  testDecodeAliasesInternal();
-}
deleted file mode 100644
--- a/intl/uconv/tests/unit/test_decode_x_mac_greek.js
+++ /dev/null
@@ -1,13 +0,0 @@
-// Tests conversion from x-mac-greek to Unicode
-	
-load('CharsetConversionTests.js');
-	
-const inString = " !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xaa\xab\xac\xad\xae\xaf\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff";
-    
-const expectedString = " !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\u00c4\u00b9\u00b2\u00c9\u00b3\u00d6\u00dc\u0385\u00e0\u00e2\u00e4\u0384\u00a8\u00e7\u00e9\u00e8\u00ea\u00eb\u00a3\u2122\u00ee\u00ef\u2022\u00bd\u2030\u00f4\u00f6\u00a6\u20ac\u00f9\u00fb\u00fc\u2020\u0393\u0394\u0398\u039b\u039e\u03a0\u00df\u00ae\u00a9\u03a3\u03aa\u00a7\u2260\u00b0\u00b7\u0391\u00b1\u2264\u2265\u00a5\u0392\u0395\u0396\u0397\u0399\u039a\u039c\u03a6\u03ab\u03a8\u03a9\u03ac\u039d\u00ac\u039f\u03a1\u2248\u03a4\u00ab\u00bb\u2026\u00a0\u03a5\u03a7\u0386\u0388\u0153\u2013\u2015\u201c\u201d\u2018\u2019\u00f7\u0389\u038a\u038c\u038e\u03ad\u03ae\u03af\u03cc\u038f\u03cd\u03b1\u03b2\u03c8\u03b4\u03b5\u03c6\u03b3\u03b7\u03b9\u03be\u03ba\u03bb\u03bc\u03bd\u03bf\u03c0\u03ce\u03c1\u03c3\u03c4\u03b8\u03c9\u03c2\u03c7\u03c5\u03b6\u03ca\u03cb\u0390\u03b0\u00ad";
-
-const aliases = [ "x-mac-greek" ];
-
-function run_test() {
-  testDecodeAliasesInternal();
-}
deleted file mode 100644
--- a/intl/uconv/tests/unit/test_decode_x_mac_gujarati.js
+++ /dev/null
@@ -1,13 +0,0 @@
-// Tests conversion from x-mac-gujarati to Unicode
-	
-load('CharsetConversionTests.js');
-	
-const inString = " !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x90\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xaa\xac\xad\xae\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc8\xc9\xca\xcb\xcc\xcd\xcf\xd1\xd2\xd4\xd5\xd6\xd7\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf\xe1\xe2\xe3\xe5\xe6\xe7\xe8\xe9\xea\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa";
-    
-const expectedString = " !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\u00d7\u2212\u2013\u2014\u2018\u2019\u2026\u2022\u00a9\u00ae\u2122\u0965\u0a81\u0a82\u0a83\u0a85\u0a86\u0a87\u0a88\u0a89\u0a8a\u0a8b\u0a8f\u0a90\u0a8d\u0a93\u0a94\u0a91\u0a95\u0a96\u0a97\u0a98\u0a99\u0a9a\u0a9b\u0a9c\u0a9d\u0a9e\u0a9f\u0aa0\u0aa1\u0aa2\u0aa3\u0aa4\u0aa5\u0aa6\u0aa7\u0aa8\u0aaa\u0aab\u0aac\u0aad\u0aae\u0aaf\u0ab0\u0ab2\u0ab3\u0ab5\u0ab6\u0ab7\u0ab8\u0ab9\u200e\u0abe\u0abf\u0ac0\u0ac1\u0ac2\u0ac3\u0ac7\u0ac8\u0ac5\u0acb\u0acc\u0ac9\u0acd\u0abc\u0964\u0ae6\u0ae7\u0ae8\u0ae9\u0aea\u0aeb\u0aec\u0aed\u0aee\u0aef";
-
-const aliases = [ "x-mac-gujarati" ];
-
-function run_test() {
-  testDecodeAliasesInternal();
-}
deleted file mode 100644
--- a/intl/uconv/tests/unit/test_decode_x_mac_gurmukhi.js
+++ /dev/null
@@ -1,13 +0,0 @@
-// Tests conversion from x-mac-gurmukhi to Unicode
-	
-load('CharsetConversionTests.js');
-	
-const inString = " !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x90\x91\x92\x93\x94\xa2\xa4\xa5\xa6\xa7\xa8\xa9\xac\xad\xb0\xb1\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc8\xc9\xca\xcb\xcc\xcd\xcf\xd1\xd4\xd5\xd7\xd8\xd9\xda\xdb\xdc\xdd\xde\xe1\xe2\xe5\xe6\xe8\xe9\xea\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa";
-    
-const expectedString = " !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\u00d7\u2212\u2013\u2014\u2018\u2019\u2026\u2022\u00a9\u00ae\u2122\u0a71\u0a5c\u0a73\u0a72\u0a74\u0a02\u0a05\u0a06\u0a07\u0a08\u0a09\u0a0a\u0a0f\u0a10\u0a13\u0a14\u0a15\u0a16\u0a17\u0a18\u0a19\u0a1a\u0a1b\u0a1c\u0a1d\u0a1e\u0a1f\u0a20\u0a21\u0a22\u0a23\u0a24\u0a25\u0a26\u0a27\u0a28\u0a2a\u0a2b\u0a2c\u0a2d\u0a2e\u0a2f\u0a30\u0a32\u0a35\uf860\u0a38\u0a39\u200e\u0a3e\u0a3f\u0a40\u0a41\u0a42\u0a47\u0a48\u0a4b\u0a4c\u0a4d\u0a3c\u0964\u0a66\u0a67\u0a68\u0a69\u0a6a\u0a6b\u0a6c\u0a6d\u0a6e\u0a6f";
-
-const aliases = [ "x-mac-gurmukhi" ];
-
-function run_test() {
-  testDecodeAliasesInternal();
-}
deleted file mode 100644
--- a/intl/uconv/tests/unit/test_decode_x_mac_hebrew.js
+++ /dev/null
@@ -1,15 +0,0 @@
-// Tests conversion from x-mac-hebrew to Unicode
-// Support for this charset was removed in bug 601429, so it should fall back
-// to default.
-	
-load('CharsetConversionTests.js');
-	
-const inString = " !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xaa\xab\xac\xad\xae\xaf\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff";
-    
-const expectedString = " !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\u00a0\u00a1\u00a2\u00a3\u00a4\u00a5\u00a6\u00a7\u00a8\u00a9\u00aa\u00ab\u00ac\u00ad\u00ae\u00af\u00b0\u00b1\u00b2\u00b3\u00b4\u00b5\u00b6\u00b7\u00b8\u00b9\u00ba\u00bb\u00bc\u00bd\u00be\u00bf\u00c0\u00c1\u00c2\u00c3\u00c4\u00c5\u00c6\u00c7\u00c8\u00c9\u00ca\u00cb\u00cc\u00cd\u00ce\u00cf\u00d0\u00d1\u00d2\u00d3\u00d4\u00d5\u00d6\u00d7\u00d8\u00d9\u00da\u00db\u00dc\u00dd\u00de\u00df\u00e0\u00e1\u00e2\u00e3\u00e4\u00e5\u00e6\u00e7\u00e8\u00e9\u00ea\u00eb\u00ec\u00ed\u00ee\u00ef\u00f0\u00f1\u00f2\u00f3\u00f4\u00f5\u00f6\u00f7\u00f8\u00f9\u00fa\u00fb\u00fc\u00fd\u00fe\u00ff";
-
-const aliases = [ "x-mac-hebrew" ];
-
-function run_test() {
-  testDecodeAliases();
-}
deleted file mode 100644
--- a/intl/uconv/tests/unit/test_decode_x_mac_hebrew_internal.js
+++ /dev/null
@@ -1,13 +0,0 @@
-// Tests conversion from x-mac-hebrew to Unicode
-	
-load('CharsetConversionTests.js');
-	
-const inString = " !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xaa\xab\xac\xad\xae\xaf\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff";
-    
-const expectedString = " !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\u00c4\ufb1f\u00c7\u00c9\u00d1\u00d6\u00dc\u00e1\u00e0\u00e2\u00e4\u00e3\u00e5\u00e7\u00e9\u00e8\u00ea\u00eb\u00ed\u00ec\u00ee\u00ef\u00f1\u00f3\u00f2\u00f4\u00f6\u00f5\u00fa\u00f9\u00fb\u00fc !\"#$%\u20aa'()*+,-./0123456789:;<=>?\ufffd\u201e\uf89b\uf89c\uf89d\uf89e\u05bc\ufb4b\ufb35\u2026\u00a0\u05b8\u05b7\u05b5\u05b6\u05b4\u2013\u2014\u201c\u201d\u2018\u2019\ufb2a\ufb2b\u05bf\u05b0\u05b2\u05b1\u05bb\u05b9\ufffd\u05b3\u05d0\u05d1\u05d2\u05d3\u05d4\u05d5\u05d6\u05d7\u05d8\u05d9\u05da\u05db\u05dc\u05dd\u05de\u05df\u05e0\u05e1\u05e2\u05e3\u05e4\u05e5\u05e6\u05e7\u05e8\u05e9\u05ea}]{[|";
-
-const aliases = [ "x-mac-hebrew" ];
-
-function run_test() {
-  testDecodeAliasesInternal();
-}
deleted file mode 100644
--- a/intl/uconv/tests/unit/test_decode_x_mac_icelandic.js
+++ /dev/null
@@ -1,13 +0,0 @@
-// Tests conversion from x-mac-icelandic to Unicode
-	
-load('CharsetConversionTests.js');
-	
-const inString = " !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xaa\xab\xac\xad\xae\xaf\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff";
-    
-const expectedString = " !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\u00c4\u00c5\u00c7\u00c9\u00d1\u00d6\u00dc\u00e1\u00e0\u00e2\u00e4\u00e3\u00e5\u00e7\u00e9\u00e8\u00ea\u00eb\u00ed\u00ec\u00ee\u00ef\u00f1\u00f3\u00f2\u00f4\u00f6\u00f5\u00fa\u00f9\u00fb\u00fc\u00dd\u00b0\u00a2\u00a3\u00a7\u2022\u00b6\u00df\u00ae\u00a9\u2122\u00b4\u00a8\u2260\u00c6\u00d8\u221e\u00b1\u2264\u2265\u00a5\u00b5\u2202\u2211\u220f\u03c0\u222b\u00aa\u00ba\u03a9\u00e6\u00f8\u00bf\u00a1\u00ac\u221a\u0192\u2248\u2206\u00ab\u00bb\u2026\u00a0\u00c0\u00c3\u00d5\u0152\u0153\u2013\u2014\u201c\u201d\u2018\u2019\u00f7\u25ca\u00ff\u0178\u2044\u20ac\u00d0\u00f0\u00de\u00fe\u00fd\u00b7\u201a\u201e\u2030\u00c2\u00ca\u00c1\u00cb\u00c8\u00cd\u00ce\u00cf\u00cc\u00d3\u00d4\uf8ff\u00d2\u00da\u00db\u00d9\u0131\u02c6\u02dc\u00af\u02d8\u02d9\u02da\u00b8\u02dd\u02db\u02c7";
-
-const aliases = [ "x-mac-icelandic" ];
-
-function run_test() {
-  testDecodeAliasesInternal();
-}
deleted file mode 100644
--- a/intl/uconv/tests/unit/test_decode_x_mac_romanian.js
+++ /dev/null
@@ -1,13 +0,0 @@
-// Tests conversion from x-mac-romanian to Unicode
-	
-load('CharsetConversionTests.js');
-	
-const inString = " !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xaa\xab\xac\xad\xae\xaf\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff";
-    
-const expectedString = " !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\u00c4\u00c5\u00c7\u00c9\u00d1\u00d6\u00dc\u00e1\u00e0\u00e2\u00e4\u00e3\u00e5\u00e7\u00e9\u00e8\u00ea\u00eb\u00ed\u00ec\u00ee\u00ef\u00f1\u00f3\u00f2\u00f4\u00f6\u00f5\u00fa\u00f9\u00fb\u00fc\u2020\u00b0\u00a2\u00a3\u00a7\u2022\u00b6\u00df\u00ae\u00a9\u2122\u00b4\u00a8\u2260\u0102\u0218\u221e\u00b1\u2264\u2265\u00a5\u00b5\u2202\u2211\u220f\u03c0\u222b\u00aa\u00ba\u03a9\u0103\u0219\u00bf\u00a1\u00ac\u221a\u0192\u2248\u2206\u00ab\u00bb\u2026\u00a0\u00c0\u00c3\u00d5\u0152\u0153\u2013\u2014\u201c\u201d\u2018\u2019\u00f7\u25ca\u00ff\u0178\u2044\u20ac\u2039\u203a\u021a\u021b\u2021\u00b7\u201a\u201e\u2030\u00c2\u00ca\u00c1\u00cb\u00c8\u00cd\u00ce\u00cf\u00cc\u00d3\u00d4\uf8ff\u00d2\u00da\u00db\u00d9\u0131\u02c6\u02dc\u00af\u02d8\u02d9\u02da\u00b8\u02dd\u02db\u02c7";
-
-const aliases = [ "x-mac-romanian" ];
-
-function run_test() {
-  testDecodeAliasesInternal();
-}
deleted file mode 100644
--- a/intl/uconv/tests/unit/test_decode_x_mac_turkish.js
+++ /dev/null
@@ -1,13 +0,0 @@
-// Tests conversion from x-mac-turkish to Unicode
-	
-load('CharsetConversionTests.js');
-	
-const inString = " !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xaa\xab\xac\xad\xae\xaf\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff";
-    
-const expectedString = " !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\u00c4\u00c5\u00c7\u00c9\u00d1\u00d6\u00dc\u00e1\u00e0\u00e2\u00e4\u00e3\u00e5\u00e7\u00e9\u00e8\u00ea\u00eb\u00ed\u00ec\u00ee\u00ef\u00f1\u00f3\u00f2\u00f4\u00f6\u00f5\u00fa\u00f9\u00fb\u00fc\u2020\u00b0\u00a2\u00a3\u00a7\u2022\u00b6\u00df\u00ae\u00a9\u2122\u00b4\u00a8\u2260\u00c6\u00d8\u221e\u00b1\u2264\u2265\u00a5\u00b5\u2202\u2211\u220f\u03c0\u222b\u00aa\u00ba\u03a9\u00e6\u00f8\u00bf\u00a1\u00ac\u221a\u0192\u2248\u2206\u00ab\u00bb\u2026\u00a0\u00c0\u00c3\u00d5\u0152\u0153\u2013\u2014\u201c\u201d\u2018\u2019\u00f7\u25ca\u00ff\u0178\u011e\u011f\u0130\u0131\u015e\u015f\u2021\u00b7\u201a\u201e\u2030\u00c2\u00ca\u00c1\u00cb\u00c8\u00cd\u00ce\u00cf\u00cc\u00d3\u00d4\uf8ff\u00d2\u00da\u00db\u00d9\uf8a0\u02c6\u02dc\u00af\u02d8\u02d9\u02da\u00b8\u02dd\u02db\u02c7";
-
-const aliases = [ "x-mac-turkish" ];
-
-function run_test() {
-  testDecodeAliasesInternal();
-}
deleted file mode 100644
--- a/intl/uconv/tests/unit/test_encode_x_mac_arabic.js
+++ /dev/null
@@ -1,15 +0,0 @@
-// Tests conversion from Unicode to x-mac-arabic
-// Support for this charset was removed in bug 601429, so it should fall back
-// to default.
-	
-load('CharsetConversionTests.js');
-	
-const inString = " !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\u00a0\u00a1\u00a2\u00a3\u00a4\u00a5\u00a6\u00a7\u00a8\u00a9\u00aa\u00ab\u00ac\u00ad\u00ae\u00af\u00b0\u00b1\u00b2\u00b3\u00b4\u00b5\u00b6\u00b7\u00b8\u00b9\u00ba\u00bb\u00bc\u00bd\u00be\u00bf\u00c0\u00c1\u00c2\u00c3\u00c4\u00c5\u00c6\u00c7\u00c8\u00c9\u00ca\u00cb\u00cc\u00cd\u00ce\u00cf\u00d0\u00d1\u00d2\u00d3\u00d4\u00d5\u00d6\u00d7\u00d8\u00d9\u00da\u00db\u00dc\u00dd\u00de\u00df\u00e0\u00e1\u00e2\u00e3\u00e4\u00e5\u00e6\u00e7\u00e8\u00e9\u00ea\u00eb\u00ec\u00ed\u00ee\u00ef\u00f0\u00f1\u00f2\u00f3\u00f4\u00f5\u00f6\u00f7\u00f8\u00f9\u00fa\u00fb\u00fc\u00fd\u00fe\u00ff";
-    
-const expectedString = " !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xaa\xab\xac\xad\xae\xaf\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff";
-
-const aliases = [ "x-mac-arabic" ];
-
-function run_test() {
-  testEncodeAliases();
-}
deleted file mode 100644
--- a/intl/uconv/tests/unit/test_encode_x_mac_ce.js
+++ /dev/null
@@ -1,15 +0,0 @@
-// Tests conversion from Unicode to x-mac-ce
-// Support for this encoder was removed in bug 997133, so it should fall back
-// to default.
-	
-load('CharsetConversionTests.js');
-	
-const inString = " !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\u00a0\u00a1\u00a2\u00a3\u00a4\u00a5\u00a6\u00a7\u00a8\u00a9\u00aa\u00ab\u00ac\u00ad\u00ae\u00af\u00b0\u00b1\u00b2\u00b3\u00b4\u00b5\u00b6\u00b7\u00b8\u00b9\u00ba\u00bb\u00bc\u00bd\u00be\u00bf\u00c0\u00c1\u00c2\u00c3\u00c4\u00c5\u00c6\u00c7\u00c8\u00c9\u00ca\u00cb\u00cc\u00cd\u00ce\u00cf\u00d0\u00d1\u00d2\u00d3\u00d4\u00d5\u00d6\u00d7\u00d8\u00d9\u00da\u00db\u00dc\u00dd\u00de\u00df\u00e0\u00e1\u00e2\u00e3\u00e4\u00e5\u00e6\u00e7\u00e8\u00e9\u00ea\u00eb\u00ec\u00ed\u00ee\u00ef\u00f0\u00f1\u00f2\u00f3\u00f4\u00f5\u00f6\u00f7\u00f8\u00f9\u00fa\u00fb\u00fc\u00fd\u00fe\u00ff";
-    
-const expectedString = " !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xaa\xab\xac\xad\xae\xaf\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff";
-
-const aliases = [ "x-mac-ce" ];
-
-function run_test() {
-  testEncodeAliases();
-}
deleted file mode 100644
--- a/intl/uconv/tests/unit/test_encode_x_mac_croatian.js
+++ /dev/null
@@ -1,15 +0,0 @@
-// Tests conversion from Unicode to x-mac-croatian
-// Support for this encoder was removed in bug 997133, so it should fall back
-// to default.
-	
-load('CharsetConversionTests.js');
-	
-const inString = " !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\u00a0\u00a1\u00a2\u00a3\u00a4\u00a5\u00a6\u00a7\u00a8\u00a9\u00aa\u00ab\u00ac\u00ad\u00ae\u00af\u00b0\u00b1\u00b2\u00b3\u00b4\u00b5\u00b6\u00b7\u00b8\u00b9\u00ba\u00bb\u00bc\u00bd\u00be\u00bf\u00c0\u00c1\u00c2\u00c3\u00c4\u00c5\u00c6\u00c7\u00c8\u00c9\u00ca\u00cb\u00cc\u00cd\u00ce\u00cf\u00d0\u00d1\u00d2\u00d3\u00d4\u00d5\u00d6\u00d7\u00d8\u00d9\u00da\u00db\u00dc\u00dd\u00de\u00df\u00e0\u00e1\u00e2\u00e3\u00e4\u00e5\u00e6\u00e7\u00e8\u00e9\u00ea\u00eb\u00ec\u00ed\u00ee\u00ef\u00f0\u00f1\u00f2\u00f3\u00f4\u00f5\u00f6\u00f7\u00f8\u00f9\u00fa\u00fb\u00fc\u00fd\u00fe\u00ff";
-    
-const expectedString = " !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xaa\xab\xac\xad\xae\xaf\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff";
-
-const aliases = [ "x-mac-croatian" ];
-
-function run_test() {
-  testEncodeAliases();
-}
deleted file mode 100644
--- a/intl/uconv/tests/unit/test_encode_x_mac_devanagari.js
+++ /dev/null
@@ -1,15 +0,0 @@
-// Tests conversion from Unicode to x-mac-devanagari
-// Support for this encoder was removed in bug 997133, so it should fall back
-// to default.
-	
-load('CharsetConversionTests.js');
-	
-const inString = " !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\u00a0\u00a1\u00a2\u00a3\u00a4\u00a5\u00a6\u00a7\u00a8\u00a9\u00aa\u00ab\u00ac\u00ad\u00ae\u00af\u00b0\u00b1\u00b2\u00b3\u00b4\u00b5\u00b6\u00b7\u00b8\u00b9\u00ba\u00bb\u00bc\u00bd\u00be\u00bf\u00c0\u00c1\u00c2\u00c3\u00c4\u00c5\u00c6\u00c7\u00c8\u00c9\u00ca\u00cb\u00cc\u00cd\u00ce\u00cf\u00d0\u00d1\u00d2\u00d3\u00d4\u00d5\u00d6\u00d7\u00d8\u00d9\u00da\u00db\u00dc\u00dd\u00de\u00df\u00e0\u00e1\u00e2\u00e3\u00e4\u00e5\u00e6\u00e7\u00e8\u00e9\u00ea\u00eb\u00ec\u00ed\u00ee\u00ef\u00f0\u00f1\u00f2\u00f3\u00f4\u00f5\u00f6\u00f7\u00f8\u00f9\u00fa\u00fb\u00fc\u00fd\u00fe\u00ff";
-    
-const expectedString = " !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xaa\xab\xac\xad\xae\xaf\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff";
-
-const aliases = [ "x-mac-devanagari" ];
-
-function run_test() {
-  testEncodeAliases();
-}
deleted file mode 100644
--- a/intl/uconv/tests/unit/test_encode_x_mac_farsi.js
+++ /dev/null
@@ -1,15 +0,0 @@
-// Tests conversion from Unicode to x-mac-farsi
-// Support for this charset was removed in bug 601429, so it should fall back
-// to default.
-	
-load('CharsetConversionTests.js');
-	
-const inString = " !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\u00a0\u00a1\u00a2\u00a3\u00a4\u00a5\u00a6\u00a7\u00a8\u00a9\u00aa\u00ab\u00ac\u00ad\u00ae\u00af\u00b0\u00b1\u00b2\u00b3\u00b4\u00b5\u00b6\u00b7\u00b8\u00b9\u00ba\u00bb\u00bc\u00bd\u00be\u00bf\u00c0\u00c1\u00c2\u00c3\u00c4\u00c5\u00c6\u00c7\u00c8\u00c9\u00ca\u00cb\u00cc\u00cd\u00ce\u00cf\u00d0\u00d1\u00d2\u00d3\u00d4\u00d5\u00d6\u00d7\u00d8\u00d9\u00da\u00db\u00dc\u00dd\u00de\u00df\u00e0\u00e1\u00e2\u00e3\u00e4\u00e5\u00e6\u00e7\u00e8\u00e9\u00ea\u00eb\u00ec\u00ed\u00ee\u00ef\u00f0\u00f1\u00f2\u00f3\u00f4\u00f5\u00f6\u00f7\u00f8\u00f9\u00fa\u00fb\u00fc\u00fd\u00fe\u00ff";
-    
-const expectedString = " !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xaa\xab\xac\xad\xae\xaf\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff";
-
-const aliases = [ "x-mac-farsi" ];
-
-function run_test() {
-  testEncodeAliases();
-}
deleted file mode 100644
--- a/intl/uconv/tests/unit/test_encode_x_mac_greek.js
+++ /dev/null
@@ -1,15 +0,0 @@
-// Tests conversion from Unicode to x-mac-greek
-// Support for this encoder was removed in bug 997133, so it should fall back
-// to default.
-	
-load('CharsetConversionTests.js');
-	
-const inString = " !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\u00a0\u00a1\u00a2\u00a3\u00a4\u00a5\u00a6\u00a7\u00a8\u00a9\u00aa\u00ab\u00ac\u00ad\u00ae\u00af\u00b0\u00b1\u00b2\u00b3\u00b4\u00b5\u00b6\u00b7\u00b8\u00b9\u00ba\u00bb\u00bc\u00bd\u00be\u00bf\u00c0\u00c1\u00c2\u00c3\u00c4\u00c5\u00c6\u00c7\u00c8\u00c9\u00ca\u00cb\u00cc\u00cd\u00ce\u00cf\u00d0\u00d1\u00d2\u00d3\u00d4\u00d5\u00d6\u00d7\u00d8\u00d9\u00da\u00db\u00dc\u00dd\u00de\u00df\u00e0\u00e1\u00e2\u00e3\u00e4\u00e5\u00e6\u00e7\u00e8\u00e9\u00ea\u00eb\u00ec\u00ed\u00ee\u00ef\u00f0\u00f1\u00f2\u00f3\u00f4\u00f5\u00f6\u00f7\u00f8\u00f9\u00fa\u00fb\u00fc\u00fd\u00fe\u00ff";
-    
-const expectedString = " !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xaa\xab\xac\xad\xae\xaf\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff";
-
-const aliases = [ "x-mac-greek" ];
-
-function run_test() {
-  testEncodeAliases();
-}
deleted file mode 100644
--- a/intl/uconv/tests/unit/test_encode_x_mac_gujarati.js
+++ /dev/null
@@ -1,15 +0,0 @@
-// Tests conversion from Unicode to x-mac-gujarati
-// Support for this encoder was removed in bug 997133, so it should fall back
-// to default.
-	
-load('CharsetConversionTests.js');
-	
-const inString = " !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\u00a0\u00a1\u00a2\u00a3\u00a4\u00a5\u00a6\u00a7\u00a8\u00a9\u00aa\u00ab\u00ac\u00ad\u00ae\u00af\u00b0\u00b1\u00b2\u00b3\u00b4\u00b5\u00b6\u00b7\u00b8\u00b9\u00ba\u00bb\u00bc\u00bd\u00be\u00bf\u00c0\u00c1\u00c2\u00c3\u00c4\u00c5\u00c6\u00c7\u00c8\u00c9\u00ca\u00cb\u00cc\u00cd\u00ce\u00cf\u00d0\u00d1\u00d2\u00d3\u00d4\u00d5\u00d6\u00d7\u00d8\u00d9\u00da\u00db\u00dc\u00dd\u00de\u00df\u00e0\u00e1\u00e2\u00e3\u00e4\u00e5\u00e6\u00e7\u00e8\u00e9\u00ea\u00eb\u00ec\u00ed\u00ee\u00ef\u00f0\u00f1\u00f2\u00f3\u00f4\u00f5\u00f6\u00f7\u00f8\u00f9\u00fa\u00fb\u00fc\u00fd\u00fe\u00ff";
-    
-const expectedString = " !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xaa\xab\xac\xad\xae\xaf\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff";
-
-const aliases = [ "x-mac-gujarati" ];
-
-function run_test() {
-  testEncodeAliases();
-}
deleted file mode 100644
--- a/intl/uconv/tests/unit/test_encode_x_mac_gurmukhi.js
+++ /dev/null
@@ -1,15 +0,0 @@
-// Tests conversion from Unicode to x-mac-gurmukhi
-// Support for this encoder was removed in bug 997133, so it should fall back
-// to default.
-	
-load('CharsetConversionTests.js');
-	
-const inString = " !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\u00a0\u00a1\u00a2\u00a3\u00a4\u00a5\u00a6\u00a7\u00a8\u00a9\u00aa\u00ab\u00ac\u00ad\u00ae\u00af\u00b0\u00b1\u00b2\u00b3\u00b4\u00b5\u00b6\u00b7\u00b8\u00b9\u00ba\u00bb\u00bc\u00bd\u00be\u00bf\u00c0\u00c1\u00c2\u00c3\u00c4\u00c5\u00c6\u00c7\u00c8\u00c9\u00ca\u00cb\u00cc\u00cd\u00ce\u00cf\u00d0\u00d1\u00d2\u00d3\u00d4\u00d5\u00d6\u00d7\u00d8\u00d9\u00da\u00db\u00dc\u00dd\u00de\u00df\u00e0\u00e1\u00e2\u00e3\u00e4\u00e5\u00e6\u00e7\u00e8\u00e9\u00ea\u00eb\u00ec\u00ed\u00ee\u00ef\u00f0\u00f1\u00f2\u00f3\u00f4\u00f5\u00f6\u00f7\u00f8\u00f9\u00fa\u00fb\u00fc\u00fd\u00fe\u00ff";
-    
-const expectedString = " !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xaa\xab\xac\xad\xae\xaf\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff";
-
-const aliases = [ "x-mac-gurmukhi" ];
-
-function run_test() {
-  testEncodeAliases();
-}
deleted file mode 100644
--- a/intl/uconv/tests/unit/test_encode_x_mac_hebrew.js
+++ /dev/null
@@ -1,15 +0,0 @@
-// Tests conversion from Unicode to x-mac-hebrew
-// Support for this charset was removed in bug 601429, so it should fall back
-// to default.
-	
-load('CharsetConversionTests.js');
-	
-const inString = " !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\u00a0\u00a1\u00a2\u00a3\u00a4\u00a5\u00a6\u00a7\u00a8\u00a9\u00aa\u00ab\u00ac\u00ad\u00ae\u00af\u00b0\u00b1\u00b2\u00b3\u00b4\u00b5\u00b6\u00b7\u00b8\u00b9\u00ba\u00bb\u00bc\u00bd\u00be\u00bf\u00c0\u00c1\u00c2\u00c3\u00c4\u00c5\u00c6\u00c7\u00c8\u00c9\u00ca\u00cb\u00cc\u00cd\u00ce\u00cf\u00d0\u00d1\u00d2\u00d3\u00d4\u00d5\u00d6\u00d7\u00d8\u00d9\u00da\u00db\u00dc\u00dd\u00de\u00df\u00e0\u00e1\u00e2\u00e3\u00e4\u00e5\u00e6\u00e7\u00e8\u00e9\u00ea\u00eb\u00ec\u00ed\u00ee\u00ef\u00f0\u00f1\u00f2\u00f3\u00f4\u00f5\u00f6\u00f7\u00f8\u00f9\u00fa\u00fb\u00fc\u00fd\u00fe\u00ff";
-    
-const expectedString = " !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xaa\xab\xac\xad\xae\xaf\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff";
-
-const aliases = [ "x-mac-hebrew" ];
-
-function run_test() {
-  testEncodeAliases();
-}
deleted file mode 100644
--- a/intl/uconv/tests/unit/test_encode_x_mac_icelandic.js
+++ /dev/null
@@ -1,15 +0,0 @@
-// Tests conversion from Unicode to x-mac-icelandic
-// Support for this encoder was removed in bug 997133, so it should fall back
-// to default.
-	
-load('CharsetConversionTests.js');
-	
-const inString = " !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\u00a0\u00a1\u00a2\u00a3\u00a4\u00a5\u00a6\u00a7\u00a8\u00a9\u00aa\u00ab\u00ac\u00ad\u00ae\u00af\u00b0\u00b1\u00b2\u00b3\u00b4\u00b5\u00b6\u00b7\u00b8\u00b9\u00ba\u00bb\u00bc\u00bd\u00be\u00bf\u00c0\u00c1\u00c2\u00c3\u00c4\u00c5\u00c6\u00c7\u00c8\u00c9\u00ca\u00cb\u00cc\u00cd\u00ce\u00cf\u00d0\u00d1\u00d2\u00d3\u00d4\u00d5\u00d6\u00d7\u00d8\u00d9\u00da\u00db\u00dc\u00dd\u00de\u00df\u00e0\u00e1\u00e2\u00e3\u00e4\u00e5\u00e6\u00e7\u00e8\u00e9\u00ea\u00eb\u00ec\u00ed\u00ee\u00ef\u00f0\u00f1\u00f2\u00f3\u00f4\u00f5\u00f6\u00f7\u00f8\u00f9\u00fa\u00fb\u00fc\u00fd\u00fe\u00ff";
-    
-const expectedString = " !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xaa\xab\xac\xad\xae\xaf\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff";
-
-const aliases = [ "x-mac-icelandic" ];
-
-function run_test() {
-  testEncodeAliases();
-}
deleted file mode 100644
--- a/intl/uconv/tests/unit/test_encode_x_mac_romanian.js
+++ /dev/null
@@ -1,15 +0,0 @@
-// Tests conversion from Unicode to x-mac-romanian
-// Support for this encoder was removed in bug 997133, so it should fall back
-// to default.
-	
-load('CharsetConversionTests.js');
-	
-const inString = " !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\u00a0\u00a1\u00a2\u00a3\u00a4\u00a5\u00a6\u00a7\u00a8\u00a9\u00aa\u00ab\u00ac\u00ad\u00ae\u00af\u00b0\u00b1\u00b2\u00b3\u00b4\u00b5\u00b6\u00b7\u00b8\u00b9\u00ba\u00bb\u00bc\u00bd\u00be\u00bf\u00c0\u00c1\u00c2\u00c3\u00c4\u00c5\u00c6\u00c7\u00c8\u00c9\u00ca\u00cb\u00cc\u00cd\u00ce\u00cf\u00d0\u00d1\u00d2\u00d3\u00d4\u00d5\u00d6\u00d7\u00d8\u00d9\u00da\u00db\u00dc\u00dd\u00de\u00df\u00e0\u00e1\u00e2\u00e3\u00e4\u00e5\u00e6\u00e7\u00e8\u00e9\u00ea\u00eb\u00ec\u00ed\u00ee\u00ef\u00f0\u00f1\u00f2\u00f3\u00f4\u00f5\u00f6\u00f7\u00f8\u00f9\u00fa\u00fb\u00fc\u00fd\u00fe\u00ff";
-    
-const expectedString = " !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xaa\xab\xac\xad\xae\xaf\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff";
-
-const aliases = [ "x-mac-romanian" ];
-
-function run_test() {
-  testEncodeAliases();
-}
deleted file mode 100644
--- a/intl/uconv/tests/unit/test_encode_x_mac_turkish.js
+++ /dev/null
@@ -1,15 +0,0 @@
-// Tests conversion from Unicode to x-mac-turkish
-// Support for this encoder was removed in bug 997133, so it should fall back
-// to default.
-	
-load('CharsetConversionTests.js');
-	
-const inString = " !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\u00a0\u00a1\u00a2\u00a3\u00a4\u00a5\u00a6\u00a7\u00a8\u00a9\u00aa\u00ab\u00ac\u00ad\u00ae\u00af\u00b0\u00b1\u00b2\u00b3\u00b4\u00b5\u00b6\u00b7\u00b8\u00b9\u00ba\u00bb\u00bc\u00bd\u00be\u00bf\u00c0\u00c1\u00c2\u00c3\u00c4\u00c5\u00c6\u00c7\u00c8\u00c9\u00ca\u00cb\u00cc\u00cd\u00ce\u00cf\u00d0\u00d1\u00d2\u00d3\u00d4\u00d5\u00d6\u00d7\u00d8\u00d9\u00da\u00db\u00dc\u00dd\u00de\u00df\u00e0\u00e1\u00e2\u00e3\u00e4\u00e5\u00e6\u00e7\u00e8\u00e9\u00ea\u00eb\u00ec\u00ed\u00ee\u00ef\u00f0\u00f1\u00f2\u00f3\u00f4\u00f5\u00f6\u00f7\u00f8\u00f9\u00fa\u00fb\u00fc\u00fd\u00fe\u00ff";
-    
-const expectedString = " !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xaa\xab\xac\xad\xae\xaf\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff";
-
-const aliases = [ "x-mac-turkish" ];
-
-function run_test() {
-  testEncodeAliases();
-}
--- a/intl/uconv/tests/unit/test_unmapped.js
+++ b/intl/uconv/tests/unit/test_unmapped.js
@@ -1,24 +1,25 @@
 // Tests encoding of unmapped characters
 load('CharsetConversionTests.js');
 
-const inString = "\u2764";
+const inString = "\uE5E5";
 const expectedString = "?";
 
 function run_test() {
     var failures = false;
     var encodingConverter = CreateScriptableConverter();
 
     // this list excludes codepages that can represent all Unicode
     var encoders = [
         "Big5",
         "EUC-JP",
         "EUC-KR",
-        "gbk",
+        "GBK",
+        "gb18030",
         "IBM866",
         "ISO-2022-JP",
         "ISO-8859-3",
         "ISO-8859-4",
         "ISO-8859-5",
         "ISO-8859-6",
         "ISO-8859-7",
         "ISO-8859-8",
--- a/intl/uconv/tests/unit/xpcshell.ini
+++ b/intl/uconv/tests/unit/xpcshell.ini
@@ -1,13 +1,12 @@
 [DEFAULT]
 head =
 support-files =
   CharsetConversionTests.js
-  hangulTestStrings.js
   data/unicode-conversion.utf16.txt
   data/unicode-conversion.utf16be.txt
   data/unicode-conversion.utf16le.txt
   data/unicode-conversion.utf8.txt
 
 [test_bug116882.js]
 [test_bug317216.js]
 [test_bug321379.js]
@@ -23,17 +22,16 @@ support-files =
 [test_bug457886.js]
 [test_bug522931.js]
 [test_bug563283.js]
 [test_bug563618.js]
 [test_bug601429.js]
 [test_bug715319.euc_jp.js]
 [test_bug715319.gb2312.js]
 [test_bug715319.dbcs.js]
-[test_bug1008832.js]
 [test_charset_conversion.js]
 [test_decode_8859-1.js]
 [test_decode_8859-10.js]
 [test_decode_8859-11.js]
 [test_decode_8859-13.js]
 [test_decode_8859-14.js]
 [test_decode_8859-15.js]
 [test_decode_8859-2.js]
@@ -49,36 +47,20 @@ support-files =
 [test_decode_CP1252.js]
 [test_decode_CP1253.js]
 [test_decode_CP1254.js]
 [test_decode_CP1255.js]
 [test_decode_CP1256.js]
 [test_decode_CP1257.js]
 [test_decode_CP1258.js]
 [test_decode_CP874.js]
-[test_decode_EUCKR_Hangul.js]
 [test_decode_gb18030.js]
 [test_decode_gbk.js]
-[test_decode_x_mac_arabic.js]
-[test_decode_x_mac_arabic_internal.js]
-[test_decode_x_mac_ce.js]
-[test_decode_x_mac_croatian.js]
 [test_decode_x_mac_cyrillic.js]
-[test_decode_x_mac_devanagari.js]
-[test_decode_x_mac_farsi.js]
-[test_decode_x_mac_farsi_internal.js]
-[test_decode_x_mac_greek.js]
-[test_decode_x_mac_gujarati.js]
-[test_decode_x_mac_gurmukhi.js]
-[test_decode_x_mac_hebrew.js]
-[test_decode_x_mac_hebrew_internal.js]
-[test_decode_x_mac_icelandic.js]
 [test_decode_macintosh.js]
-[test_decode_x_mac_romanian.js]
-[test_decode_x_mac_turkish.js]
 [test_decode_x_mac_ukrainian.js]
 [test_encode_8859-1.js]
 [test_encode_8859-10.js]
 [test_encode_8859-11.js]
 [test_encode_8859-13.js]
 [test_encode_8859-14.js]
 [test_encode_8859-15.js]
 [test_encode_8859-2.js]
@@ -96,26 +78,14 @@ support-files =
 [test_encode_CP1254.js]
 [test_encode_CP1255.js]
 [test_encode_CP1256.js]
 [test_encode_CP1257.js]
 [test_encode_CP1258.js]
 [test_encode_CP874.js]
 [test_encode_gb18030.js]
 [test_encode_gbk.js]
-[test_encode_x_mac_arabic.js]
-[test_encode_x_mac_ce.js]
-[test_encode_x_mac_croatian.js]
 [test_encode_x_mac_cyrillic.js]
-[test_encode_x_mac_devanagari.js]
-[test_encode_x_mac_farsi.js]
-[test_encode_x_mac_greek.js]
-[test_encode_x_mac_gujarati.js]
-[test_encode_x_mac_gurmukhi.js]
-[test_encode_x_mac_hebrew.js]
-[test_encode_x_mac_icelandic.js]
 [test_encode_macintosh.js]
-[test_encode_x_mac_romanian.js]
-[test_encode_x_mac_turkish.js]
 [test_input_stream.js]
 [test_unEscapeNonAsciiURI.js]
 [test_unmapped.js]
 [test_utf8_illegals.js]
--- a/intl/unicharutil/nsSaveAsCharset.cpp
+++ b/intl/unicharutil/nsSaveAsCharset.cpp
@@ -1,16 +1,17 @@
 /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
 /* vim: set ts=8 sts=2 et sw=2 tw=80: */
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 #include "nsSaveAsCharset.h"
-#include "mozilla/dom/EncodingUtils.h"
+
+using namespace mozilla;
 
 //
 // nsISupports methods
 //
 NS_IMPL_ISUPPORTS(nsSaveAsCharset, nsISaveAsCharset)
 
 //
 // nsSaveAsCharset
@@ -21,36 +22,40 @@ nsSaveAsCharset::nsSaveAsCharset()
 
 nsSaveAsCharset::~nsSaveAsCharset()
 {
 }
 
 NS_IMETHODIMP
 nsSaveAsCharset::Init(const nsACString& aCharset, uint32_t aIgnored, uint32_t aAlsoIgnored)
 {
-  nsAutoCString encoding;
-  if (!mozilla::dom::EncodingUtils::FindEncodingForLabelNoReplacement(aCharset, encoding)) {
+  mEncoding = Encoding::ForLabelNoReplacement(aCharset);
+  if (!mEncoding) {
     return NS_ERROR_DOM_ENCODING_NOT_SUPPORTED_ERR;
   }
-  mEncoder = new nsNCRFallbackEncoderWrapper(encoding);
-  mCharset.Assign(encoding);
   return NS_OK;
 }
 
 NS_IMETHODIMP
 nsSaveAsCharset::Convert(const nsAString& aIn, nsACString& aOut)
 {
-  if (!mEncoder) {
+  if (!mEncoding) {
     return NS_ERROR_DOM_ENCODING_NOT_SUPPORTED_ERR;
   }
-
-  if (!mEncoder->Encode(aIn, aOut)) {
-    return NS_ERROR_OUT_OF_MEMORY;
+  nsresult rv;
+  const Encoding* ignored;
+  Tie(rv, ignored) = mEncoding->Encode(aIn, aOut);
+  if (NS_FAILED(rv)) {
+    return rv;
   }
   return NS_OK;
 }
 
 NS_IMETHODIMP 
 nsSaveAsCharset::GetCharset(nsACString& aCharset)
 {
-  aCharset.Assign(mCharset);
+  if (!mEncoding) {
+    aCharset.Truncate();
+  } else {
+    mEncoding->Name(aCharset);
+  }
   return NS_OK;
 }
--- a/intl/unicharutil/nsSaveAsCharset.h
+++ b/intl/unicharutil/nsSaveAsCharset.h
@@ -4,17 +4,17 @@
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 #ifndef nsSaveAsCharset_h_
 #define nsSaveAsCharset_h_
 
 #include "nsStringFwd.h"
 #include "nsISaveAsCharset.h"
 #include "nsAutoPtr.h"
-#include "nsNCRFallbackEncoderWrapper.h"
+#include "mozilla/Encoding.h"
 #include "nsString.h"
 
 class nsSaveAsCharset : public nsISaveAsCharset
 {
 public:
 
   nsSaveAsCharset();
 
@@ -25,13 +25,12 @@ public:
   NS_IMETHOD Convert(const nsAString& ain, nsACString& aOut) override;
 
   NS_IMETHOD GetCharset(nsACString& aCharset) override;
 
 private:
 
   virtual ~nsSaveAsCharset();
 
-  nsAutoPtr<nsNCRFallbackEncoderWrapper> mEncoder;
-  nsCString mCharset;
+  const mozilla::Encoding* mEncoding;
 };
 
 #endif
--- a/js/xpconnect/src/xpc.msg
+++ b/js/xpconnect/src/xpc.msg
@@ -186,17 +186,17 @@ XPC_MSG_DEF(NS_ERROR_NOT_SAME_THREAD    
 /* storage related codes (from mozStorage.h) */
 XPC_MSG_DEF(NS_ERROR_STORAGE_BUSY                   , "SQLite database connection is busy")
 XPC_MSG_DEF(NS_ERROR_STORAGE_IOERR                  , "SQLite encountered an IO error")
 XPC_MSG_DEF(NS_ERROR_STORAGE_CONSTRAINT             , "SQLite database operation failed because a constraint was violated")
 
 /* plugin related codes (from nsPluginError.h) */
 XPC_MSG_DEF(NS_ERROR_PLUGIN_TIME_RANGE_NOT_SUPPORTED, "Clearing site data by time range not supported by plugin")
 
-/* character converter related codes (from nsIUnicodeDecoder.h) */
+/* character converter related codes */
 XPC_MSG_DEF(NS_ERROR_ILLEGAL_INPUT                  , "The input characters have illegal sequences")
 
 /* Codes related to signd jars */
 XPC_MSG_DEF(NS_ERROR_SIGNED_JAR_NOT_SIGNED          , "The JAR is not signed.")
 XPC_MSG_DEF(NS_ERROR_SIGNED_JAR_MODIFIED_ENTRY      , "An entry in the JAR has been modified after the JAR was signed.")
 XPC_MSG_DEF(NS_ERROR_SIGNED_JAR_UNSIGNED_ENTRY      , "An entry in the JAR has not been signed.")
 XPC_MSG_DEF(NS_ERROR_SIGNED_JAR_ENTRY_MISSING       , "An entry is missing from the JAR file.")
 XPC_MSG_DEF(NS_ERROR_SIGNED_JAR_WRONG_SIGNATURE     , "The JAR's signature is wrong.")
--- a/layout/reftests/bugs/116882-1-ref.html
+++ b/layout/reftests/bugs/116882-1-ref.html
@@ -1,11 +1,12 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
  "http://www.w3.org/TR/REC-html401-19991224/strict.dtd">
 <html>
  <head>
   <title>Shift_JIS illegal sequences</title>
   <meta HTTP-equiv="content-type" content="text/html; charset=shift_jis">
  </head>
  <body>
-  <p>&#xf8f1;&#xf8f2;&#xf8f3;&#xfffd; &#xfffd;!&#xfffd;"&#xfffd;#&#xfffd;$&#xfffd;%&#xfffd;&amp;&#xfffd;'&#xfffd;(&#xfffd;)&#xfffd;*&#xfffd;+&#xfffd;,&#xfffd;-&#xfffd;.&#xfffd;/&#xfffd;0&#xfffd;1&#xfffd;2&#xfffd;3&#xfffd;4&#xfffd;5&#xfffd;6&#xfffd;7&#xfffd;8&#xfffd;9&#xfffd;:&#xfffd;;&#xfffd;&lt;&#xfffd;=&#xfffd;&gt;&#xfffd;?&#x30fb;</p>
+  <p>&#xfffd;&#xfffd;&#xfffd;&#xfffd; &#xfffd;!&#xfffd;"&#xfffd;#&#xfffd;$&#xfffd;%&#xfffd;&amp;&#xfffd;'&#xfffd;(&#xfffd;)&#xfffd;*&#xfffd;+&#xfffd;,&#xfffd;-&#xfffd;.&#xfffd;/&#xfffd;0&#xfffd;1&#xfffd;2&#xfffd;3&#xfffd;4&#xfffd;5&#xfffd;6&#xfffd;7&#xfffd;8&#xfffd;9&#xfffd;:&#xfffd;;&#xfffd;&lt;&#xfffd;=&#xfffd;&gt;&#xfffd;?&#xfffd;</p>
+  <!-- See bug https://bugzilla.mozilla.org/show_bug.cgi?id=747762 for the discussion to overturn bug https://bugzilla.mozilla.org/show_bug.cgi?id=116882 -->
  </body>
 </html>
--- a/layout/style/Loader.cpp
+++ b/layout/style/Loader.cpp
@@ -697,21 +697,17 @@ SheetLoadData::OnDetermineCharset(nsIUni
       return NS_OK;
     }
   }
 
   if (GetCharsetFromData(aSegment.BeginReading(),
                          aSegment.Length(),
                          specified)) {
     if (EncodingUtils::FindEncodingForLabel(specified, aCharset)) {
-      // FindEncodingForLabel currently never returns UTF-16LE but will
-      // probably change to never return UTF-16 instead, so check both here
-      // to avoid relying on the exact behavior.
-      if (aCharset.EqualsLiteral("UTF-16") ||
-          aCharset.EqualsLiteral("UTF-16BE") ||
+      if (aCharset.EqualsLiteral("UTF-16BE") ||
           aCharset.EqualsLiteral("UTF-16LE")) {
         // Be consistent with HTML <meta> handling in face of impossibility.
         // When the @charset rule itself evidently was not UTF-16-encoded,
         // it saying UTF-16 has to be a lie.
         aCharset.AssignLiteral("UTF-8");
       }
       mCharset.Assign(aCharset);
       LOG(("  Setting from @charset rule to: %s",
--- a/netwerk/base/nsStandardURL.cpp
+++ b/netwerk/base/nsStandardURL.cpp
@@ -18,17 +18,16 @@
 #include "nsIIDNService.h"
 #include "mozilla/Logging.h"
 #include "nsAutoPtr.h"
 #include "nsIURLParser.h"
 #include "nsNetCID.h"
 #include "mozilla/MemoryReporting.h"
 #include "mozilla/ipc/URIUtils.h"
 #include <algorithm>
-#include "mozilla/dom/EncodingUtils.h"
 #include "nsContentUtils.h"
 #include "prprf.h"
 #include "nsReadableUtils.h"
 
 
 //
 // setenv MOZ_LOG nsStandardURL:5
 //
@@ -125,17 +124,16 @@ do {                                    
 #define CALL_RUST_GETTER_INT(expected, func, ...)
 #define CALL_RUST_INIT
 #define CALL_RUST_SYNC
 #define CALL_SET_MUTABLE
 #define COPY_RUST_MEMBER
 
 #endif // MOZ_RUST_URLPARSE
 
-using mozilla::dom::EncodingUtils;
 using namespace mozilla::ipc;
 
 namespace mozilla {
 namespace net {
 
 static NS_DEFINE_CID(kThisImplCID, NS_THIS_STANDARDURL_IMPL_CID);
 static NS_DEFINE_CID(kStandardURLCID, NS_STANDARDURL_CID);
 
@@ -193,20 +191,23 @@ nsPrefObserver::Observe(nsISupports *sub
     }
     return NS_OK;
 }
 
 //----------------------------------------------------------------------------
 // nsStandardURL::nsSegmentEncoder
 //----------------------------------------------------------------------------
 
-nsStandardURL::
-nsSegmentEncoder::nsSegmentEncoder(const char *charset)
-    : mCharset(charset)
+nsStandardURL::nsSegmentEncoder::nsSegmentEncoder(const char* charset)
+  : mEncoding(charset ? Encoding::ForLabelNoReplacement(MakeStringSpan(charset))
+                      : nullptr)
 {
+  if (mEncoding == UTF_8_ENCODING) {
+    mEncoding = nullptr;
+  }
 }
 
 int32_t nsStandardURL::
 nsSegmentEncoder::EncodeSegmentCount(const char *str,
                                      const URLSegment &seg,
                                      int16_t mask,
                                      nsAFlatCString &result,
                                      bool &appended,
@@ -219,31 +220,31 @@ nsSegmentEncoder::EncodeSegmentCount(con
     if (!str)
         return 0;
     int32_t len = 0;
     if (seg.mLen > 0) {
         uint32_t pos = seg.mPos;
         len = seg.mLen;
 
         // first honor the origin charset if appropriate. as an optimization,
-        // only do this if the segment is non-ASCII.  Further, if mCharset is
-        // null or the empty string then the origin charset is UTF-8 and there
-        // is nothing to do.
+        // only do this if the segment is non-ASCII.  Further, if mEncoding is
+        // null, then the origin charset is UTF-8 and there is nothing to do.
         nsAutoCString encBuf;
-        if (mCharset && *mCharset && !nsCRT::IsAscii(str + pos, len)) {
-            // we have to encode this segment
-            if (mEncoder || InitUnicodeEncoder()) {
-                NS_ConvertUTF8toUTF16 ucsBuf(Substring(str + pos, str + pos + len));
-                if (mEncoder->Encode(ucsBuf, encBuf)) {
-                    str = encBuf.get();
-                    pos = 0;
-                    len = encBuf.Length();
-                }
-                // else some failure occurred... assume UTF-8 is ok.
-            }
+        if (mEncoding && !nsCRT::IsAscii(str + pos, len)) {
+          // we have to encode this segment
+          nsresult rv;
+          const Encoding* ignored;
+          Tie(rv, ignored) =
+            mEncoding->Encode(Substring(str + pos, str + pos + len), encBuf);
+          if (NS_SUCCEEDED(rv)) {
+            str = encBuf.get();
+            pos = 0;
+            len = encBuf.Length();
+          }
+          // else some failure occurred... assume UTF-8 is ok.
         }
 
         uint32_t initLen = result.Length();
 
         // now perform any required escaping
         if (NS_EscapeURL(str + pos, len, mask, result)) {
             len = result.Length() - initLen;
             appended = true;
@@ -266,34 +267,16 @@ nsSegmentEncoder::EncodeSegment(const ns
     const char *text;
     bool encoded;
     EncodeSegmentCount(str.BeginReading(text), URLSegment(0, str.Length()), mask, result, encoded);
     if (encoded)
         return result;
     return str;
 }
 
-bool nsStandardURL::
-nsSegmentEncoder::InitUnicodeEncoder()
-{
-    NS_ASSERTION(!mEncoder, "Don't call this if we have an encoder already!");
-    // "replacement" won't survive another label resolution
-    nsDependentCString label(mCharset);
-    if (label.EqualsLiteral("replacement")) {
-      // Returning false here causes the caller to use UTF-8.
-      return false;
-    }
-    nsAutoCString encoding;
-    if (!EncodingUtils::FindEncodingForLabelNoReplacement(label, encoding)) {
-      return false;
-    }
-    mEncoder = MakeUnique<nsNCRFallbackEncoderWrapper>(encoding);
-    return true;
-}
-
 #define GET_SEGMENT_ENCODER_INTERNAL(name, useUTF8) \
     nsSegmentEncoder name(useUTF8 ? nullptr : mOriginCharset.get())
 
 #define GET_SEGMENT_ENCODER(name) \
     GET_SEGMENT_ENCODER_INTERNAL(name, true)
 
 #define GET_QUERY_ENCODER(name) \
     GET_SEGMENT_ENCODER_INTERNAL(name, false)
--- a/netwerk/base/nsStandardURL.h
+++ b/netwerk/base/nsStandardURL.h
@@ -5,17 +5,17 @@
 
 #ifndef nsStandardURL_h__
 #define nsStandardURL_h__
 
 #include "nsString.h"
 #include "nsISerializable.h"
 #include "nsIFileURL.h"
 #include "nsIStandardURL.h"
-#include "nsNCRFallbackEncoderWrapper.h"
+#include "mozilla/Encoding.h"
 #include "nsIObserver.h"
 #include "nsCOMPtr.h"
 #include "nsURLHelper.h"
 #include "nsIClassInfo.h"
 #include "nsISizeOf.h"
 #include "mozilla/Attributes.h"
 #include "mozilla/LinkedList.h"
 #include "mozilla/MemoryReporting.h"
@@ -136,21 +136,17 @@ public: /* internal -- HPUX compiler can
          
         // Encode the given string if necessary, and return a reference to
         // the encoded string.  Returns a reference to |buf| if encoding
         // is required.  Otherwise, a reference to |str| is returned.
         const nsACString &EncodeSegment(const nsASingleFragmentCString &str,
                                         int16_t mask,
                                         nsAFlatCString &buf);
     private:
-        bool InitUnicodeEncoder();
-
-        const char* mCharset;  // Caller should keep this alive for
-                               // the life of the segment encoder
-        mozilla::UniquePtr<nsNCRFallbackEncoderWrapper> mEncoder;
+      const Encoding* mEncoding;
     };
     friend class nsSegmentEncoder;
 
     static nsresult NormalizeIPv4(const nsCSubstring &host, nsCString &result);
 
 protected:
     // enum used in a few places to specify how .ref attribute should be handled
     enum RefHandlingEnum {
--- a/netwerk/base/nsUnicharStreamLoader.cpp
+++ b/netwerk/base/nsUnicharStreamLoader.cpp
@@ -210,41 +210,52 @@ nsUnicharStreamLoader::WriteSegmentFun(n
                                        void *aClosure,
                                        const char *aSegment,
                                        uint32_t,
                                        uint32_t aCount,
                                        uint32_t *aWriteCount)
 {
   nsUnicharStreamLoader* self = static_cast<nsUnicharStreamLoader*>(aClosure);
 
-  uint32_t haveRead = self->mBuffer.Length();
-  int32_t srcLen = aCount;
-  int32_t dstLen;
+  nsAString::size_type haveRead(self->mBuffer.Length());
 
-  nsresult rv = self->mDecoder->GetMaxLength(aSegment, srcLen, &dstLen);
-  if (NS_WARN_IF(NS_FAILED(rv))) {
-    return rv;
+  CheckedInt<size_t> needed = self->mDecoder->MaxUTF16BufferLength(aCount);
+  if (!needed.isValid()) {
+    return NS_ERROR_OUT_OF_MEMORY;
   }
 
-  uint32_t capacity = haveRead + dstLen;
-  if (!self->mBuffer.SetCapacity(capacity, fallible)) {
+  CheckedInt<nsAString::size_type> capacity(needed.value());
+  capacity += haveRead;
+  if (!capacity.isValid()) {
+    return NS_ERROR_OUT_OF_MEMORY;
+  }
+
+  if (!self->mBuffer.SetCapacity(capacity.value(), fallible)) {
     return NS_ERROR_OUT_OF_MEMORY;
   }
 
   if (!self->mRawBuffer.Append(aSegment, aCount, fallible)) {
     return NS_ERROR_OUT_OF_MEMORY;
   }
 
-  rv = self->mDecoder->Convert(aSegment,
-                               &srcLen,
-                               self->mBuffer.BeginWriting() + haveRead,
-                               &dstLen);
-  if (NS_WARN_IF(NS_FAILED(rv))) {
-    return rv;
+  uint32_t result;
+  size_t read;
+  size_t written;
+  bool hadErrors;
+
+  Tie(result, read, written, hadErrors) = self->mDecoder->DecodeToUTF16(
+    AsBytes(MakeSpan(aSegment, aCount)),
+    MakeSpan(self->mBuffer.BeginWriting() + haveRead, needed.value()),
+    false);
+  MOZ_ASSERT(result == kInputEmpty);
+  MOZ_ASSERT(read == aCount);
+  Unused << hadErrors;
+
+  CheckedInt<nsAString::size_type> newLen(written);
+  newLen += haveRead;
+  if (!newLen.isValid()) {
+    return NS_ERROR_OUT_OF_MEMORY;
   }
 
-  MOZ_ASSERT(srcLen == static_cast<int32_t>(aCount));
-  haveRead += dstLen;
-
-  self->mBuffer.SetLength(haveRead);
+  self->mBuffer.SetLength(newLen.value());
   *aWriteCount = aCount;
   return NS_OK;
 }
--- a/netwerk/base/nsUnicharStreamLoader.h
+++ b/netwerk/base/nsUnicharStreamLoader.h
@@ -3,17 +3,17 @@
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 #ifndef nsUnicharStreamLoader_h__
 #define nsUnicharStreamLoader_h__
 
 #include "nsIChannel.h"
 #include "nsIUnicharStreamLoader.h"
-#include "nsIUnicodeDecoder.h"
+#include "mozilla/Encoding.h"
 #include "nsCOMPtr.h"
 #include "nsString.h"
 
 class nsIInputStream;
 
 class nsUnicharStreamLoader : public nsIUnicharStreamLoader
 {
 public:
@@ -33,17 +33,17 @@ protected:
 
   /**
    * callback method used for ReadSegments
    */
   static nsresult WriteSegmentFun(nsIInputStream *, void *, const char *,
                                   uint32_t, uint32_t, uint32_t *);
 
   nsCOMPtr<nsIUnicharStreamLoaderObserver> mObserver;
-  nsCOMPtr<nsIUnicodeDecoder>              mDecoder;
+  mozilla::UniquePtr<mozilla::Decoder> mDecoder;
   nsCOMPtr<nsISupports>                    mContext;
   nsCOMPtr<nsIChannel>                     mChannel;
   nsCString                                mCharset;
 
   // This holds the first up-to-512 bytes of the raw stream.
   // It will be passed to the OnDetermineCharset callback.
   nsCString                                mRawData;
 
--- a/netwerk/mime/nsMIMEHeaderParamImpl.cpp
+++ b/netwerk/mime/nsMIMEHeaderParamImpl.cpp
@@ -16,17 +16,16 @@
 #include "nsEscape.h"
 #include "nsIUTF8ConverterService.h"
 #include "nsUConvCID.h"
 #include "nsIServiceManager.h"
 #include "nsMIMEHeaderParamImpl.h"
 #include "nsReadableUtils.h"
 #include "nsNativeCharsetUtils.h"
 #include "nsError.h"
-#include "nsIUnicodeDecoder.h"
 #include "mozilla/dom/EncodingUtils.h"
 
 using mozilla::dom::EncodingUtils;
 
 // static functions declared below are moved from mailnews/mime/src/comi18n.cpp
   
 static char *DecodeQ(const char *, uint32_t);
 static bool Is7bitNonAsciiString(const char *, uint32_t);
--- a/netwerk/protocol/wyciwyg/WyciwygChannelChild.cpp
+++ b/netwerk/protocol/wyciwyg/WyciwygChannelChild.cpp
@@ -556,17 +556,17 @@ NS_IMETHODIMP
 WyciwygChannelChild::SetContentType(const nsACString & aContentType)
 {
   return NS_ERROR_NOT_IMPLEMENTED;
 }
 
 NS_IMETHODIMP
 WyciwygChannelChild::GetContentCharset(nsACString & aContentCharset)
 {
-  aContentCharset.AssignLiteral("UTF-16");
+  aContentCharset.AssignLiteral("UTF-16LE");
   return NS_OK;
 }
 NS_IMETHODIMP
 WyciwygChannelChild::SetContentCharset(const nsACString & aContentCharset)
 {
   return NS_ERROR_NOT_IMPLEMENTED;
 }
 
--- a/netwerk/protocol/wyciwyg/nsWyciwygChannel.cpp
+++ b/netwerk/protocol/wyciwyg/nsWyciwygChannel.cpp
@@ -274,17 +274,17 @@ NS_IMETHODIMP
 nsWyciwygChannel::SetContentType(const nsACString &aContentType)
 {
   return NS_ERROR_NOT_IMPLEMENTED;
 }
 
 NS_IMETHODIMP
 nsWyciwygChannel::GetContentCharset(nsACString &aContentCharset)
 {
-  aContentCharset.AssignLiteral("UTF-16");
+  aContentCharset.AssignLiteral("UTF-16LE");
   return NS_OK;
 }
 
 NS_IMETHODIMP
 nsWyciwygChannel::SetContentCharset(const nsACString &aContentCharset)
 {
   return NS_ERROR_NOT_IMPLEMENTED;
 }
--- a/netwerk/streamconv/converters/nsDirIndexParser.cpp
+++ b/netwerk/streamconv/converters/nsDirIndexParser.cpp
@@ -234,26 +234,25 @@ nsDirIndexParser::ParseData(nsIDirIndex 
       // don't unescape at this point, so that UnEscapeAndConvert() can
       filename = value;
       
       bool    success = false;
       
       nsAutoString entryuri;
       
       if (gTextToSubURI) {
-        char16_t   *result = nullptr;
-        if (NS_SUCCEEDED(rv = gTextToSubURI->UnEscapeAndConvert(mEncoding.get(), filename.get(),
-                                                                &result)) && (result)) {
-          if (*result) {
+        nsAutoString result;
+        if (NS_SUCCEEDED(rv = gTextToSubURI->UnEscapeAndConvert(
+                           mEncoding, filename, result))) {
+          if (!result.IsEmpty()) {
             aIdx->SetLocation(filename.get());
             if (!mHasDescription)
-              aIdx->SetDescription(result);
+              aIdx->SetDescription(result.get());
             success = true;
           }
-          free(result);
         } else {
           NS_WARNING("UnEscapeAndConvert error");
         }
       }
       
       if (!success) {
         // if unsuccessfully at charset conversion, then
         // just fallback to unescape'ing in-place
--- a/netwerk/streamconv/converters/nsIndexedToHTML.cpp
+++ b/netwerk/streamconv/converters/nsIndexedToHTML.cpp
@@ -495,32 +495,30 @@ nsIndexedToHTML::DoOnStartRequest(nsIReq
 
     nsXPIDLCString encoding;
     rv = uri->GetOriginCharset(encoding);
     if (NS_FAILED(rv)) return rv;
     if (encoding.IsEmpty()) {
       encoding.AssignLiteral("UTF-8");
     }
 
-    nsXPIDLString unEscapeSpec;
-    rv = mTextToSubURI->UnEscapeAndConvert(encoding, titleUri.get(),
-                                           getter_Copies(unEscapeSpec));
+    nsAutoString unEscapeSpec;
+    rv = mTextToSubURI->UnEscapeAndConvert(encoding, titleUri, unEscapeSpec);
     // unescape may fail because
     // 1. file URL may be encoded in platform charset for backward compatibility
     // 2. query part may not be encoded in UTF-8 (see bug 261929)
     // so try the platform's default if this is file url
     if (NS_FAILED(rv) && isSchemeFile) {
         nsCOMPtr<nsIPlatformCharset> platformCharset(do_GetService(NS_PLATFORMCHARSET_CONTRACTID, &rv));
         NS_ENSURE_SUCCESS(rv, rv);
         nsAutoCString charset;
         rv = platformCharset->GetCharset(kPlatformCharsetSel_FileName, charset);
         NS_ENSURE_SUCCESS(rv, rv);
 
-        rv = mTextToSubURI->UnEscapeAndConvert(charset.get(), titleUri.get(),
-                                               getter_Copies(unEscapeSpec));
+        rv = mTextToSubURI->UnEscapeAndConvert(charset, titleUri, unEscapeSpec);
     }
     if (NS_FAILED(rv)) return rv;
 
     nsXPIDLString htmlEscSpec;
     htmlEscSpec.Adopt(nsEscapeHTML2(unEscapeSpec.get(),
                                     unEscapeSpec.Length()));
 
     nsXPIDLString title;
--- a/parser/html/nsHtml5AttributeName.cpp
+++ b/parser/html/nsHtml5AttributeName.cpp
@@ -33,17 +33,16 @@
 #include "nsNameSpaceManager.h"
 #include "nsIContent.h"
 #include "nsTraceRefcnt.h"
 #include "jArray.h"
 #include "nsHtml5ArrayCopy.h"
 #include "nsAHtml5TreeBuilderState.h"
 #include "nsGkAtoms.h"
 #include "nsHtml5ByteReadable.h"
-#include "nsIUnicodeDecoder.h"
 #include "nsHtml5Macros.h"
 #include "nsIContentHandle.h"
 #include "nsHtml5Portability.h"
 
 #include "nsHtml5ElementName.h"
 #include "nsHtml5Tokenizer.h"
 #include "nsHtml5TreeBuilder.h"
 #include "nsHtml5MetaScanner.h"
--- a/parser/html/nsHtml5AttributeName.h
+++ b/parser/html/nsHtml5AttributeName.h
@@ -34,17 +34,16 @@
 #include "nsNameSpaceManager.h"
 #include "nsIContent.h"
 #include "nsTraceRefcnt.h"
 #include "jArray.h"
 #include "nsHtml5ArrayCopy.h"
 #include "nsAHtml5TreeBuilderState.h"
 #include "nsGkAtoms.h"
 #include "nsHtml5ByteReadable.h"
-#include "nsIUnicodeDecoder.h"
 #include "nsHtml5Macros.h"
 #include "nsIContentHandle.h"
 #include "nsHtml5Portability.h"
 
 class nsHtml5StreamParser;
 
 class nsHtml5ElementName;
 class nsHtml5Tokenizer;
--- a/parser/html/nsHtml5ElementName.cpp
+++ b/parser/html/nsHtml5ElementName.cpp
@@ -33,17 +33,16 @@
 #include "nsNameSpaceManager.h"
 #include "nsIContent.h"
 #include "nsTraceRefcnt.h"
 #include "jArray.h"
 #include "nsHtml5ArrayCopy.h"
 #include "nsAHtml5TreeBuilderState.h"
 #include "nsGkAtoms.h"
 #include "nsHtml5ByteReadable.h"
-#include "nsIUnicodeDecoder.h"
 #include "nsHtml5Macros.h"
 #include "nsIContentHandle.h"
 #include "nsHtml5Portability.h"
 
 #include "nsHtml5AttributeName.h"
 #include "nsHtml5Tokenizer.h"
 #include "nsHtml5TreeBuilder.h"
 #include "nsHtml5MetaScanner.h"
--- a/parser/html/nsHtml5ElementName.h
+++ b/parser/html/nsHtml5ElementName.h
@@ -34,17 +34,16 @@
 #include "nsNameSpaceManager.h"
 #include "nsIContent.h"
 #include "nsTraceRefcnt.h"
 #include "jArray.h"
 #include "nsHtml5ArrayCopy.h"
 #include "nsAHtml5TreeBuilderState.h"
 #include "nsGkAtoms.h"
 #include "nsHtml5ByteReadable.h"
-#include "nsIUnicodeDecoder.h"
 #include "nsHtml5Macros.h"
 #include "nsIContentHandle.h"
 #include "nsHtml5Portability.h"
 
 class nsHtml5StreamParser;
 
 class nsHtml5AttributeName;
 class nsHtml5Tokenizer;
--- a/parser/html/nsHtml5HtmlAttributes.cpp
+++ b/parser/html/nsHtml5HtmlAttributes.cpp
@@ -28,17 +28,16 @@
 #include "nsHtml5String.h"
 #include "nsNameSpaceManager.h"
 #include "nsIContent.h"
 #include "nsTraceRefcnt.h"
 #include "jArray.h"
 #include "nsHtml5ArrayCopy.h"
 #include "nsAHtml5TreeBuilderState.h"
 #include "nsHtml5ByteReadable.h"
-#include "nsIUnicodeDecoder.h"
 #include "nsHtml5Macros.h"
 #include "nsIContentHandle.h"
 
 #include "nsHtml5Tokenizer.h"
 #include "nsHtml5TreeBuilder.h"
 #include "nsHtml5MetaScanner.h"
 #include "nsHtml5AttributeName.h"
 #include "nsHtml5ElementName.h"
--- a/parser/html/nsHtml5HtmlAttributes.h
+++ b/parser/html/nsHtml5HtmlAttributes.h
@@ -29,17 +29,16 @@
 #include "nsHtml5String.h"
 #include "nsNameSpaceManager.h"
 #include "nsIContent.h"
 #include "nsTraceRefcnt.h"
 #include "jArray.h"
 #include "nsHtml5ArrayCopy.h"
 #include "nsAHtml5TreeBuilderState.h"
 #include "nsHtml5ByteReadable.h"
-#include "nsIUnicodeDecoder.h"
 #include "nsHtml5Macros.h"
 #include "nsIContentHandle.h"
 #include "nsTArray.h"
 #include "nsHtml5AttributeEntry.h"
 
 class nsHtml5StreamParser;
 
 class nsHtml5Tokenizer;
--- a/parser/html/nsHtml5MetaScanner.cpp
+++ b/parser/html/nsHtml5MetaScanner.cpp
@@ -34,17 +34,16 @@
 #include "nsNameSpaceManager.h"
 #include "nsIContent.h"
 #include "nsTraceRefcnt.h"
 #include "jArray.h"
 #include "nsHtml5ArrayCopy.h"
 #include "nsAHtml5TreeBuilderState.h"
 #include "nsGkAtoms.h"
 #include "nsHtml5ByteReadable.h"
-#include "nsIUnicodeDecoder.h"
 #include "nsHtml5Macros.h"
 #include "nsIContentHandle.h"
 #include "nsHtml5Portability.h"
 
 #include "nsHtml5AttributeName.h"
 #include "nsHtml5ElementName.h"
 #include "nsHtml5Tokenizer.h"
 #include "nsHtml5TreeBuilder.h"
--- a/parser/html/nsHtml5MetaScanner.h
+++ b/parser/html/nsHtml5MetaScanner.h
@@ -35,17 +35,16 @@
 #include "nsNameSpaceManager.h"
 #include "nsIContent.h"
 #include "nsTraceRefcnt.h"
 #include "jArray.h"
 #include "nsHtml5ArrayCopy.h"
 #include "nsAHtml5TreeBuilderState.h"
 #include "nsGkAtoms.h"
 #include "nsHtml5ByteReadable.h"
-#include "nsIUnicodeDecoder.h"
 #include "nsHtml5Macros.h"
 #include "nsIContentHandle.h"
 #include "nsHtml5Portability.h"
 
 class nsHtml5StreamParser;
 
 class nsHtml5AttributeName;
 class nsHtml5ElementName;
--- a/parser/html/nsHtml5MetaScannerCppSupplement.h
+++ b/parser/html/nsHtml5MetaScannerCppSupplement.h
@@ -1,13 +1,12 @@
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
  
-#include "nsEncoderDecoderUtils.h"
 #include "nsISupportsImpl.h"
 
 #include "mozilla/dom/EncodingUtils.h"
 
 using mozilla::dom::EncodingUtils;
 
 void
 nsHtml5MetaScanner::sniff(nsHtml5ByteReadable* bytes, nsACString& charset)
--- a/parser/html/nsHtml5OwningUTF16Buffer.cpp
+++ b/parser/html/nsHtml5OwningUTF16Buffer.cpp
@@ -48,16 +48,28 @@ nsHtml5OwningUTF16Buffer::FalliblyCreate
 }
 
 void
 nsHtml5OwningUTF16Buffer::Swap(nsHtml5OwningUTF16Buffer* aOther)
 {
   nsHtml5UTF16Buffer::Swap(aOther);
 }
 
+Span<char16_t>
+nsHtml5OwningUTF16Buffer::TailAsSpan(int32_t aBufferSize)
+{
+  MOZ_ASSERT(aBufferSize >= getEnd());
+  return MakeSpan(getBuffer() + getEnd(), aBufferSize - getEnd());
+}
+
+void
+nsHtml5OwningUTF16Buffer::AdvanceEnd(int32_t aNumberOfCodeUnits)
+{
+  setEnd(getEnd() + aNumberOfCodeUnits);
+}
 
 // Not using macros for AddRef and Release in order to be able to refcount on
 // and create on different threads.
 
 nsrefcnt
 nsHtml5OwningUTF16Buffer::AddRef()
 {
   NS_PRECONDITION(int32_t(mRefCnt) >= 0, "Illegal refcount.");
--- a/parser/html/nsHtml5OwningUTF16Buffer.h
+++ b/parser/html/nsHtml5OwningUTF16Buffer.h
@@ -1,16 +1,17 @@
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 #ifndef nsHtml5OwningUTF16Buffer_h
 #define nsHtml5OwningUTF16Buffer_h
 
 #include "nsHtml5UTF16Buffer.h"
+#include "mozilla/Span.h"
 
 class nsHtml5OwningUTF16Buffer : public nsHtml5UTF16Buffer
 {
   private:
 
     /**
      * Passes a buffer and its length to the superclass constructor.
      */
@@ -44,15 +45,25 @@ public:
     static already_AddRefed<nsHtml5OwningUTF16Buffer>
     FalliblyCreate(int32_t aLength);
 
     /**
      * Swap start, end and buffer fields with another object.
      */
     void Swap(nsHtml5OwningUTF16Buffer* aOther);
 
+    /**
+     * Return a span from `end` to `aBufferSize`.
+     */
+    mozilla::Span<char16_t> TailAsSpan(int32_t aBufferSize);
+
+    /**
+     * Add the argument to `end`.
+     */
+    void AdvanceEnd(int32_t aNumberOfCodeUnits);
+
     nsrefcnt AddRef();
     nsrefcnt Release();
   private:
     nsAutoRefCnt mRefCnt;
 };
 
 #endif // nsHtml5OwningUTF16Buffer_h
--- a/parser/html/nsHtml5Parser.cpp
+++ b/parser/html/nsHtml5Parser.cpp
@@ -60,17 +60,17 @@ nsHtml5Parser::~nsHtml5Parser()
   if (mDocWriteSpeculativeTokenizer) {
     mDocWriteSpeculativeTokenizer->end();
   }
 }
 
 NS_IMETHODIMP_(void)
 nsHtml5Parser::SetContentSink(nsIContentSink* aSink)
 {
-  NS_ASSERTION(aSink == static_cast<nsIContentSink*> (mExecutor), 
+  NS_ASSERTION(aSink == static_cast<nsIContentSink*>(mExecutor),
                "Attempt to set a foreign sink.");
 }
 
 NS_IMETHODIMP_(nsIContentSink*)
 nsHtml5Parser::GetContentSink()
 {
   return static_cast<nsIContentSink*> (mExecutor);
 }
@@ -90,17 +90,17 @@ nsHtml5Parser::SetCommand(const char* aC
                !strcmp(aCommand, "import") ||
                !strcmp(aCommand, kLoadAsData),
                "Unsupported parser command");
 }
 
 NS_IMETHODIMP_(void)
 nsHtml5Parser::SetCommand(eParserCommands aParserCommand)
 {
-  NS_ASSERTION(aParserCommand == eViewNormal, 
+  NS_ASSERTION(aParserCommand == eViewNormal,
                "Parser command was not eViewNormal.");
 }
 
 NS_IMETHODIMP_(void)
 nsHtml5Parser::SetDocumentCharset(const nsACString& aCharset,
                                   int32_t aCharsetSource)
 {
   NS_PRECONDITION(!mExecutor->HasStarted(),
@@ -185,17 +185,17 @@ nsHtml5Parser::Parse(nsIURI* aURL,
                      nsIRequestObserver* aObserver,
                      void* aKey, // legacy; ignored
                      nsDTDMode aMode) // legacy; ignored
 {
   /*
    * Do NOT cause WillBuildModel to be called synchronously from here!
    * The document won't be ready for it until OnStartRequest!
    */
-  NS_PRECONDITION(!mExecutor->HasStarted(), 
+  NS_PRECONDITION(!mExecutor->HasStarted(),
                   "Tried to start parse without initializing the parser.");
   NS_PRECONDITION(GetStreamParser(),
                   "Can't call this Parse() variant on script-created parser");
   GetStreamParser()->SetObserver(aObserver);
   GetStreamParser()->SetViewSourceTitle(aURL); // In case we're viewing source
   mExecutor->SetStreamParser(GetStreamParser());
   mExecutor->SetParser(this);
   return NS_OK;
@@ -214,17 +214,17 @@ nsHtml5Parser::Parse(const nsAString& aS
   }
   if (aSourceBuffer.Length() > INT32_MAX) {
     return mExecutor->MarkAsBroken(NS_ERROR_OUT_OF_MEMORY);
   }
 
   // Maintain a reference to ourselves so we don't go away
   // till we're completely done. The old parser grips itself in this method.
   nsCOMPtr<nsIParser> kungFuDeathGrip(this);
-  
+
   // Gripping the other objects just in case, since the other old grip
   // required grips to these, too.
   RefPtr<nsHtml5StreamParser> streamKungFuDeathGrip(GetStreamParser());
   mozilla::Unused << streamKungFuDeathGrip; // Not used within function
   RefPtr<nsHtml5TreeOpExecutor> executor(mExecutor);
 
   if (!executor->HasStarted()) {
     NS_ASSERTION(!GetStreamParser(),
@@ -243,18 +243,18 @@ nsHtml5Parser::Parse(const nsAString& aS
 
     mTokenizer->start();
     executor->Start();
     if (!aContentType.EqualsLiteral("text/html")) {
       mTreeBuilder->StartPlainText();
       mTokenizer->StartPlainText();
     }
     /*
-     * If you move the following line, be very careful not to cause 
-     * WillBuildModel to be called before the document has had its 
+     * If you move the following line, be very careful not to cause
+     * WillBuildModel to be called before the document has had its
      * script global object set.
      */
     rv = executor->WillBuildModel(eDTDMode_unknown);
     NS_ENSURE_SUCCESS(rv, rv);
   }
 
   // Return early if the parser has processed EOF
   if (executor->IsComplete()) {
--- a/parser/html/nsHtml5Portability.h
+++ b/parser/html/nsHtml5Portability.h
@@ -34,17 +34,16 @@
 #include "nsNameSpaceManager.h"
 #include "nsIContent.h"
 #include "nsTraceRefcnt.h"
 #include "jArray.h"
 #include "nsHtml5ArrayCopy.h"
 #include "nsAHtml5TreeBuilderState.h"
 #include "nsGkAtoms.h"
 #include "nsHtml5ByteReadable.h"
-#include "nsIUnicodeDecoder.h"
 #include "nsHtml5Macros.h"
 #include "nsIContentHandle.h"
 
 class nsHtml5StreamParser;
 
 class nsHtml5AttributeName;
 class nsHtml5ElementName;
 class nsHtml5Tokenizer;
--- a/parser/html/nsHtml5StackNode.cpp
+++ b/parser/html/nsHtml5StackNode.cpp
@@ -34,17 +34,16 @@
 #include "nsNameSpaceManager.h"
 #include "nsIContent.h"
 #include "nsTraceRefcnt.h"
 #include "jArray.h"
 #include "nsHtml5ArrayCopy.h"
 #include "nsAHtml5TreeBuilderState.h"
 #include "nsGkAtoms.h"
 #include "nsHtml5ByteReadable.h"
-#include "nsIUnicodeDecoder.h"
 #include "nsHtml5Macros.h"
 #include "nsIContentHandle.h"
 #include "nsHtml5Portability.h"
 
 #include "nsHtml5AttributeName.h"
 #include "nsHtml5ElementName.h"
 #include "nsHtml5Tokenizer.h"
 #include "nsHtml5TreeBuilder.h"
--- a/parser/html/nsHtml5StackNode.h
+++ b/parser/html/nsHtml5StackNode.h
@@ -35,17 +35,16 @@
 #include "nsNameSpaceManager.h"
 #include "nsIContent.h"
 #include "nsTraceRefcnt.h"
 #include "jArray.h"
 #include "nsHtml5ArrayCopy.h"
 #include "nsAHtml5TreeBuilderState.h"
 #include "nsGkAtoms.h"
 #include "nsHtml5ByteReadable.h"
-#include "nsIUnicodeDecoder.h"
 #include "nsHtml5Macros.h"
 #include "nsIContentHandle.h"
 #include "nsHtml5Portability.h"
 
 class nsHtml5StreamParser;
 
 class nsHtml5AttributeName;
 class nsHtml5ElementName;
--- a/parser/html/nsHtml5StateSnapshot.cpp
+++ b/parser/html/nsHtml5StateSnapshot.cpp
@@ -33,17 +33,16 @@
 #include "nsNameSpaceManager.h"
 #include "nsIContent.h"
 #include "nsTraceRefcnt.h"
 #include "jArray.h"
 #include "nsHtml5ArrayCopy.h"
 #include "nsAHtml5TreeBuilderState.h"
 #include "nsGkAtoms.h"
 #include "nsHtml5ByteReadable.h"
-#include "nsIUnicodeDecoder.h"
 #include "nsHtml5Macros.h"
 #include "nsIContentHandle.h"
 #include "nsHtml5Portability.h"
 
 #include "nsHtml5AttributeName.h"
 #include "nsHtml5ElementName.h"
 #include "nsHtml5Tokenizer.h"
 #include "nsHtml5TreeBuilder.h"
--- a/parser/html/nsHtml5StateSnapshot.h
+++ b/parser/html/nsHtml5StateSnapshot.h
@@ -34,17 +34,16 @@
 #include "nsNameSpaceManager.h"
 #include "nsIContent.h"
 #include "nsTraceRefcnt.h"
 #include "jArray.h"
 #include "nsHtml5ArrayCopy.h"
 #include "nsAHtml5TreeBuilderState.h"
 #include "nsGkAtoms.h"
 #include "nsHtml5ByteReadable.h"
-#include "nsIUnicodeDecoder.h"
 #include "nsHtml5Macros.h"
 #include "nsIContentHandle.h"
 #include "nsHtml5Portability.h"
 
 class nsHtml5StreamParser;
 
 class nsHtml5AttributeName;
 class nsHtml5ElementName;
--- a/parser/html/nsHtml5StreamParser.cpp
+++ b/parser/html/nsHtml5StreamParser.cpp
@@ -573,17 +573,17 @@ nsHtml5StreamParser::FinalizeSniffing(co
   if (mCharsetSource >= kCharsetFromHintPrevDoc) {
     mFeedChardet = false;
     return SetupDecodingAndWriteSniffingBufferAndCurrentSegment(aFromSegment, aCount, aWriteCount);
   }
   // Check for BOMless UTF-16 with Basic
   // Latin content for compat with IE. See bug 631751.
   SniffBOMlessUTF16BasicLatin(aFromSegment, aCountToSniffingLimit);
   // the charset may have been set now
-  // maybe try chardet now; 
+  // maybe try chardet now;
   if (mFeedChardet) {
     bool dontFeed;
     nsresult rv;
     if (mSniffingBuffer) {
       rv = mChardet->DoIt((const char*)mSniffingBuffer.get(), mSniffingLength, &dontFeed);
       mFeedChardet = !dontFeed;
       NS_ENSURE_SUCCESS(rv, rv);
     }
@@ -603,17 +603,17 @@ nsHtml5StreamParser::FinalizeSniffing(co
     if (mFeedChardet && (!aFromSegment || mReparseForbidden)) {
       // mReparseForbidden is checked so that we get to use the sniffing
       // buffer with the best guess so far if we aren't allowed to guess
       // better later.
       mFeedChardet = false;
       rv = mChardet->Done();
       NS_ENSURE_SUCCESS(rv, rv);
     }
-    // fall thru; callback may have changed charset  
+    // fall thru; callback may have changed charset
   }
   if (mCharsetSource == kCharsetUninitialized) {
     // Hopefully this case is never needed, but dealing with it anyway
     mCharset.AssignLiteral("windows-1252");
     mCharsetSource = kCharsetFromFallback;
     mTreeBuilder->SetDocumentCharset(mCharset, mCharsetSource);
   } else if (mMode == LOAD_AS_DATA &&
              mCharsetSource == kCharsetFromFallback) {
@@ -705,17 +705,17 @@ nsHtml5StreamParser::SniffStreamBytes(co
         break;
       default:
         mBomState = BOM_SNIFFING_OVER;
         break;
     }
   }
   // if we get here, there either was no BOM or the BOM sniffing isn't complete
   // yet
-  
+
   MOZ_ASSERT(mCharsetSource != kCharsetFromByteOrderMark,
              "Should not come here if BOM was found.");
   MOZ_ASSERT(mCharsetSource != kCharsetFromOtherComponent,
              "kCharsetFromOtherComponent is for XSLT.");
 
   if (mBomState == BOM_SNIFFING_OVER &&
     mCharsetSource == kCharsetFromChannel) {
     // There was no BOM and the charset came from channel. mCharset
@@ -729,17 +729,17 @@ nsHtml5StreamParser::SniffStreamBytes(co
       aCount, aWriteCount);
   }
 
   if (!mMetaScanner && (mMode == NORMAL ||
                         mMode == VIEW_SOURCE_HTML ||
                         mMode == LOAD_AS_DATA)) {
     mMetaScanner = new nsHtml5MetaScanner(mTreeBuilder);
   }
-  
+
   if (mSniffingLength + aCount >= NS_HTML5_STREAM_PARSER_SNIFFING_BUFFER_SIZE) {
     // this is the last buffer
     uint32_t countToSniffingLimit =
         NS_HTML5_STREAM_PARSER_SNIFFING_BUFFER_SIZE - mSniffingLength;
     if (mMode == NORMAL || mMode == VIEW_SOURCE_HTML || mMode == LOAD_AS_DATA) {
       nsHtml5ByteReadable readable(aFromSegment, aFromSegment +
           countToSniffingLimit);
       nsAutoCString encoding;
@@ -836,65 +836,58 @@ nsHtml5StreamParser::WriteStreamBytes(co
     RefPtr<nsHtml5OwningUTF16Buffer> newBuf =
       nsHtml5OwningUTF16Buffer::FalliblyCreate(
         NS_HTML5_STREAM_PARSER_READ_BUFFER_SIZE);
     if (!newBuf) {
       return NS_ERROR_OUT_OF_MEMORY;
     }
     mLastBuffer = (mLastBuffer->next = newBuf.forget());
   }
-  int32_t totalByteCount = 0;
+  size_t totalRead = 0;
+  auto src = MakeSpan(aFromSegment, aCount);
   for (;;) {
-    int32_t end = mLastBuffer->getEnd();
-    int32_t byteCount = aCount - totalByteCount;
-    int32_t utf16Count = NS_HTML5_STREAM_PARSER_READ_BUFFER_SIZE - end;
-
-    NS_ASSERTION(utf16Count, "Trying to convert into a buffer with no free space!");
-    // byteCount may be zero to force the decoder to output a pending surrogate
-    // pair.
-
-    nsresult convResult = mUnicodeDecoder->Convert((const char*)aFromSegment, &byteCount, mLastBuffer->getBuffer() + end, &utf16Count);
-    MOZ_ASSERT(NS_SUCCEEDED(convResult));
-
-    end += utf16Count;
-    mLastBuffer->setEnd(end);
-    totalByteCount += byteCount;
-    aFromSegment += byteCount;
-
-    NS_ASSERTION(end <= NS_HTML5_STREAM_PARSER_READ_BUFFER_SIZE,
-        "The Unicode decoder wrote too much data.");
-    NS_ASSERTION(byteCount >= -1, "The decoder consumed fewer than -1 bytes.");
-
-    if (convResult == NS_PARTIAL_MORE_OUTPUT) {
+    auto dst = mLastBuffer->TailAsSpan(NS_HTML5_STREAM_PARSER_READ_BUFFER_SIZE);
+    uint32_t result;
+    size_t read;
+    size_t written;
+    bool hadErrors;
+    Tie(result, read, written, hadErrors) =
+      mUnicodeDecoder->DecodeToUTF16(src, dst, false);
+    Unused << hadErrors;
+    src = src.From(read);
+    totalRead += read;
+    mLastBuffer->AdvanceEnd(written);
+    if (result == kOutputFull) {
       RefPtr<nsHtml5OwningUTF16Buffer> newBuf =
         nsHtml5OwningUTF16Buffer::FalliblyCreate(
           NS_HTML5_STREAM_PARSER_READ_BUFFER_SIZE);
       if (!newBuf) {
         return NS_ERROR_OUT_OF_MEMORY;
       }
       mLastBuffer = (mLastBuffer->next = newBuf.forget());
       // All input may have been consumed if there is a pending surrogate pair
       // that doesn't fit in the output buffer. Loop back to push a zero-length
       // input to the decoder in that case.
     } else {
-      NS_ASSERTION(totalByteCount == (int32_t)aCount,
-          "The Unicode decoder consumed the wrong number of bytes.");
-      *aWriteCount = (uint32_t)totalByteCount;
+      MOZ_ASSERT(totalRead == aCount,
+                 "The Unicode decoder consumed the wrong number of bytes.");
+      *aWriteCount = totalRead;
       return NS_OK;
     }
   }
 }
 
 nsresult
 nsHtml5StreamParser::OnStartRequest(nsIRequest* aRequest, nsISupports* aContext)
 {
   NS_PRECONDITION(STREAM_NOT_STARTED == mStreamState,
                   "Got OnStartRequest when the stream had already started.");
-  NS_PRECONDITION(!mExecutor->HasStarted(), 
-                  "Got OnStartRequest at the wrong stage in the executor life cycle.");
+  NS_PRECONDITION(
+    !mExecutor->HasStarted(),
+    "Got OnStartRequest at the wrong stage in the executor life cycle.");
   NS_ASSERTION(NS_IsMainThread(), "Wrong thread!");
   if (mObserver) {
     mObserver->OnStartRequest(aRequest, aContext);
   }
   mRequest = aRequest;
 
   mStreamState = STREAM_BEING_READ;
 
@@ -929,23 +922,23 @@ nsHtml5StreamParser::OnStartRequest(nsIR
     nsAutoString viewSourceTitle;
     CopyUTF8toUTF16(mViewSourceTitle, viewSourceTitle);
     mTreeBuilder->EnsureBufferSpace(viewSourceTitle.Length());
     mTreeBuilder->StartPlainTextViewSource(viewSourceTitle);
     mTokenizer->StartPlainText();
   }
 
   /*
-   * If you move the following line, be very careful not to cause 
-   * WillBuildModel to be called before the document has had its 
+   * If you move the following line, be very careful not to cause
+   * WillBuildModel to be called before the document has had its
    * script global object set.
    */
   rv = mExecutor->WillBuildModel(eDTDMode_unknown);
   NS_ENSURE_SUCCESS(rv, rv);
-  
+
   RefPtr<nsHtml5OwningUTF16Buffer> newBuf =
     nsHtml5OwningUTF16Buffer::FalliblyCreate(
       NS_HTML5_STREAM_PARSER_READ_BUFFER_SIZE);
   if (!newBuf) {
     // marks this stream parser as terminated,
     // which prevents entry to code paths that
     // would use mFirstBuffer or mLastBuffer.
     return mExecutor->MarkAsBroken(NS_ERROR_OUT_OF_MEMORY);
@@ -990,17 +983,17 @@ nsHtml5StreamParser::OnStartRequest(nsIR
   if (mCharsetSource == kCharsetFromParentFrame) {
     // Remember this in case chardet overwrites mCharsetSource
     mInitialEncodingWasFromParentFrame = true;
   }
 
   if (mCharsetSource >= kCharsetFromAutoDetection) {
     mFeedChardet = false;
   }
-  
+
   nsCOMPtr<nsIWyciwygChannel> wyciwygChannel(do_QueryInterface(mRequest));
   if (mCharsetSource < kCharsetFromUtf8OnlyMime && !wyciwygChannel) {
     // we aren't ready to commit to an encoding yet
     // leave converter uninstantiated for now
     return NS_OK;
   }
 
   // We are reloading a document.open()ed doc or loading JSON/WebVTT/etc. into
@@ -1054,17 +1047,17 @@ nsHtml5StreamParser::DoStopRequest()
   } else if (mFeedChardet) {
     mChardet->Done();
   }
 
   if (IsTerminatedOrInterrupted()) {
     return;
   }
 
-  ParseAvailableData(); 
+  ParseAvailableData();
 }
 
 class nsHtml5RequestStopper : public Runnable
 {
   private:
     nsHtml5RefPtr<nsHtml5StreamParser> mStreamParser;
   public:
     explicit nsHtml5RequestStopper(nsHtml5StreamParser* aStreamParser)
@@ -1318,17 +1311,17 @@ nsHtml5StreamParser::internalEncodingDec
   // request.
   mFeedChardet = false;
   mTreeBuilder->NeedsCharsetSwitchTo(newEncoding,
                                      kCharsetFromMetaTag,
                                      mTokenizer->getLineNumber());
   FlushTreeOpsAndDisarmTimer();
   Interrupt();
   // the tree op executor will cause the stream parser to terminate
-  // if the charset switch request is accepted or it'll uninterrupt 
+  // if the charset switch request is accepted or it'll uninterrupt
   // if the request failed. Note that if the restart request fails,
   // we don't bother trying to make chardet resume. Might as well
   // assume that chardet-requested restarts would fail, too.
   return true;
 }
 
 void
 nsHtml5StreamParser::FlushTreeOpsAndDisarmTimer()
@@ -1445,31 +1438,31 @@ nsHtml5StreamParser::ParseAvailableData(
         return;
       }
       mLastWasCR = mTokenizer->tokenizeBuffer(mFirstBuffer);
       nsresult rv;
       if (NS_FAILED((rv = mTreeBuilder->IsBroken()))) {
         MarkAsBroken(rv);
         return;
       }
-      // At this point, internalEncodingDeclaration() may have called 
+      // At this point, internalEncodingDeclaration() may have called
       // Terminate, but that never happens together with script.
       // Can't assert that here, though, because it's possible that the main
       // thread has called Terminate() while this thread was parsing.
       if (mTreeBuilder->HasScript()) {
         // HasScript() cannot return true if the tree builder is preventing
         // script execution.
         MOZ_ASSERT(mMode == NORMAL);
         mozilla::MutexAutoLock speculationAutoLock(mSpeculationMutex);
-        nsHtml5Speculation* speculation = 
+        nsHtml5Speculation* speculation =
           new nsHtml5Speculation(mFirstBuffer,
                                  mFirstBuffer->getStart(),
                                  mTokenizer->getLineNumber(),
                                  mTreeBuilder->newSnapshot());
-        mTreeBuilder->AddSnapshotToScript(speculation->GetSnapshot(), 
+        mTreeBuilder->AddSnapshotToScript(speculation->GetSnapshot(),
                                           speculation->GetStartLineNumber());
         FlushTreeOpsAndDisarmTimer();
         mTreeBuilder->SetOpSink(speculation);
         mSpeculations.AppendElement(speculation); // adopts the pointer
         mSpeculating = true;
       }
       if (IsTerminatedOrInterrupted()) {
         return;
@@ -1493,17 +1486,17 @@ public:
     mozilla::MutexAutoLock autoLock(mStreamParser->mTokenizerMutex);
     mStreamParser->Uninterrupt();
     mStreamParser->ParseAvailableData();
     return NS_OK;
   }
 };
 
 void
-nsHtml5StreamParser::ContinueAfterScripts(nsHtml5Tokenizer* aTokenizer, 
+nsHtml5StreamParser::ContinueAfterScripts(nsHtml5Tokenizer* aTokenizer,
                                           nsHtml5TreeBuilder* aTreeBuilder,
                                           bool aLastWasCR)
 {
   NS_ASSERTION(NS_IsMainThread(), "Wrong thread!");
   NS_ASSERTION(!(mMode == VIEW_SOURCE_HTML || mMode == VIEW_SOURCE_XML),
       "ContinueAfterScripts called in view source mode!");
   if (NS_FAILED(mExecutor->IsBroken())) {
     return;
@@ -1514,45 +1507,44 @@ nsHtml5StreamParser::ContinueAfterScript
   bool speculationFailed = false;
   {
     mozilla::MutexAutoLock speculationAutoLock(mSpeculationMutex);
     if (mSpeculations.IsEmpty()) {
       NS_NOTREACHED("ContinueAfterScripts called without speculations.");
       return;
     }
     nsHtml5Speculation* speculation = mSpeculations.ElementAt(0);
-    if (aLastWasCR || 
-        !aTokenizer->isInDataState() || 
+    if (aLastWasCR || !aTokenizer->isInDataState() ||
         !aTreeBuilder->snapshotMatches(speculation->GetSnapshot())) {
       speculationFailed = true;
       // We've got a failed speculation :-(
       MaybeDisableFutureSpeculation();
       Interrupt(); // Make the parser thread release the tokenizer mutex sooner
       // now fall out of the speculationAutoLock into the tokenizerAutoLock block
     } else {
       // We've got a successful speculation!
       if (mSpeculations.Length() > 1) {
-        // the first speculation isn't the current speculation, so there's 
+        // the first speculation isn't the current speculation, so there's
         // no need to bother the parser thread.
         speculation->FlushToSink(mExecutor);
         NS_ASSERTION(!mExecutor->IsScriptExecuting(),
           "ParseUntilBlocked() was supposed to ensure we don't come "
           "here when scripts are executing.");
         NS_ASSERTION(mExecutor->IsInFlushLoop(), "How are we here if "
           "RunFlushLoop() didn't call ParseUntilBlocked() which is the "
           "only caller of this method?");
         mSpeculations.RemoveElementAt(0);
         return;
       }
       // else
       Interrupt(); // Make the parser thread release the tokenizer mutex sooner
-      
+
       // now fall through
-      // the first speculation is the current speculation. Need to 
-      // release the the speculation mutex and acquire the tokenizer 
+      // the first speculation is the current speculation. Need to
+      // release the the speculation mutex and acquire the tokenizer
       // mutex. (Just acquiring the other mutex here would deadlock)
     }
   }
   {
     mozilla::MutexAutoLock tokenizerAutoLock(mTokenizerMutex);
     #ifdef DEBUG
     {
       mAtomTable.SetPermittedLookupEventTarget(GetMainThreadSerialEventTarget());
@@ -1580,32 +1572,32 @@ nsHtml5StreamParser::ContinueAfterScript
                                       EmptyString(),
                                       speculation->GetStartLineNumber());
 
       nsHtml5OwningUTF16Buffer* buffer = mFirstBuffer->next;
       while (buffer) {
         buffer->setStart(0);
         buffer = buffer->next;
       }
-      
-      mSpeculations.Clear(); // potentially a huge number of destructors 
+
+      mSpeculations.Clear(); // potentially a huge number of destructors
                              // run here synchronously on the main thread...
 
       mTreeBuilder->flushCharacters(); // empty the pending buffer
       mTreeBuilder->ClearOps(); // now get rid of the failed ops
 
       mTreeBuilder->SetOpSink(mExecutor->GetStage());
       mExecutor->StartReadingFromStage();
       mSpeculating = false;
 
       // Copy state over
       mLastWasCR = aLastWasCR;
       mTokenizer->loadState(aTokenizer);
       mTreeBuilder->loadState(aTreeBuilder, &mAtomTable);
-    } else {    
+    } else {
       // We've got a successful speculation and at least a moment ago it was
       // the current speculation
       mSpeculations.ElementAt(0)->FlushToSink(mExecutor);
       NS_ASSERTION(!mExecutor->IsScriptExecuting(),
         "ParseUntilBlocked() was supposed to ensure we don't come "
         "here when scripts are executing.");
       NS_ASSERTION(mExecutor->IsInFlushLoop(), "How are we here if "
         "RunFlushLoop() didn't call ParseUntilBlocked() which is the "
@@ -1690,17 +1682,17 @@ nsHtml5StreamParser::DropTimer()
   if (mFlushTimer) {
     nsCOMPtr<nsIRunnable> event = new nsHtml5TimerKungFu(this);
     if (NS_FAILED(mEventTarget->Dispatch(event, nsIThread::DISPATCH_NORMAL))) {
       NS_WARNING("Failed to dispatch TimerKungFu event");
     }
   }
 }
 
-// Using a static, because the method name Notify is taken by the chardet 
+// Using a static, because the method name Notify is taken by the chardet
 // callback.
 void
 nsHtml5StreamParser::TimerCallback(nsITimer* aTimer, void* aClosure)
 {
   (static_cast<nsHtml5StreamParser*> (aClosure))->TimerFlush();
 }
 
 void
--- a/parser/html/nsHtml5StreamParser.h
+++ b/parser/html/nsHtml5StreamParser.h
@@ -5,17 +5,17 @@
 
 #ifndef nsHtml5StreamParser_h
 #define nsHtml5StreamParser_h
 
 #include "nsAutoPtr.h"
 #include "nsCOMPtr.h"
 #include "nsICharsetDetectionObserver.h"
 #include "nsHtml5MetaScanner.h"
-#include "nsIUnicodeDecoder.h"
+#include "mozilla/Encoding.h"
 #include "nsHtml5TreeOpExecutor.h"
 #include "nsHtml5OwningUTF16Buffer.h"
 #include "nsIInputStream.h"
 #include "mozilla/Mutex.h"
 #include "mozilla/UniquePtr.h"
 #include "nsHtml5AtomTable.h"
 #include "nsHtml5Speculation.h"
 #include "nsISerialEventTarget.h"
@@ -387,17 +387,17 @@ class nsHtml5StreamParser : public nsICh
     /**
      * The document title to use if this turns out to be a View Source parser.
      */
     nsCString                     mViewSourceTitle;
 
     /**
      * The Unicode decoder
      */
-    nsCOMPtr<nsIUnicodeDecoder>   mUnicodeDecoder;
+    mozilla::UniquePtr<mozilla::Decoder> mUnicodeDecoder;
 
     /**
      * The buffer for sniffing the character encoding
      */
     mozilla::UniquePtr<uint8_t[]> mSniffingBuffer;
 
     /**
      * The number of meaningful bytes in mSniffingBuffer
--- a/parser/html/nsHtml5UTF16Buffer.cpp
+++ b/parser/html/nsHtml5UTF16Buffer.cpp
@@ -33,17 +33,16 @@
 #include "nsNameSpaceManager.h"
 #include "nsIContent.h"
 #include "nsTraceRefcnt.h"
 #include "jArray.h"
 #include "nsHtml5ArrayCopy.h"
 #include "nsAHtml5TreeBuilderState.h"
 #include "nsGkAtoms.h"
 #include "nsHtml5ByteReadable.h"
-#include "nsIUnicodeDecoder.h"
 #include "nsHtml5Macros.h"
 #include "nsIContentHandle.h"
 #include "nsHtml5Portability.h"
 
 #include "nsHtml5AttributeName.h"
 #include "nsHtml5ElementName.h"
 #include "nsHtml5Tokenizer.h"
 #include "nsHtml5TreeBuilder.h"
--- a/parser/html/nsHtml5UTF16Buffer.h
+++ b/parser/html/nsHtml5UTF16Buffer.h
@@ -34,17 +34,16 @@
 #include "nsNameSpaceManager.h"
 #include "nsIContent.h"
 #include "nsTraceRefcnt.h"
 #include "jArray.h"
 #include "nsHtml5ArrayCopy.h"
 #include "nsAHtml5TreeBuilderState.h"
 #include "nsGkAtoms.h"
 #include "nsHtml5ByteReadable.h"
-#include "nsIUnicodeDecoder.h"
 #include "nsHtml5Macros.h"
 #include "nsIContentHandle.h"
 #include "nsHtml5Portability.h"
 
 class nsHtml5StreamParser;
 
 class nsHtml5AttributeName;
 class nsHtml5ElementName;
--- a/parser/htmlparser/nsParser.cpp
+++ b/parser/htmlparser/nsParser.cpp
@@ -1336,17 +1336,18 @@ ParserWriteFunc(nsIInputStream* in,
     nsAutoCString preferred;
     nsAutoCString maybePrefer;
     pws->mParser->GetDocumentCharset(preferred, source);
 
     // This code was bogus when I found it. It expects the BOM or the XML
     // declaration to be entirely in the first network buffer. -- hsivonen
     if (nsContentUtils::CheckForBOM(buf, count, maybePrefer)) {
       // The decoder will swallow the BOM. The UTF-16 will re-sniff for
-      // endianness. The value of preferred is now either "UTF-8" or "UTF-16".
+      // endianness. The value of preferred is now "UTF-8", "UTF-16LE"
+      // or "UTF-16BE".
       preferred.Assign(maybePrefer);
       source = kCharsetFromByteOrderMark;
     } else if (source < kCharsetFromChannel) {
       nsAutoCString declCharset;
 
       if (ExtractCharsetFromXmlDeclaration(buf, count, declCharset)) {
         if (EncodingUtils::FindEncodingForLabel(declCharset, maybePrefer)) {
           preferred.Assign(maybePrefer);
--- a/parser/htmlparser/nsScanner.cpp
+++ b/parser/htmlparser/nsScanner.cpp
@@ -115,17 +115,16 @@ nsresult nsScanner::SetDocumentCharset(c
     return NS_OK; // no difference, don't change it
   }
 
   // different, need to change it
 
   mCharset.Assign(charsetName);
 
   mUnicodeDecoder = EncodingUtils::DecoderForEncoding(mCharset);
-  mUnicodeDecoder->SetInputErrorBehavior(nsIUnicodeDecoder::kOnError_Signal);
 
   return NS_OK;
 }
 
 
 /**
  *  default destructor
  *  
@@ -220,71 +219,49 @@ nsresult nsScanner::Append(const nsAStri
  *  @update  gess 5/21/98
  *  @param   
  *  @return  
  */
 nsresult nsScanner::Append(const char* aBuffer, uint32_t aLen)
 {
   nsresult res = NS_OK;
   if (mUnicodeDecoder) {
-    int32_t unicharBufLen = 0;
-
-    nsresult rv = mUnicodeDecoder->GetMaxLength(aBuffer, aLen, &unicharBufLen);
-    if (NS_WARN_IF(NS_FAILED(rv))) {
-      return rv;
+    CheckedInt<size_t> needed = mUnicodeDecoder->MaxUTF16BufferLength(aLen);
+    if (!needed.isValid()) {
+      return NS_ERROR_OUT_OF_MEMORY;
     }
-
-    nsScannerString::Buffer* buffer = nsScannerString::AllocBuffer(unicharBufLen + 1);
+    CheckedInt<uint32_t> allocLen(1); // null terminator due to legacy sadness
+    allocLen += needed.value();
+    if (!allocLen.isValid()) {
+      return NS_ERROR_OUT_OF_MEMORY;
+    }
+    nsScannerString::Buffer* buffer =
+      nsScannerString::AllocBuffer(allocLen.value());
     NS_ENSURE_TRUE(buffer,NS_ERROR_OUT_OF_MEMORY);
     char16_t *unichars = buffer->DataStart();
 
-    int32_t totalChars = 0;
-    int32_t unicharLength = unicharBufLen;
-
-    do {
-      int32_t srcLength = aLen;
-      res = mUnicodeDecoder->Convert(aBuffer, &srcLength, unichars, &unicharLength);
-
-      totalChars += unicharLength;
-      // Continuation of failure case
-      if(NS_FAILED(res)) {
-        // if we failed, we consume one byte, replace it with the replacement
-        // character and try the conversion again.
-
-        // This is only needed because some decoders don't follow the
-        // nsIUnicodeDecoder contract: they return a failure when *aDestLength
-        // is 0 rather than the correct NS_OK_UDEC_MOREOUTPUT.  See bug 244177
-        if ((unichars + unicharLength) >= buffer->DataEnd()) {
-          NS_ERROR("Unexpected end of destination buffer");
-          break;
-        }
-
-        // Since about:blank is empty, this line runs only for XML. Use a
-        // character that's illegal in XML instead of U+FFFD in order to make
-        // expat flag the error.
-        unichars[unicharLength++] = 0xFFFF;
-
-        unichars = unichars + unicharLength;
-        unicharLength = unicharBufLen - (++totalChars);
-
-        mUnicodeDecoder->Reset();
-
-        if(((uint32_t) (srcLength + 1)) > aLen) {
-          srcLength = aLen;
-        }
-        else {
-          ++srcLength;
-        }
-
-        aBuffer += srcLength;
-        aLen -= srcLength;
-      }
-    } while (NS_FAILED(res) && (aLen > 0));
-
-    buffer->SetDataLength(totalChars);
+    uint32_t result;
+    size_t read;
+    size_t written;
+    Tie(result, read, written) =
+      mUnicodeDecoder->DecodeToUTF16WithoutReplacement(
+        AsBytes(MakeSpan(aBuffer, aLen)),
+        MakeSpan(unichars, needed.value()),
+        false); // Retain bug about failure to handle EOF
+    MOZ_ASSERT(result != kOutputFull);
+    MOZ_ASSERT(read <= aLen);
+    MOZ_ASSERT(written <= needed.value());
+    if (result != kInputEmpty) {
+      // Since about:blank is empty, this line runs only for XML. Use a
+      // character that's illegal in XML instead of U+FFFD in order to make
+      // expat flag the error. There is no need to loop and convert more, since
+      // expat will stop here anyway.
+      unichars[written++] = 0xFFFF;
+    }
+    buffer->SetDataLength(written);
     // Don't propagate return code of unicode decoder
     // since it doesn't reflect on our success or failure
     // - Ref. bug 87110
     res = NS_OK; 
     if (!AppendToBuffer(buffer))
       res = NS_ERROR_OUT_OF_MEMORY;
   }
   else {
--- a/parser/htmlparser/nsScanner.h
+++ b/parser/htmlparser/nsScanner.h
@@ -17,17 +17,17 @@
 
 
 #ifndef SCANNER
 #define SCANNER
 
 #include "nsCOMPtr.h"
 #include "nsString.h"
 #include "nsIParser.h"
-#include "nsIUnicodeDecoder.h"
+#include "mozilla/Encoding.h"
 #include "nsScannerString.h"
 #include "mozilla/CheckedInt.h"
 
 class nsReadEndCondition {
 public:
   const char16_t *mChars;
   char16_t mFilter;
   explicit nsReadEndCondition(const char16_t* aTerminateChars);
@@ -174,17 +174,17 @@ class nsScanner {
       nsScannerString*             mSlidingBuffer;
       nsScannerIterator            mCurrentPosition; // The position we will next read from in the scanner buffer
       nsScannerIterator            mMarkPosition;    // The position last marked (we may rewind to here)
       nsScannerIterator            mEndPosition;     // The current end of the scanner buffer
       nsString        mFilename;
       bool            mIncremental;
       int32_t         mCharsetSource;
       nsCString       mCharset;
-      nsCOMPtr<nsIUnicodeDecoder> mUnicodeDecoder;
+      mozilla::UniquePtr<mozilla::Decoder> mUnicodeDecoder;
 
-  private:
+    private:
       nsScanner &operator =(const nsScanner &); // Not implemented.
 };
 
 #endif
 
 
deleted file mode 100644
--- a/testing/web-platform/meta/dom/nodes/Document-characterSet-normalization.html.ini
+++ /dev/null
@@ -1,182 +0,0 @@
-[Document-characterSet-normalization.html]
-  type: testharness
-  [Name "gbk" has label "chinese" (characterSet)]
-    expected: FAIL
-
-  [Name "gbk" has label "chinese" (inputEncoding)]
-    expected: FAIL
-
-  [Name "gbk" has label "csgb2312" (characterSet)]
-    expected: FAIL
-
-  [Name "gbk" has label "csgb2312" (inputEncoding)]
-    expected: FAIL
-
-  [Name "gbk" has label "csiso58gb231280" (characterSet)]
-    expected: FAIL
-
-  [Name "gbk" has label "csiso58gb231280" (inputEncoding)]
-    expected: FAIL
-
-  [Name "gbk" has label "gb2312" (characterSet)]
-    expected: FAIL
-
-  [Name "gbk" has label "gb2312" (inputEncoding)]
-    expected: FAIL
-
-  [Name "gbk" has label "gb_2312" (characterSet)]
-    expected: FAIL
-
-  [Name "gbk" has label "gb_2312" (inputEncoding)]
-    expected: FAIL
-
-  [Name "gbk" has label "gb_2312-80" (characterSet)]
-    expected: FAIL
-
-  [Name "gbk" has label "gb_2312-80" (inputEncoding)]
-    expected: FAIL
-
-  [Name "gbk" has label "gbk" (characterSet)]
-    expected: FAIL
-
-  [Name "gbk" has label "gbk" (inputEncoding)]
-    expected: FAIL
-
-  [Name "gbk" has label "iso-ir-58" (characterSet)]
-    expected: FAIL
-
-  [Name "gbk" has label "iso-ir-58" (inputEncoding)]
-    expected: FAIL
-
-  [Name "gbk" has label "x-gbk" (characterSet)]
-    expected: FAIL
-
-  [Name "gbk" has label "x-gbk" (inputEncoding)]
-    expected: FAIL
-
-  [Name "hz-gb-2312" has label "hz-gb-2312" (characterSet)]
-    expected: FAIL
-
-  [Name "hz-gb-2312" has label "hz-gb-2312" (inputEncoding)]
-    expected: FAIL
-
-  [Name "gbk" has label "chinese" (charset)]
-    expected: FAIL
-
-  [Name "gbk" has label "csgb2312" (charset)]
-    expected: FAIL
-
-  [Name "gbk" has label "csiso58gb231280" (charset)]
-    expected: FAIL
-
-  [Name "gbk" has label "gb2312" (charset)]
-    expected: FAIL
-
-  [Name "gbk" has label "gb_2312" (charset)]
-    expected: FAIL
-
-  [Name "gbk" has label "gb_2312-80" (charset)]
-    expected: FAIL
-
-  [Name "gbk" has label "gbk" (charset)]
-    expected: FAIL
-
-  [Name "gbk" has label "iso-ir-58" (charset)]
-    expected: FAIL
-
-  [Name "gbk" has label "x-gbk" (charset)]
-    expected: FAIL
-
-  [Name "hz-gb-2312" has label "hz-gb-2312" (charset)]
-    expected: FAIL
-
-  [Name "KOI8-U" has label "koi8-ru" (characterSet)]
-    expected: FAIL
-
-  [Name "KOI8-U" has label "koi8-ru" (inputEncoding)]
-    expected: FAIL
-
-  [Name "KOI8-U" has label "koi8-ru" (charset)]
-    expected: FAIL
-
-  [Name "GBK" has label "chinese" (characterSet)]
-    expected: FAIL
-
-  [Name "GBK" has label "chinese" (inputEncoding)]
-    expected: FAIL
-
-  [Name "GBK" has label "chinese" (charset)]
-    expected: FAIL
-
-  [Name "GBK" has label "csgb2312" (characterSet)]
-    expected: FAIL
-
-  [Name "GBK" has label "csgb2312" (inputEncoding)]
-    expected: FAIL
-
-  [Name "GBK" has label "csgb2312" (charset)]
-    expected: FAIL
-
-  [Name "GBK" has label "csiso58gb231280" (characterSet)]
-    expected: FAIL
-
-  [Name "GBK" has label "csiso58gb231280" (inputEncoding)]
-    expected: FAIL
-
-  [Name "GBK" has label "csiso58gb231280" (charset)]
-    expected: FAIL
-
-  [Name "GBK" has label "gb2312" (characterSet)]
-    expected: FAIL
-
-  [Name "GBK" has label "gb2312" (inputEncoding)]
-    expected: FAIL
-
-  [Name "GBK" has label "gb2312" (charset)]
-    expected: FAIL
-
-  [Name "GBK" has label "gb_2312" (characterSet)]
-    expected: FAIL
-
-  [Name "GBK" has label "gb_2312" (inputEncoding)]
-    expected: FAIL
-
-  [Name "GBK" has label "gb_2312" (charset)]
-    expected: FAIL
-
-  [Name "GBK" has label "gb_2312-80" (characterSet)]
-    expected: FAIL
-
-  [Name "GBK" has label "gb_2312-80" (inputEncoding)]
-    expected: FAIL
-
-  [Name "GBK" has label "gb_2312-80" (charset)]
-    expected: FAIL
-
-  [Name "GBK" has label "gbk" (characterSet)]
-    expected: FAIL
-
-  [Name "GBK" has label "gbk" (inputEncoding)]
-    expected: FAIL
-
-  [Name "GBK" has label "gbk" (charset)]
-    expected: FAIL
-
-  [Name "GBK" has label "iso-ir-58" (characterSet)]
-    expected: FAIL
-
-  [Name "GBK" has label "iso-ir-58" (inputEncoding)]
-    expected: FAIL
-
-  [Name "GBK" has label "iso-ir-58" (charset)]
-    expected: FAIL
-
-  [Name "GBK" has label "x-gbk" (characterSet)]
-    expected: FAIL
-
-  [Name "GBK" has label "x-gbk" (inputEncoding)]
-    expected: FAIL
-
-  [Name "GBK" has label "x-gbk" (charset)]
-    expected: FAIL
-
deleted file mode 100644
--- a/testing/web-platform/meta/encoding/iso-2022-jp-decoder.html.ini
+++ /dev/null
@@ -1,65 +0,0 @@
-[iso-2022-jp-decoder.html]
-  type: testharness
-  [iso-2022-jp decoder: Error ESC]
-    expected: FAIL
-
-  [iso-2022-jp decoder: Error ESC, character]
-    expected: FAIL
-
-  [iso-2022-jp decoder: character, ASCII ESC, character]
-    expected: FAIL
-
-  [iso-2022-jp decoder: SO / SI]
-    expected: FAIL
-
-  [iso-2022-jp decoder: Roman ESC, characters]
-    expected: FAIL
-
-  [iso-2022-jp decoder: Roman ESC, SO / SI]
-    expected: FAIL
-
-  [iso-2022-jp decoder: Roman ESC, error ESC, Katakana ESC]
-    expected: FAIL
-
-  [iso-2022-jp decoder: Katakana ESC, multibyte ESC, character]
-    expected: FAIL
-
-  [iso-2022-jp decoder: Katakana ESC, error ESC, character]
-    expected: FAIL
-
-  [iso-2022-jp decoder: Katakana ESC, error ESC #2, character]
-    expected: FAIL
-
-  [iso-2022-jp decoder: Multibyte ESC, error ESC, character]
-    expected: FAIL
-
-  [iso-2022-jp decoder: Double multibyte ESC]
-    expected: FAIL
-
-  [iso-2022-jp decoder: Double multibyte ESC, character]
-    expected: FAIL
-
-  [iso-2022-jp decoder: Double multibyte ESC #2, character]
-    expected: FAIL
-
-  [iso-2022-jp decoder: Multibyte ESC, error ESC #2, character]
-    expected: FAIL
-
-  [iso-2022-jp decoder: Multibyte ESC, single byte, multibyte ESC, character]
-    expected: FAIL
-
-  [iso-2022-jp decoder: Multibyte ESC, lead error byte]
-    expected: FAIL
-
-  [iso-2022-jp decoder: character, error ESC]
-    expected: FAIL
-
-  [iso-2022-jp decoder: character, error ESC #2]
-    expected: FAIL
-
-  [iso-2022-jp decoder: character, error ESC #3]
-    expected: FAIL
-
-  [iso-2022-jp decoder: character, ASCII ESC]
-    expected: FAIL
-
deleted file mode 100644
--- a/testing/web-platform/meta/encoding/single-byte-decoder.html.ini
+++ /dev/null
@@ -1,11 +0,0 @@
-[single-byte-decoder.html]
-  type: testharness
-  [KOI8-U: koi8-ru (XMLHttpRequest)]
-    expected: FAIL
-
-  [KOI8-U: koi8-ru (TextDecoder)]
-    expected: FAIL
-
-  [KOI8-U: koi8-ru (document.characterSet and document.inputEncoding)]
-    expected: FAIL
-
deleted file mode 100644
--- a/testing/web-platform/meta/encoding/textdecoder-labels.html.ini
+++ /dev/null
@@ -1,5 +0,0 @@
-[textdecoder-labels.html]
-  type: testharness
-  [koi8-ru => KOI8-U]
-    expected: FAIL
-
deleted file mode 100644
--- a/testing/web-platform/meta/eventsource/format-bom-2.htm.ini
+++ /dev/null
@@ -1,5 +0,0 @@
-[format-bom-2.htm]
-  type: testharness
-  [EventSource: Double BOM]
-    expected: FAIL
-
deleted file mode 100644
--- a/testing/web-platform/meta/url/urlencoded-parser.html.ini
+++ /dev/null
@@ -1,29 +0,0 @@
-[urlencoded-parser.html]
-  type: testharness
-  [URLSearchParams constructed with: test=]
-    expected: FAIL
-
-  [request.formData() with input: test=]
-    expected: FAIL
-
-  [response.formData() with input: test=]
-    expected: FAIL
-
-  [URLSearchParams constructed with: %EF%BB%BFtest=%EF%BB%BF]
-    expected: FAIL
-
-  [request.formData() with input: %EF%BB%BFtest=%EF%BB%BF]
-    expected: FAIL
-
-  [response.formData() with input: %EF%BB%BFtest=%EF%BB%BF]
-    expected: FAIL
-
-  [URLSearchParams constructed with: %C2]
-    expected: FAIL
-
-  [request.formData() with input: %C2]
-    expected: FAIL
-
-  [response.formData() with input: %C2]
-    expected: FAIL
-
--- a/testing/web-platform/tests/encoding/iso-2022-jp-decoder.html
+++ b/testing/web-platform/tests/encoding/iso-2022-jp-decoder.html
@@ -12,18 +12,18 @@
      for(var i = 0, l = input.length; i < l; i++) {
        view[i] = input[i]
      }
      assert_equals(d.decode(view), output)
    }, "iso-2022-jp decoder: " + desc)
  }
  decode([0x1b, 0x24], "�$", "Error ESC")
  decode([0x1b, 0x24, 0x50], "�$P", "Error ESC, character")
- decode([0x1b, 0x28, 0x42, 0x50], "�P", "ASCII ESC, character")
- decode([0x1b, 0x28, 0x42, 0x1b, 0x28, 0x42, 0x50], "��P", "Double ASCII ESC, character")
+ decode([0x1b, 0x28, 0x42, 0x50], "P", "ASCII ESC, character")
+ decode([0x1b, 0x28, 0x42, 0x1b, 0x28, 0x42, 0x50], "�P", "Double ASCII ESC, character")
  decode([0x50, 0x1b, 0x28, 0x42, 0x50], "PP", "character, ASCII ESC, character")
  decode([0x5C, 0x5D, 0x7E], "\\]~", "characters")
  decode([0x0D, 0x0E, 0x0F, 0x10], "\x0D��\x10", "SO / SI")
 
  decode([0x1b, 0x28, 0x4A, 0x5C, 0x5D, 0x7E], "¥]‾", "Roman ESC, characters")
  decode([0x1b, 0x28, 0x4A, 0x0D, 0x0E, 0x0F, 0x10], "\x0D��\x10", "Roman ESC, SO / SI")
  decode([0x1b, 0x28, 0x4A, 0x1b, 0x1b, 0x28, 0x49, 0x50], "�ミ", "Roman ESC, error ESC, Katakana ESC")
 
--- a/testing/web-platform/tests/encoding/single-byte-decoder.html
+++ b/testing/web-platform/tests/encoding/single-byte-decoder.html
@@ -20,17 +20,17 @@
    "ISO-8859-7":[128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,8216,8217,163,8364,8367,166,167,168,169,890,171,172,173,null,8213,176,177,178,179,900,901,902,183,904,905,906,187,908,189,910,911,912,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,929,null,931,932,933,934,935,936,937,938,939,940,941,942,943,944,945,946,947,948,949,950,951,952,953,954,955,956,957,958,959,960,961,962,963,964,965,966,967,968,969,970,971,972,973,974,null],
    "ISO-8859-8":[128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,null,162,163,164,165,166,167,168,169,215,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,247,187,188,189,190,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,8215,1488,1489,1490,1491,1492,1493,1494,1495,1496,1497,1498,1499,1500,1501,1502,1503,1504,1505,1506,1507,1508,1509,1510,1511,1512,1513,1514,null,null,8206,8207,null],
    "ISO-8859-10":[128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,260,274,290,298,296,310,167,315,272,352,358,381,173,362,330,176,261,275,291,299,297,311,183,316,273,353,359,382,8213,363,331,256,193,194,195,196,197,198,302,268,201,280,203,278,205,206,207,208,325,332,211,212,213,214,360,216,370,218,219,220,221,222,223,257,225,226,227,228,229,230,303,269,233,281,235,279,237,238,239,240,326,333,243,244,245,246,361,248,371,250,251,252,253,254,312],
    "ISO-8859-13":[128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,8221,162,163,164,8222,166,167,216,169,342,171,172,173,174,198,176,177,178,179,8220,181,182,183,248,185,343,187,188,189,190,230,260,302,256,262,196,197,280,274,268,201,377,278,290,310,298,315,352,323,325,211,332,213,214,215,370,321,346,362,220,379,381,223,261,303,257,263,228,229,281,275,269,233,378,279,291,311,299,316,353,324,326,243,333,245,246,247,371,322,347,363,252,380,382,8217],
    "ISO-8859-14":[128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,7682,7683,163,266,267,7690,167,7808,169,7810,7691,7922,173,174,376,7710,7711,288,289,7744,7745,182,7766,7809,7767,7811,7776,7923,7812,7813,7777,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,372,209,210,211,212,213,214,7786,216,217,218,219,220,221,374,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,373,241,242,243,244,245,246,7787,248,249,250,251,252,253,375,255],
    "ISO-8859-15":[128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,8364,165,352,167,353,169,170,171,172,173,174,175,176,177,178,179,381,181,182,183,382,185,186,187,338,339,376,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255],
    "ISO-8859-16":[128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,260,261,321,8364,8222,352,167,353,169,536,171,377,173,378,379,176,177,268,322,381,8221,182,183,382,269,537,187,338,339,376,380,192,193,194,258,196,262,198,199,200,201,202,203,204,205,206,207,272,323,210,211,212,336,214,346,368,217,218,219,220,280,538,223,224,225,226,259,228,263,230,231,232,233,234,235,236,237,238,239,273,324,242,243,244,337,246,347,369,249,250,251,252,281,539,255],
    "KOI8-R":[9472,9474,9484,9488,9492,9496,9500,9508,9516,9524,9532,9600,9604,9608,9612,9616,9617,9618,9619,8992,9632,8729,8730,8776,8804,8805,160,8993,176,178,183,247,9552,9553,9554,1105,9555,9556,9557,9558,9559,9560,9561,9562,9563,9564,9565,9566,9567,9568,9569,1025,9570,9571,9572,9573,9574,9575,9576,9577,9578,9579,9580,169,1102,1072,1073,1094,1076,1077,1092,1075,1093,1080,1081,1082,1083,1084,1085,1086,1087,1103,1088,1089,1090,1091,1078,1074,1100,1099,1079,1096,1101,1097,1095,1098,1070,1040,1041,1062,1044,1045,1060,1043,1061,1048,1049,1050,1051,1052,1053,1054,1055,1071,1056,1057,1058,1059,1046,1042,1068,1067,1047,1064,1069,1065,1063,1066],
-   "KOI8-U":[9472,9474,9484,9488,9492,9496,9500,9508,9516,9524,9532,9600,9604,9608,9612,9616,9617,9618,9619,8992,9632,8729,8730,8776,8804,8805,160,8993,176,178,183,247,9552,9553,9554,1105,1108,9556,1110,1111,9559,9560,9561,9562,9563,1169,9565,9566,9567,9568,9569,1025,1028,9571,1030,1031,9574,9575,9576,9577,9578,1168,9580,169,1102,1072,1073,1094,1076,1077,1092,1075,1093,1080,1081,1082,1083,1084,1085,1086,1087,1103,1088,1089,1090,1091,1078,1074,1100,1099,1079,1096,1101,1097,1095,1098,1070,1040,1041,1062,1044,1045,1060,1043,1061,1048,1049,1050,1051,1052,1053,1054,1055,1071,1056,1057,1058,1059,1046,1042,1068,1067,1047,1064,1069,1065,1063,1066],
+   "KOI8-U":[9472,9474,9484,9488,9492,9496,9500,9508,9516,9524,9532,9600,9604,9608,9612,9616,9617,9618,9619,8992,9632,8729,8730,8776,8804,8805,160,8993,176,178,183,247,9552,9553,9554,1105,1108,9556,1110,1111,9559,9560,9561,9562,9563,1169,1118,9566,9567,9568,9569,1025,1028,9571,1030,1031,9574,9575,9576,9577,9578,1168,1038,169,1102,1072,1073,1094,1076,1077,1092,1075,1093,1080,1081,1082,1083,1084,1085,1086,1087,1103,1088,1089,1090,1091,1078,1074,1100,1099,1079,1096,1101,1097,1095,1098,1070,1040,1041,1062,1044,1045,1060,1043,1061,1048,1049,1050,1051,1052,1053,1054,1055,1071,1056,1057,1058,1059,1046,1042,1068,1067,1047,1064,1069,1065,1063,1066],
    "macintosh":[196,197,199,201,209,214,220,225,224,226,228,227,229,231,233,232,234,235,237,236,238,239,241,243,242,244,246,245,250,249,251,252,8224,176,162,163,167,8226,182,223,174,169,8482,180,168,8800,198,216,8734,177,8804,8805,165,181,8706,8721,8719,960,8747,170,186,937,230,248,191,161,172,8730,402,8776,8710,171,187,8230,160,192,195,213,338,339,8211,8212,8220,8221,8216,8217,247,9674,255,376,8260,8364,8249,8250,64257,64258,8225,183,8218,8222,8240,194,202,193,203,200,205,206,207,204,211,212,63743,210,218,219,217,305,710,732,175,728,729,730,184,733,731,711],
    "windows-874":[8364,129,130,131,132,8230,134,135,136,137,138,139,140,141,142,143,144,8216,8217,8220,8221,8226,8211,8212,152,153,154,155,156,157,158,159,160,3585,3586,3587,3588,3589,3590,3591,3592,3593,3594,3595,3596,3597,3598,3599,3600,3601,3602,3603,3604,3605,3606,3607,3608,3609,3610,3611,3612,3613,3614,3615,3616,3617,3618,3619,3620,3621,3622,3623,3624,3625,3626,3627,3628,3629,3630,3631,3632,3633,3634,3635,3636,3637,3638,3639,3640,3641,3642,null,null,null,null,3647,3648,3649,3650,3651,3652,3653,3654,3655,3656,3657,3658,3659,3660,3661,3662,3663,3664,3665,3666,3667,3668,3669,3670,3671,3672,3673,3674,3675,null,null,null,null],
    "windows-1250":[8364,129,8218,131,8222,8230,8224,8225,136,8240,352,8249,346,356,381,377,144,8216,8217,8220,8221,8226,8211,8212,152,8482,353,8250,347,357,382,378,160,711,728,321,164,260,166,167,168,169,350,171,172,173,174,379,176,177,731,322,180,181,182,183,184,261,351,187,317,733,318,380,340,193,194,258,196,313,262,199,268,201,280,203,282,205,206,270,272,323,327,211,212,336,214,215,344,366,218,368,220,221,354,223,341,225,226,259,228,314,263,231,269,233,281,235,283,237,238,271,273,324,328,243,244,337,246,247,345,367,250,369,252,253,355,729],
    "windows-1251":[1026,1027,8218,1107,8222,8230,8224,8225,8364,8240,1033,8249,1034,1036,1035,1039,1106,8216,8217,8220,8221,8226,8211,8212,152,8482,1113,8250,1114,1116,1115,1119,160,1038,1118,1032,164,1168,166,167,1025,169,1028,171,172,173,174,1031,176,177,1030,1110,1169,181,182,183,1105,8470,1108,187,1112,1029,1109,1111,1040,1041,1042,1043,1044,1045,1046,1047,1048,1049,1050,1051,1052,1053,1054,1055,1056,1057,1058,1059,1060,1061,1062,1063,1064,1065,1066,1067,1068,1069,1070,1071,1072,1073,1074,1075,1076,1077,1078,1079,1080,1081,1082,1083,1084,1085,1086,1087,1088,1089,1090,1091,1092,1093,1094,1095,1096,1097,1098,1099,1100,1101,1102,1103],
    "windows-1252":[8364,129,8218,402,8222,8230,8224,8225,710,8240,352,8249,338,141,381,143,144,8216,8217,8220,8221,8226,8211,8212,732,8482,353,8250,339,157,382,376,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255],
    "windows-1253":[8364,129,8218,402,8222,8230,8224,8225,136,8240,138,8249,140,141,142,143,144,8216,8217,8220,8221,8226,8211,8212,152,8482,154,8250,156,157,158,159,160,901,902,163,164,165,166,167,168,169,null,171,172,173,174,8213,176,177,178,179,900,181,182,183,904,905,906,187,908,189,910,911,912,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,929,null,931,932,933,934,935,936,937,938,939,940,941,942,943,944,945,946,947,948,949,950,951,952,953,954,955,956,957,958,959,960,961,962,963,964,965,966,967,968,969,970,971,972,973,974,null],
    "windows-1254":[8364,129,8218,402,8222,8230,8224,8225,710,8240,352,8249,338,141,142,143,144,8216,8217,8220,8221,8226,8211,8212,732,8482,353,8250,339,157,158,376,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,286,209,210,211,212,213,214,215,216,217,218,219,220,304,350,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,287,241,242,243,244,245,246,247,248,249,250,251,252,305,351,255],
    "windows-1255":[8364,129,8218,402,8222,8230,8224,8225,710,8240,138,8249,140,141,142,143,144,8216,8217,8220,8221,8226,8211,8212,732,8482,154,8250,156,157,158,159,160,161,162,163,8362,165,166,167,168,169,215,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,247,187,188,189,190,191,1456,1457,1458,1459,1460,1461,1462,1463,1464,1465,1466,1467,1468,1469,1470,1471,1472,1473,1474,1475,1520,1521,1522,1523,1524,null,null,null,null,null,null,null,1488,1489,1490,1491,1492,1493,1494,1495,1496,1497,1498,1499,1500,1501,1502,1503,1504,1505,1506,1507,1508,1509,1510,1511,1512,1513,1514,null,null,8206,8207,null],
--- a/toolkit/components/osfile/NativeOSFileInternals.cpp
+++ b/toolkit/components/osfile/NativeOSFileInternals.cpp
@@ -13,17 +13,17 @@
 #include "nsCycleCollectionParticipant.h"
 #include "nsServiceManagerUtils.h"
 #include "nsProxyRelease.h"
 
 #include "nsINativeOSFileInternals.h"
 #include "NativeOSFileInternals.h"
 #include "mozilla/dom/NativeOSFileInternalsBinding.h"
 
-#include "nsIUnicodeDecoder.h"
+#include "mozilla/Encoding.h"
 #include "nsIEventTarget.h"
 
 #include "mozilla/dom/EncodingUtils.h"
 #include "mozilla/DebugOnly.h"
 #include "mozilla/Scoped.h"
 #include "mozilla/HoldDropJSObjects.h"
 #include "mozilla/TimeStamp.h"
 
@@ -804,55 +804,59 @@ protected:
 
     return NS_OK;
   }
 
   void AfterRead(TimeStamp aDispatchDate,
                  ScopedArrayBufferContents& aBuffer) override {
     MOZ_ASSERT(!NS_IsMainThread());
 
-    int32_t maxChars;
-    const char* sourceChars = reinterpret_cast<const char*>(aBuffer.get().data);
-    int32_t sourceBytes = aBuffer.get().nbytes;
-    if (sourceBytes < 0) {
-      Fail(NS_LITERAL_CSTRING("arithmetics"), mResult.forget(), OS_ERROR_TOO_LARGE);
-      return;
-    }
+    auto src = MakeSpan(aBuffer.get().data, aBuffer.get().nbytes);
 
-    nsresult rv = mDecoder->GetMaxLength(sourceChars, sourceBytes, &maxChars);
-    if (NS_FAILED(rv)) {
-      Fail(NS_LITERAL_CSTRING("GetMaxLength"), mResult.forget(), OS_ERROR_INVAL);
-      return;
-    }
-
-    if (maxChars < 0) {
+    CheckedInt<size_t> needed = mDecoder->MaxUTF16BufferLength(src.Length());
+    if (!needed.isValid() ||
+        needed.value() > MaxValue<nsAString::size_type>::value) {
       Fail(NS_LITERAL_CSTRING("arithmetics"), mResult.forget(), OS_ERROR_TOO_LARGE);
       return;
     }
 
     nsString resultString;
-    resultString.SetLength(maxChars);
-    if (resultString.Length() != (nsString::size_type)maxChars) {
+    bool ok = resultString.SetLength(needed.value(), fallible);
+    if (!ok) {
       Fail(NS_LITERAL_CSTRING("allocation"), mResult.forget(), OS_ERROR_TOO_LARGE);
       return;
     }
 
-
-    rv = mDecoder->Convert(sourceChars, &sourceBytes,
-                           resultString.BeginWriting(), &maxChars);
-    MOZ_ASSERT(NS_SUCCEEDED(rv));
-    resultString.SetLength(maxChars);
+    // Yoric said on IRC that this method is normally called for the entire file,
+    // but that's not guaranteed. Retaining the bug that EOF in conversion isn't
+    // handled anywhere.
+    uint32_t result;
+    size_t read;
+    size_t written;
+    bool hadErrors;
+    Tie(result, read, written, hadErrors) =
+      mDecoder->DecodeToUTF16(src, resultString, false);
+    MOZ_ASSERT(result == kInputEmpty);
+    MOZ_ASSERT(read == src.Length());
+    MOZ_ASSERT(written <= needed.value());
+    Unused << hadErrors;
+    ok = resultString.SetLength(written, fallible);
+    if (!ok) {
+      Fail(
+        NS_LITERAL_CSTRING("allocation"), mResult.forget(), OS_ERROR_TOO_LARGE);
+      return;
+    }
 
     mResult->Init(aDispatchDate, TimeStamp::Now() - aDispatchDate, resultString);
     Succeed(mResult.forget());
   }
 
  private:
   nsCString mEncoding;
-  nsCOMPtr<nsIUnicodeDecoder> mDecoder;
+  mozilla::UniquePtr<mozilla::Decoder> mDecoder;
   RefPtr<StringResult> mResult;
 };
 
 } // namespace
 
 // The OS.File service
 
 NS_IMPL_ISUPPORTS(NativeOSFileInternalsService, nsINativeOSFileInternalsService);
--- a/toolkit/components/passwordmgr/OSCrypto_win.js
+++ b/toolkit/components/passwordmgr/OSCrypto_win.js
@@ -108,24 +108,27 @@ OSCrypto.prototype = {
   getIELoginHash(data) {
     // return the two-digit hexadecimal code for a byte
     function toHexString(charCode) {
       return ("00" + charCode.toString(16)).slice(-2);
     }
 
     // the data needs to be encoded in null terminated UTF-16
     data += "\0";
-    let converter = Cc["@mozilla.org/intl/scriptableunicodeconverter"].
-                    createInstance(Ci.nsIScriptableUnicodeConverter);
-    converter.charset = "UTF-16";
-    // result is an out parameter,
-    // result.value will contain the array length
-    let result = {};
+
     // dataArray is an array of bytes
-    let dataArray = converter.convertToByteArray(data, result);
+    let dataArray = new Array(data.length * 2);
+    for (let i = 0; i < data.length; i++) {
+      let c = data.charCodeAt(i);
+      let lo = c & 0xFF;
+      let hi = (c & 0xFF00) >> 8;
+      dataArray[i * 2] = lo;
+      dataArray[i * 2 + 1] = hi;
+    }
+
     // calculation of SHA1 hash value
     let cryptoHash = Cc["@mozilla.org/security/hash;1"].
                      createInstance(Ci.nsICryptoHash);
     cryptoHash.init(cryptoHash.SHA1);
     cryptoHash.update(dataArray, dataArray.length);
     let hash = cryptoHash.finish(false);
 
     let tail = 0; // variable to calculate value for the last 2 bytes
--- a/toolkit/library/gtest/rust/Cargo.lock
+++ b/toolkit/library/gtest/rust/Cargo.lock
@@ -282,16 +282,25 @@ dependencies = [
 name = "encoding_c"
 version = "0.7.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 dependencies = [
  "encoding_rs 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)",
 ]
 
 [[package]]
+name = "encoding_glue"
+version = "0.1.0"
+dependencies = [
+ "encoding_rs 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)",
+ "nserror 0.1.0",
+ "nsstring 0.1.0",
+]
+
+[[package]]
 name = "encoding_rs"
 version = "0.6.11"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 dependencies = [
  "cfg-if 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
 ]
 
 [[package]]
@@ -367,16 +376,17 @@ dependencies = [
 ]
 
 [[package]]
 name = "gkrust-shared"
 version = "0.1.0"
 dependencies = [
  "cubeb-pulse 0.0.1",
  "encoding_c 0.7.4 (registry+https://github.com/rust-lang/crates.io-index)",
+ "encoding_glue 0.1.0",
  "geckoservo 0.0.1",
  "mp4parse_capi 0.8.0",
  "nserror 0.1.0",
  "nsstring 0.1.0",
  "rust_url_capi 0.0.1",
  "webrender_bindings 0.1.0",
 ]
 
--- a/toolkit/library/gtest/rust/Cargo.toml
+++ b/toolkit/library/gtest/rust/Cargo.toml
@@ -6,16 +6,19 @@ license = "MPL-2.0"
 description = "Testing code for libgkrust"
 
 [features]
 bindgen = ["gkrust-shared/bindgen"]
 servo = ["gkrust-shared/servo"]
 quantum_render = ["gkrust-shared/quantum_render"]
 cubeb_pulse_rust = ["gkrust-shared/cubeb_pulse_rust"]
 gecko_debug = ["gkrust-shared/gecko_debug"]
+# simd-accel = ["gkrust-shared/simd-accel"]
+no-static-ideograph-encoder-tables = ["gkrust-shared/no-static-ideograph-encoder-tables"]
+# parallel-utf8 = ["gkrust-shared/parallel-utf8"]
 
 [dependencies]
 mp4parse-gtest = { path = "../../../../dom/media/gtest" }
 nsstring-gtest = { path = "../../../../xpcom/rust/nsstring/gtest" }
 gkrust-shared = { path = "../../rust/shared" }
 
 [lib]
 path = "lib.rs"
--- a/toolkit/library/rust/Cargo.lock
+++ b/toolkit/library/rust/Cargo.lock
@@ -280,16 +280,25 @@ dependencies = [
 name = "encoding_c"
 version = "0.7.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 dependencies = [
  "encoding_rs 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)",
 ]
 
 [[package]]
+name = "encoding_glue"
+version = "0.1.0"
+dependencies = [
+ "encoding_rs 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)",
+ "nserror 0.1.0",
+ "nsstring 0.1.0",
+]
+
+[[package]]
 name = "encoding_rs"
 version = "0.6.11"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 dependencies = [
  "cfg-if 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
 ]
 
 [[package]]
@@ -365,16 +374,17 @@ dependencies = [
 ]
 
 [[package]]
 name = "gkrust-shared"
 version = "0.1.0"
 dependencies = [
  "cubeb-pulse 0.0.1",
  "encoding_c 0.7.4 (registry+https://github.com/rust-lang/crates.io-index)",
+ "encoding_glue 0.1.0",
  "geckoservo 0.0.1",
  "mp4parse_capi 0.8.0",
  "nserror 0.1.0",
  "nsstring 0.1.0",
  "rust_url_capi 0.0.1",
  "webrender_bindings 0.1.0",
 ]
 
--- a/toolkit/library/rust/Cargo.toml
+++ b/toolkit/library/rust/Cargo.toml
@@ -6,16 +6,19 @@ license = "MPL-2.0"
 description = "Rust code for libxul"
 
 [features]
 bindgen = ["gkrust-shared/bindgen"]
 servo = ["gkrust-shared/servo"]
 quantum_render = ["gkrust-shared/quantum_render"]
 cubeb_pulse_rust = ["gkrust-shared/cubeb_pulse_rust"]
 gecko_debug = ["gkrust-shared/gecko_debug"]
+# simd-accel = ["gkrust-shared/simd-accel"]
+no-static-ideograph-encoder-tables = ["gkrust-shared/no-static-ideograph-encoder-tables"]
+# parallel-utf8 = ["gkrust-shared/parallel-utf8"]
 
 [dependencies]
 gkrust-shared = { path = "shared" }
 
 [lib]
 path = "lib.rs"
 crate-type = ["staticlib"]
 test = false
--- a/toolkit/library/rust/gkrust-features.mozbuild
+++ b/toolkit/library/rust/gkrust-features.mozbuild
@@ -15,8 +15,9 @@ if CONFIG['MOZ_STYLO']:
         gkrust_features += ['gecko_debug']
 
 if CONFIG['MOZ_BUILD_WEBRENDER']:
     gkrust_features += ['quantum_render']
 
 if CONFIG['MOZ_PULSEAUDIO']:
     gkrust_features += ['cubeb_pulse_rust']
 
+gkrust_features += ['no-static-ideograph-encoder-tables']
--- a/toolkit/library/rust/shared/Cargo.toml
+++ b/toolkit/library/rust/shared/Cargo.toml
@@ -9,27 +9,28 @@ description = "Shared Rust code for libx
 geckoservo = { path = "../../../../servo/ports/geckolib", optional = true }
 mp4parse_capi = { path = "../../../../media/libstagefright/binding/mp4parse_capi" }
 nsstring = { path = "../../../../xpcom/rust/nsstring" }
 nserror = { path = "../../../../xpcom/rust/nserror" }
 rust_url_capi = { path = "../../../../netwerk/base/rust-url-capi" }
 webrender_bindings = { path = "../../../../gfx/webrender_bindings", optional = true }
 cubeb-pulse = { path = "../../../../media/libcubeb/cubeb-pulse-rs", optional = true, features=["pulse-dlopen"] }
 encoding_c = "0.7.1"
+encoding_glue = { path = "../../../../intl/encoding_glue" }
 
 [features]
 default = []
 bindgen = ["geckoservo/bindgen"]
 servo = ["geckoservo"]
 quantum_render = ["webrender_bindings"]
 cubeb_pulse_rust = ["cubeb-pulse"]
 gecko_debug = ["geckoservo/gecko_debug"]
-simd-accel = ["encoding_c/simd-accel"]
-no-static-ideograph-encoder-tables = ["encoding_c/no-static-ideograph-encoder-tables"]
-parallel-utf8 = ["encoding_c/parallel-utf8"]
+simd-accel = ["encoding_c/simd-accel", "encoding_glue/simd-accel"]
+no-static-ideograph-encoder-tables = ["encoding_c/no-static-ideograph-encoder-tables", "encoding_glue/no-static-ideograph-encoder-tables"]
+parallel-utf8 = ["encoding_c/parallel-utf8", "encoding_glue/parallel-utf8"]
 
 [lib]
 path = "lib.rs"
 test = false
 doctest = false
 bench = false
 doc = false
 plugin = false
--- a/toolkit/library/rust/shared/lib.rs
+++ b/toolkit/library/rust/shared/lib.rs
@@ -9,16 +9,17 @@ extern crate mp4parse_capi;
 extern crate nsstring;
 extern crate nserror;
 extern crate rust_url_capi;
 #[cfg(feature = "quantum_render")]
 extern crate webrender_bindings;
 #[cfg(feature = "cubeb_pulse_rust")]
 extern crate cubeb_pulse;
 extern crate encoding_c;
+extern crate encoding_glue;
 
 use std::boxed::Box;
 use std::ffi::CStr;
 use std::os::raw::c_char;
 use std::panic;
 
 
 
--- a/toolkit/locales/en-US/chrome/global/charsetMenu.properties
+++ b/toolkit/locales/en-US/chrome/global/charsetMenu.properties
@@ -81,17 +81,17 @@ windows-1253.key = G
 windows-1253     = Greek (Windows)
 ISO-8859-7.key   =          O
 ISO-8859-7       = Greek (ISO)
 
 # Hebrew
 windows-1255.key = H
 windows-1255     = Hebrew
 # LOCALIZATION NOTE (ISO-8859-8): The value for this item should begin with
-# the same word for Hebrew as the value for windows-1255 so that this item 
+# the same word for Hebrew as the value for windows-1255 so that this item
 # sorts right after that one in the collation order for your locale.
 ISO-8859-8       = Hebrew, Visual
 
 # Japanese
 Shift_JIS.key    = J
 Shift_JIS        = Japanese (Shift_JIS)
 EUC-JP.key       =   p
 EUC-JP           = Japanese (EUC-JP)
--- a/toolkit/modules/CharsetMenu.jsm
+++ b/toolkit/modules/CharsetMenu.jsm
@@ -41,17 +41,17 @@ const kEncodings = new Set([
   // Baltic
   "windows-1257",
   "ISO-8859-4",
   // "ISO-8859-13", // Hidden since not in menu in IE11
   // Central European
   "windows-1250",
   "ISO-8859-2",
   // Chinese, Simplified
-  "gbk",
+  "GBK",
   // Chinese, Traditional
   "Big5",
   // Cyrillic
   "windows-1251",
   "ISO-8859-5",
   "KOI8-R",
   "KOI8-U",
   "IBM866", // Not in menu in Chromium. Maybe drop this?
@@ -212,27 +212,27 @@ var CharsetMenu = {
   _getDetectorAccesskey(detector) {
     try {
       return gBundle.GetStringFromName("charsetMenuAutodet." + detector + ".key");
     } catch (ex) {}
     return "";
   },
 
   _getCharsetLabel(charset) {
-    if (charset == "gbk") {
+    if (charset == "GBK") {
       // Localization key has been revised
       charset = "gbk.bis";
     }
     try {
       return gBundle.GetStringFromName(charset);
     } catch (ex) {}
     return charset;
   },
   _getCharsetAccessKey(charset) {
-    if (charset == "gbk") {
+    if (charset == "GBK") {
       // Localization key has been revised
       charset = "gbk.bis";
     }
     try {
       return gBundle.GetStringFromName(charset + ".key");
     } catch (ex) {}
     return "";
   },
@@ -242,17 +242,17 @@ var CharsetMenu = {
    * for the purpose of the check mark.
    */
   foldCharset(charset) {
     switch (charset) {
       case "ISO-8859-8-I":
         return "windows-1255";
 
       case "gb18030":
-        return "gbk";
+        return "GBK";
 
       default:
         return charset;
     }
   },
 
   update(parent, charset) {
     let menuitem = parent.getElementsByAttribute("charset", this.foldCharset(charset)).item(0);
--- a/widget/gtk/nsClipboard.cpp
+++ b/widget/gtk/nsClipboard.cpp
@@ -32,22 +32,20 @@
 #include <X11/Xlib.h>
 #include <gdk/gdkx.h>
 #include <sys/time.h>
 #include <sys/types.h>
 #include <errno.h>
 #include <unistd.h>
 #include "X11UndefineNone.h"
 
-#include "mozilla/dom/EncodingUtils.h"
-#include "nsIUnicodeDecoder.h"
+#include "mozilla/Encoding.h"
 
 #include "gfxPlatform.h"
 
-using mozilla::dom::EncodingUtils;
 using namespace mozilla;
 
 // Callback when someone asks us for the data
 void
 clipboard_get_cb(GtkClipboard *aGtkClipboard,
                  GtkSelectionData *aSelectionData,
                  guint info,
                  gpointer user_data);
@@ -739,51 +737,56 @@ void ConvertHTMLtoUCS2(guchar * data, in
                    outUnicodeLen * sizeof(char16_t));
             (*unicodeData)[outUnicodeLen] = '\0';
         }
     } else if (charset.EqualsLiteral("UNKNOWN")) {
         outUnicodeLen = 0;
         return;
     } else {
         // app which use "text/html" to copy&paste
-        nsCOMPtr<nsIUnicodeDecoder> decoder;
         // get the decoder
-        nsAutoCString encoding;
-        if (!EncodingUtils::FindEncodingForLabelNoReplacement(charset,
-                                                              encoding)) {
+        auto encoding = Encoding::ForLabelNoReplacement(charset);
+        if (!encoding) {
 #ifdef DEBUG_CLIPBOARD
             g_print("        get unicode decoder error\n");
 #endif
             outUnicodeLen = 0;
             return;
         }
-        decoder = EncodingUtils::DecoderForEncoding(encoding);
-        // converting
-        nsresult rv = decoder->GetMaxLength((const char *)data, dataLength,
-                                            &outUnicodeLen);
-        if (NS_WARN_IF(NS_FAILED(rv))) {
+        auto decoder = encoding->NewDecoder();
+        CheckedInt<size_t> needed = decoder->MaxUTF16BufferLength(dataLength);
+        if (!needed.isValid() || needed.value() > INT32_MAX) {
           outUnicodeLen = 0;
           return;
         }
 
-        // |outUnicodeLen| is number of chars
-        if (outUnicodeLen) {
-            *unicodeData = reinterpret_cast<char16_t*>
-                                           (moz_xmalloc((outUnicodeLen + sizeof('\0')) *
-                           sizeof(char16_t)));
-            if (*unicodeData) {
-                int32_t numberTmp = dataLength;
-                decoder->Convert((const char *)data, &numberTmp,
-                                 *unicodeData, &outUnicodeLen);
+        outUnicodeLen = 0;
+        if (needed.value()) {
+          *unicodeData = reinterpret_cast<char16_t*>(
+            moz_xmalloc((needed.value() + 1) * sizeof(char16_t)));
+          if (*unicodeData) {
+            uint32_t result;
+            size_t read;
+            size_t written;
+            bool hadErrors;
+            Tie(result, read, written, hadErrors) =
+              decoder->DecodeToUTF16(AsBytes(MakeSpan(data, dataLength)),
+                                     MakeSpan(*unicodeData, needed.value()),
+                                     true);
+            MOZ_ASSERT(result == kInputEmpty);
+            MOZ_ASSERT(read == size_t(dataLength));
+            MOZ_ASSERT(written <= needed.value());
+            Unused << hadErrors;
 #ifdef DEBUG_CLIPBOARD
-                if (numberTmp != dataLength)
-                    printf("didn't consume all the bytes\n");
+            if (read != dataLength)
+              printf("didn't consume all the bytes\n");
 #endif
-                // null terminate. Convert() doesn't do it for us
-                (*unicodeData)[outUnicodeLen] = '\0';
+            outUnicodeLen = written;
+            // null terminate.
+            (*unicodeData)[outUnicodeLen] = '\0';
             }
         } // if valid length
     }
 }
 
 /*
  * get "charset" information from clipboard data
  * return value can be:
--- a/xpcom/base/ErrorList.py
+++ b/xpcom/base/ErrorList.py
@@ -541,16 +541,17 @@ with modules["RDF"]:
 
 # =======================================================================
 # 11: NS_ERROR_MODULE_UCONV
 # =======================================================================
 with modules["UCONV"]:
     errors["NS_ERROR_UCONV_NOCONV"] = FAILURE(1)
     errors["NS_ERROR_UDEC_ILLEGALINPUT"] = FAILURE(14)
 
+    errors["NS_OK_HAD_REPLACEMENTS"] = SUCCESS(3)
     errors["NS_SUCCESS_USING_FALLBACK_LOCALE"] = SUCCESS(2)
     errors["NS_OK_UDEC_EXACTLENGTH"] = SUCCESS(11)
     errors["NS_OK_UDEC_MOREINPUT"] = SUCCESS(12)
     errors["NS_OK_UDEC_MOREOUTPUT"] = SUCCESS(13)
     errors["NS_OK_UDEC_NOBOMFOUND"] = SUCCESS(14)
     errors["NS_OK_UENC_EXACTLENGTH"] = SUCCESS(33)
     errors["NS_OK_UENC_MOREOUTPUT"] = SUCCESS(34)
     errors["NS_ERROR_UENC_NOMAPPING"] = SUCCESS(35)
--- a/xpcom/io/nsIUnicharOutputStream.idl
+++ b/xpcom/io/nsIUnicharOutputStream.idl
@@ -29,18 +29,16 @@ interface nsIUnicharOutputStream : nsISu
      */
     boolean writeString(in AString str);
 
     /**
      * Flush the stream. This finishes the conversion and writes any bytes that
      * finish the current byte sequence.
      *
      * It does NOT flush the underlying stream.
-     *
-     * @see nsIUnicodeEncoder::Finish
      */
     void flush();
 
     /**
      * Close the stream and free associated resources. This also closes the
      * underlying stream.
      */
     void close();