diff options
-rw-r--r-- | intl/unicharutil/moz.build | 10 | ||||
-rw-r--r-- | intl/unicharutil/normalization_data.h | 5247 | ||||
-rw-r--r-- | intl/unicharutil/nsUnicodeNormalizer.cpp | 742 | ||||
-rw-r--r-- | intl/unicharutil/nsUnicodeNormalizer.h | 7 | ||||
-rw-r--r-- | intl/unicharutil/nsUnicodeNormalizer_ICU.cpp | 98 |
5 files changed, 69 insertions, 6035 deletions
diff --git a/intl/unicharutil/moz.build b/intl/unicharutil/moz.build index 461fd255e..7b93396fc 100644 --- a/intl/unicharutil/moz.build +++ b/intl/unicharutil/moz.build @@ -27,17 +27,9 @@ UNIFIED_SOURCES += [ 'nsCategoryImp.cpp', 'nsEntityConverter.cpp', 'nsSaveAsCharset.cpp', + 'nsUnicodeNormalizer.cpp', ] -if CONFIG['ENABLE_INTL_API']: - UNIFIED_SOURCES += [ - 'nsUnicodeNormalizer_ICU.cpp', - ] -else: - UNIFIED_SOURCES += [ - 'nsUnicodeNormalizer.cpp', - ] - FINAL_LIBRARY = 'xul' if CONFIG['GNU_CXX']: diff --git a/intl/unicharutil/normalization_data.h b/intl/unicharutil/normalization_data.h deleted file mode 100644 index 90dcd9f4e..000000000 --- a/intl/unicharutil/normalization_data.h +++ /dev/null @@ -1,5247 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ - -/* This file is modified from JPNIC's mDNKit, it is under both MPL and - * JPNIC's license. - */ - -/* 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/. */ - -/* - * Copyright (c) 2000,2002 Japan Network Information Center. - * All rights reserved. - * - * By using this file, you agree to the terms and conditions set forth bellow. - * - * LICENSE TERMS AND CONDITIONS - * - * The following License Terms and Conditions apply, unless a different - * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, - * Chiyoda-ku, Tokyo 101-0047, Japan. - * - * 1. Use, Modification and Redistribution (including distribution of any - * modified or derived work) in source and/or binary forms is permitted - * under this License Terms and Conditions. - * - * 2. Redistribution of source code must retain the copyright notices as they - * appear in each source code file, this License Terms and Conditions. - * - * 3. Redistribution in binary form must reproduce the Copyright Notice, - * this License Terms and Conditions, in the documentation and/or other - * materials provided with the distribution. For the purposes of binary - * distribution the "Copyright Notice" refers to the following language: - * "Copyright (c) 2000-2002 Japan Network Information Center. All rights reserved." - * - * 4. The name of JPNIC may not be used to endorse or promote products - * derived from this Software without specific prior written approval of - * JPNIC. - * - * 5. Disclaimer/Limitation of Liability: THIS SOFTWARE IS PROVIDED BY JPNIC - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JPNIC BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR - * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR - * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF - * ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - */ - -/* $Id: normalization_data.h,v 1.1 2005/04/05 23:00:13 jshin%mailaps.org Exp $ */ -/* $-Id: generate_normalize_data.pl,v 1.9 2002/11/29 09:08:13 ishisone Exp -$ */ -/* - * Do not edit this file! - * This file is generated from UnicodeData.txt, CompositionExclusions-1.txt, - * SpecialCasing.txt and CaseFolding.txt. - */ - - -/* - * Canonical Class - */ - -#define CANON_CLASS_BITS_0 9 -#define CANON_CLASS_BITS_1 7 -#define CANON_CLASS_BITS_2 5 - -static const char16_t canon_class_imap[] = { - 272, 400, 528, 656, 784, 784, 784, 784, - 784, 784, 912, 784, 784, 784, 784, 1040, - 1168, 784, 784, 784, 784, 784, 784, 784, - 784, 784, 784, 784, 784, 1296, 784, 784, - 784, 784, 784, 784, 784, 784, 784, 784, - 784, 784, 784, 784, 784, 784, 784, 784, - 784, 784, 784, 784, 784, 784, 784, 784, - 784, 784, 784, 784, 784, 784, 784, 784, - 784, 784, 784, 784, 784, 784, 784, 784, - 784, 784, 784, 784, 784, 784, 784, 784, - 784, 784, 784, 784, 784, 784, 784, 784, - 784, 784, 784, 784, 784, 784, 784, 784, - 784, 784, 784, 784, 784, 784, 784, 784, - 784, 784, 784, 784, 784, 784, 784, 784, - 784, 784, 784, 784, 784, 784, 784, 784, - 784, 784, 784, 784, 784, 784, 784, 784, - 784, 784, 784, 784, 784, 784, 784, 784, - 784, 784, 784, 784, 784, 784, 784, 784, - 784, 784, 784, 784, 784, 784, 784, 784, - 784, 784, 784, 784, 784, 784, 784, 784, - 784, 784, 784, 784, 784, 784, 784, 784, - 784, 784, 784, 784, 784, 784, 784, 784, - 784, 784, 784, 784, 784, 784, 784, 784, - 784, 784, 784, 784, 784, 784, 784, 784, - 784, 784, 784, 784, 784, 784, 784, 784, - 784, 784, 784, 784, 784, 784, 784, 784, - 784, 784, 784, 784, 784, 784, 784, 784, - 784, 784, 784, 784, 784, 784, 784, 784, - 784, 784, 784, 784, 784, 784, 784, 784, - 784, 784, 784, 784, 784, 784, 784, 784, - 784, 784, 784, 784, 784, 784, 784, 784, - 784, 784, 784, 784, 784, 784, 784, 784, - 784, 784, 784, 784, 784, 784, 784, 784, - 784, 784, 784, 784, 784, 784, 784, 784, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 1, 2, 3, 4, 0, 0, 0, 0, - 0, 0, 0, 0, 5, 0, 0, 0, - 0, 0, 0, 0, 6, 7, 8, 0, - 9, 0, 10, 11, 0, 0, 12, 13, - 14, 15, 16, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 17, 18, 0, 0, 17, 19, 0, - 0, 17, 19, 0, 0, 17, 19, 0, - 0, 17, 19, 0, 0, 0, 19, 0, - 0, 0, 20, 0, 0, 17, 19, 0, - 0, 0, 19, 0, 0, 0, 21, 0, - 0, 22, 23, 0, 0, 24, 25, 0, - 26, 27, 0, 28, 29, 0, 30, 0, - 0, 31, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 32, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 33, 33, 0, 0, 0, 0, 34, 0, - 0, 0, 0, 0, 0, 35, 0, 0, - 0, 36, 0, 0, 0, 0, 0, 0, - 37, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 38, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 39, 40, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 41, 0, 0, 42, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 43, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 44, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 45, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 46, 47, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 48, 49, 50, 0, 0, - 0, 0, 51, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, -}; - -static const struct { - unsigned char tbl[32]; -} canon_class_table[] = { - {{ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - }}, - {{ - 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, - 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 232, - 220, 220, 220, 220, 232, 216, 220, 220, 220, 220, - }}, - {{ - 220, 202, 202, 220, 220, 220, 220, 202, 202, 220, 220, - 220, 220, 220, 220, 220, 220, 220, 220, 220, 1, 1, - 1, 1, 1, 220, 220, 220, 220, 230, 230, 230, - }}, - {{ - 230, 230, 230, 230, 230, 240, 230, 220, 220, 220, 230, - 230, 230, 220, 220, 0, 230, 230, 230, 220, 220, 220, - 220, 230, 232, 220, 220, 230, 233, 234, 234, 233, - }}, - {{ - 234, 234, 233, 230, 230, 230, 230, 230, 230, 230, 230, - 230, 230, 230, 230, 230, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - }}, - {{ - 0, 0, 0, 230, 230, 230, 230, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - }}, - {{ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 220, 230, 230, 230, 230, - 220, 230, 230, 230, 222, 220, 230, 230, 230, 230, - }}, - {{ - 230, 230, 220, 220, 220, 220, 220, 220, 230, 230, 220, - 230, 230, 222, 228, 230, 10, 11, 12, 13, 14, 15, - 16, 17, 18, 19, 0, 20, 21, 22, 0, 23, - }}, - {{ - 0, 24, 25, 0, 230, 220, 0, 18, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - }}, - {{ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 230, 230, 230, 230, 230, 230, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - }}, - {{ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 27, 28, 29, 30, 31, 32, 33, 34, 230, 230, 220, - 220, 230, 230, 230, 230, 230, 220, 230, 230, 0, - }}, - {{ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - }}, - {{ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 230, 230, 230, 230, 230, 230, 230, 0, 0, 230, - }}, - {{ - 230, 230, 230, 220, 230, 0, 0, 230, 230, 0, 220, - 230, 230, 220, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - }}, - {{ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 36, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - }}, - {{ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 230, 220, 230, 230, 220, 230, - 230, 220, 220, 220, 230, 220, 220, 230, 220, 230, - }}, - {{ - 230, 230, 220, 230, 220, 230, 220, 230, 220, 230, 230, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - }}, - {{ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, - }}, - {{ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 9, 0, 0, 0, 230, 220, 230, 230, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - }}, - {{ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - }}, - {{ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 84, - 91, 0, 0, 0, 0, 0, 0, 0, 0, 0, - }}, - {{ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - }}, - {{ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 103, 103, 9, 0, 0, 0, 0, 0, - }}, - {{ - 0, 0, 0, 0, 0, 0, 0, 0, 107, 107, 107, - 107, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - }}, - {{ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 118, 118, 0, 0, 0, 0, 0, 0, - }}, - {{ - 0, 0, 0, 0, 0, 0, 0, 0, 122, 122, 122, - 122, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - }}, - {{ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 220, 220, 0, 0, 0, 0, 0, 0, - }}, - {{ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 220, - 0, 220, 0, 216, 0, 0, 0, 0, 0, 0, - }}, - {{ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 129, 130, 0, 132, 0, - 0, 0, 0, 0, 130, 130, 130, 130, 0, 0, - }}, - {{ - 130, 0, 230, 230, 9, 0, 230, 230, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - }}, - {{ - 0, 0, 0, 0, 0, 0, 220, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - }}, - {{ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 7, 0, 9, 0, 0, 0, 0, 0, 0, - }}, - {{ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, - }}, - {{ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - }}, - {{ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 230, 0, 0, - }}, - {{ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 228, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - }}, - {{ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 222, 230, 220, 0, 0, 0, 0, - }}, - {{ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 230, 220, 0, 0, 0, 0, 0, 0, 0, - }}, - {{ - 230, 230, 220, 230, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - }}, - {{ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 230, 230, 1, 1, 230, 230, - 230, 230, 1, 1, 1, 230, 230, 0, 0, 0, - }}, - {{ - 0, 230, 0, 0, 0, 1, 1, 230, 220, 230, 1, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - }}, - {{ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 218, - 228, 232, 222, 224, 224, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - }}, - {{ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 8, 8, 0, 0, 0, 0, 0, - }}, - {{ - 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - }}, - {{ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, - }}, - {{ - 230, 230, 230, 230, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - }}, - {{ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 220, 0, 230, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - }}, - {{ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 230, 1, 220, 0, 0, 0, 0, 9, - }}, - {{ - 0, 0, 0, 0, 0, 216, 216, 1, 1, 1, 0, - 0, 0, 226, 216, 216, 216, 216, 216, 0, 0, 0, - 0, 0, 0, 0, 0, 220, 220, 220, 220, 220, - }}, - {{ - 220, 220, 220, 0, 0, 230, 230, 230, 230, 230, 220, - 220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - }}, - {{ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, - 230, 230, 230, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - }}, - {{ - 0, 0, 230, 230, 230, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - }}, -}; - -/* - * Canonical Composition - */ - -#define CANON_COMPOSE_BITS_0 9 -#define CANON_COMPOSE_BITS_1 7 -#define CANON_COMPOSE_BITS_2 5 - -static const char16_t compose_imap[] = { - 272, 400, 528, 656, 784, 784, 784, 784, - 784, 784, 784, 784, 784, 784, 784, 784, - 784, 784, 784, 784, 784, 784, 784, 784, - 784, 784, 784, 784, 784, 784, 784, 784, - 784, 784, 784, 784, 784, 784, 784, 784, - 784, 784, 784, 784, 784, 784, 784, 784, - 784, 784, 784, 784, 784, 784, 784, 784, - 784, 784, 784, 784, 784, 784, 784, 784, - 784, 784, 784, 784, 784, 784, 784, 784, - 784, 784, 784, 784, 784, 784, 784, 784, - 784, 784, 784, 784, 784, 784, 784, 784, - 784, 784, 784, 784, 784, 784, 784, 784, - 784, 784, 784, 784, 784, 784, 784, 784, - 784, 784, 784, 784, 784, 784, 784, 784, - 784, 784, 784, 784, 784, 784, 784, 784, - 784, 784, 784, 784, 784, 784, 784, 784, - 784, 784, 784, 784, 784, 784, 784, 784, - 784, 784, 784, 784, 784, 784, 784, 784, - 784, 784, 784, 784, 784, 784, 784, 784, - 784, 784, 784, 784, 784, 784, 784, 784, - 784, 784, 784, 784, 784, 784, 784, 784, - 784, 784, 784, 784, 784, 784, 784, 784, - 784, 784, 784, 784, 784, 784, 784, 784, - 784, 784, 784, 784, 784, 784, 784, 784, - 784, 784, 784, 784, 784, 784, 784, 784, - 784, 784, 784, 784, 784, 784, 784, 784, - 784, 784, 784, 784, 784, 784, 784, 784, - 784, 784, 784, 784, 784, 784, 784, 784, - 784, 784, 784, 784, 784, 784, 784, 784, - 784, 784, 784, 784, 784, 784, 784, 784, - 784, 784, 784, 784, 784, 784, 784, 784, - 784, 784, 784, 784, 784, 784, 784, 784, - 784, 784, 784, 784, 784, 784, 784, 784, - 784, 784, 784, 784, 784, 784, 784, 784, - 0, 1, 2, 3, 0, 4, 5, 6, - 7, 0, 8, 9, 0, 10, 0, 11, - 0, 12, 0, 0, 13, 0, 0, 0, - 0, 0, 0, 0, 14, 15, 16, 0, - 17, 18, 19, 20, 0, 0, 21, 22, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 23, 24, 0, 0, 0, 25, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 26, 0, 0, 0, 0, 27, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 28, 0, 29, 0, 30, 0, - 0, 0, 31, 0, 0, 32, 33, 0, - 0, 0, 34, 0, 0, 0, 35, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 36, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 37, 38, 39, 0, 40, 41, 0, - 42, 43, 44, 45, 0, 46, 47, 48, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 49, 0, 50, 0, - 51, 52, 53, 54, 55, 56, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 57, 58, 59, 60, 61, 62, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, -}; - -static const struct { - uint32_t tbl[32]; -} compose_table[] = { - {{ - 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, - }}, - {{ - 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, - 65537, 65538, 65539, 0, - }}, - {{ - 0, 1048580, 196628, 327703, 393244, 1114146, 65587, - 458804, 458811, 983106, 65617, 327762, 393303, 196701, - 589920, 1048681, 131193, 0, 524411, 458883, 458890, - 1245329, 131236, 393382, 131244, 589998, 393399, 0, - 0, 0, 0, 0, - }}, - {{ - 0, 1048765, 196813, 327888, 393429, 1114331, 65772, - 458989, 524532, 917756, 131338, 327948, 393489, 196887, - 590106, 1048867, 131379, 0, 524597, 459069, 524612, - 1245516, 131423, 459105, 131432, 655722, 393588, 0, - 0, 0, 0, 0, - }}, - {{ - 0, 0, 0, 0, 0, 0, 0, - 0, 196986, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, - }}, - {{ - 0, 0, 262525, 0, 65921, 65922, 131459, - 65925, 0, 0, 262534, 0, 0, 0, - 0, 65930, 0, 0, 0, 0, 262539, - 197007, 65938, 0, 65939, 0, 0, 0, - 262548, 0, 0, 0, - }}, - {{ - 0, 0, 262552, 0, 65948, 65949, 131486, - 65952, 0, 0, 262561, 0, 0, 0, - 0, 65957, 0, 0, 0, 0, 262566, - 197034, 65965, 0, 65966, 0, 0, 0, - 262575, 0, 0, 0, - }}, - {{ - 0, 0, 262579, 262583, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 131515, 131517, 0, - 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, - }}, - {{ - 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 131519, 131521, - 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 65987, 65988, - 0, 0, 0, 0, - }}, - {{ - 65989, 65990, 0, 0, 0, 0, 0, - 0, 65991, 65992, 65993, 65994, 0, 0, - 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 65995, - }}, - {{ - 328140, 328145, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, - 0, 328150, 328155, 0, 0, 0, 0, - 0, 0, 66016, 0, 0, 0, 0, - 0, 0, 0, 0, - }}, - {{ - 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 66017, 66018, 0, 0, - 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, - }}, - {{ - 0, 0, 0, 0, 0, 0, 66019, - 66020, 66021, 66022, 0, 0, 0, 0, - 66023, 66024, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, - }}, - {{ - 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 66025, 0, 0, - 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, - }}, - {{ - 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 459242, 0, 0, 0, - 262641, 0, 328181, 0, 459258, 0, 0, - 0, 0, 0, 262657, - }}, - {{ - 0, 66053, 0, 0, 0, 393734, 0, - 0, 0, 328204, 0, 0, 66065, 0, - 66066, 0, 0, 524819, 0, 0, 0, - 262683, 0, 393759, 0, 524837, 0, 0, - 0, 0, 0, 262701, - }}, - {{ - 0, 131633, 0, 0, 0, 524851, 0, - 0, 0, 393787, 197185, 197188, 0, 0, - 66119, 0, 0, 0, 131656, 0, 0, - 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, - }}, - {{ - 0, 0, 0, 0, 0, 0, 66122, - 0, 0, 0, 0, 0, 0, 0, - 0, 0, 131659, 0, 0, 66125, 0, - 197198, 131665, 66131, 262740, 0, 66136, 0, - 0, 0, 66137, 0, - }}, - {{ - 0, 0, 0, 262746, 0, 0, 0, - 66142, 0, 0, 0, 66143, 0, 66144, - 0, 0, 131681, 0, 0, 66147, 0, - 197220, 131687, 66153, 262762, 0, 66158, 0, - 0, 0, 66159, 0, - }}, - {{ - 0, 0, 0, 262768, 0, 0, 0, - 66164, 0, 0, 0, 66165, 0, 66166, - 0, 0, 0, 0, 0, 0, 0, - 0, 66167, 0, 0, 0, 0, 0, - 0, 0, 0, 0, - }}, - {{ - 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 66168, - 66169, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, - }}, - {{ - 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 66170, 66171, 0, 0, - 0, 0, 0, 0, - }}, - {{ - 0, 0, 0, 0, 0, 0, 0, - 0, 66172, 66173, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, - }}, - {{ - 0, 0, 0, 0, 0, 0, 0, - 197246, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, - }}, - {{ - 0, 0, 0, 0, 0, 0, 0, - 0, 66177, 0, 66178, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, - }}, - {{ - 0, 66179, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 66180, 0, 0, - 66181, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, - }}, - {{ - 0, 0, 0, 0, 0, 0, 0, - 0, 66182, 0, 0, 0, 0, 0, - 0, 0, 66183, 0, 0, 66184, 0, - 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, - }}, - {{ - 0, 0, 0, 0, 0, 0, 0, - 131721, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, - }}, - {{ - 0, 0, 0, 0, 0, 0, 0, - 197259, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, - }}, - {{ - 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 66190, 0, 0, - 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, - }}, - {{ - 0, 0, 0, 0, 0, 0, 131727, - 66193, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, - }}, - {{ - 0, 0, 0, 0, 0, 0, 66194, - 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, - }}, - {{ - 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 66195, - }}, - {{ - 0, 0, 0, 0, 0, 0, 197268, - 0, 0, 0, 66199, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, - }}, - {{ - 0, 0, 0, 0, 0, 0, 131736, - 66202, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, - }}, - {{ - 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 197275, 0, 0, - 66206, 0, 0, 0, - }}, - {{ - 0, 0, 0, 0, 0, 66207, 0, - 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, - }}, - {{ - 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, - 0, 66208, 66209, 0, 0, 0, 0, - 0, 0, 0, 0, - }}, - {{ - 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 66210, 66211, - 0, 0, 0, 0, - }}, - {{ - 0, 0, 66212, 66213, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, - }}, - {{ - 131750, 131752, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 66218, 66219, 0, 0, - 0, 0, 0, 0, - }}, - {{ - 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 66220, 66221, - 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, - }}, - {{ - 262830, 262834, 66230, 66231, 66232, 66233, 66234, - 66235, 262844, 262848, 66244, 66245, 66246, 66247, - 66248, 66249, 131786, 131788, 0, 0, 0, - 0, 0, 0, 131790, 131792, 0, 0, - 0, 0, 0, 0, - }}, - {{ - 262866, 262870, 66266, 66267, 66268, 66269, 66270, - 66271, 262880, 262884, 66280, 66281, 66282, 66283, - 66284, 66285, 197358, 197361, 0, 0, 0, - 0, 0, 0, 197364, 197367, 0, 0, - 0, 0, 0, 0, - }}, - {{ - 131834, 131836, 0, 0, 0, 0, 0, - 0, 131838, 131840, 0, 0, 0, 0, - 0, 0, 197378, 197381, 0, 0, 0, - 0, 0, 0, 0, 197384, 0, 0, - 0, 0, 0, 0, - }}, - {{ - 262923, 262927, 66323, 66324, 66325, 66326, 66327, - 66328, 262937, 262941, 66337, 66338, 66339, 66340, - 66341, 66342, 66343, 0, 0, 0, 66344, - 0, 0, 0, 0, 0, 0, 0, - 66345, 0, 0, 0, - }}, - {{ - 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, - 0, 66346, 0, 0, 0, 0, 0, - 0, 0, 0, 197419, - }}, - {{ - 0, 0, 0, 0, 0, 0, 66350, - 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, - }}, - {{ - 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, - 0, 66351, 0, 0, 0, 0, 0, - 0, 0, 197424, 0, - }}, - {{ - 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, - 0, 0, 66355, 0, 66356, 0, 66357, - 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, - }}, - {{ - 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, - 0, 0, 66358, 0, 66359, 0, 66360, - 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, - }}, - {{ - 0, 0, 0, 66361, 0, 0, 0, - 0, 66362, 0, 0, 66363, 0, 0, - 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, - }}, - {{ - 0, 0, 0, 66364, 0, 66365, 0, - 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, - 66366, 0, 0, 0, - }}, - {{ - 0, 0, 0, 66367, 0, 66368, 0, - 0, 66369, 0, 0, 0, 0, 66370, - 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, - }}, - {{ - 0, 66371, 0, 0, 66372, 66373, 0, - 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 66374, 66375, 0, - 0, 66376, 66377, 0, 0, 66378, 66379, - 66380, 66381, 0, 0, - }}, - {{ - 0, 0, 66382, 66383, 0, 0, 66384, - 66385, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 66386, 66387, 0, 0, - 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, - }}, - {{ - 0, 0, 66388, 0, 0, 0, 0, - 0, 66389, 66390, 0, 66391, 0, 0, - 0, 0, 0, 0, 66392, 66393, 66394, - 66395, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, - }}, - {{ - 0, 0, 0, 0, 0, 0, 66396, - 0, 0, 0, 0, 66397, 0, 66398, - 0, 66399, 0, 66400, 0, 66401, 0, - 66402, 0, 66403, 0, 66404, 0, 66405, - 0, 66406, 0, 66407, - }}, - {{ - 0, 66408, 0, 0, 66409, 0, 66410, - 0, 66411, 0, 0, 0, 0, 0, - 0, 131948, 0, 0, 131950, 0, 0, - 131952, 0, 0, 131954, 0, 0, 131956, - 0, 0, 0, 0, - }}, - {{ - 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, - 0, 66422, 0, 0, - }}, - {{ - 0, 0, 0, 0, 0, 0, 66423, - 0, 0, 0, 0, 66424, 0, 66425, - 0, 66426, 0, 66427, 0, 66428, 0, - 66429, 0, 66430, 0, 66431, 0, 66432, - 0, 66433, 0, 66434, - }}, - {{ - 0, 66435, 0, 0, 66436, 0, 66437, - 0, 66438, 0, 0, 0, 0, 0, - 0, 131975, 0, 0, 131977, 0, 0, - 131979, 0, 0, 131981, 0, 0, 131983, - 0, 0, 0, 0, - }}, - {{ - 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, - 0, 66449, 66450, 66451, 66452, 0, 0, - 0, 0, 0, 0, 0, 0, 0, - 0, 66453, 0, 0, - }}, -}; - -static const struct composition compose_seq[] = { - { 0x00000000, 0x00000000 }, { 0x00000338, 0x0000226e }, - { 0x00000338, 0x00002260 }, { 0x00000338, 0x0000226f }, - { 0x00000300, 0x000000c0 }, { 0x00000301, 0x000000c1 }, - { 0x00000302, 0x000000c2 }, { 0x00000303, 0x000000c3 }, - { 0x00000304, 0x00000100 }, { 0x00000306, 0x00000102 }, - { 0x00000307, 0x00000226 }, { 0x00000308, 0x000000c4 }, - { 0x00000309, 0x00001ea2 }, { 0x0000030a, 0x000000c5 }, - { 0x0000030c, 0x000001cd }, { 0x0000030f, 0x00000200 }, - { 0x00000311, 0x00000202 }, { 0x00000323, 0x00001ea0 }, - { 0x00000325, 0x00001e00 }, { 0x00000328, 0x00000104 }, - { 0x00000307, 0x00001e02 }, { 0x00000323, 0x00001e04 }, - { 0x00000331, 0x00001e06 }, { 0x00000301, 0x00000106 }, - { 0x00000302, 0x00000108 }, { 0x00000307, 0x0000010a }, - { 0x0000030c, 0x0000010c }, { 0x00000327, 0x000000c7 }, - { 0x00000307, 0x00001e0a }, { 0x0000030c, 0x0000010e }, - { 0x00000323, 0x00001e0c }, { 0x00000327, 0x00001e10 }, - { 0x0000032d, 0x00001e12 }, { 0x00000331, 0x00001e0e }, - { 0x00000300, 0x000000c8 }, { 0x00000301, 0x000000c9 }, - { 0x00000302, 0x000000ca }, { 0x00000303, 0x00001ebc }, - { 0x00000304, 0x00000112 }, { 0x00000306, 0x00000114 }, - { 0x00000307, 0x00000116 }, { 0x00000308, 0x000000cb }, - { 0x00000309, 0x00001eba }, { 0x0000030c, 0x0000011a }, - { 0x0000030f, 0x00000204 }, { 0x00000311, 0x00000206 }, - { 0x00000323, 0x00001eb8 }, { 0x00000327, 0x00000228 }, - { 0x00000328, 0x00000118 }, { 0x0000032d, 0x00001e18 }, - { 0x00000330, 0x00001e1a }, { 0x00000307, 0x00001e1e }, - { 0x00000301, 0x000001f4 }, { 0x00000302, 0x0000011c }, - { 0x00000304, 0x00001e20 }, { 0x00000306, 0x0000011e }, - { 0x00000307, 0x00000120 }, { 0x0000030c, 0x000001e6 }, - { 0x00000327, 0x00000122 }, { 0x00000302, 0x00000124 }, - { 0x00000307, 0x00001e22 }, { 0x00000308, 0x00001e26 }, - { 0x0000030c, 0x0000021e }, { 0x00000323, 0x00001e24 }, - { 0x00000327, 0x00001e28 }, { 0x0000032e, 0x00001e2a }, - { 0x00000300, 0x000000cc }, { 0x00000301, 0x000000cd }, - { 0x00000302, 0x000000ce }, { 0x00000303, 0x00000128 }, - { 0x00000304, 0x0000012a }, { 0x00000306, 0x0000012c }, - { 0x00000307, 0x00000130 }, { 0x00000308, 0x000000cf }, - { 0x00000309, 0x00001ec8 }, { 0x0000030c, 0x000001cf }, - { 0x0000030f, 0x00000208 }, { 0x00000311, 0x0000020a }, - { 0x00000323, 0x00001eca }, { 0x00000328, 0x0000012e }, - { 0x00000330, 0x00001e2c }, { 0x00000302, 0x00000134 }, - { 0x00000301, 0x00001e30 }, { 0x0000030c, 0x000001e8 }, - { 0x00000323, 0x00001e32 }, { 0x00000327, 0x00000136 }, - { 0x00000331, 0x00001e34 }, { 0x00000301, 0x00000139 }, - { 0x0000030c, 0x0000013d }, { 0x00000323, 0x00001e36 }, - { 0x00000327, 0x0000013b }, { 0x0000032d, 0x00001e3c }, - { 0x00000331, 0x00001e3a }, { 0x00000301, 0x00001e3e }, - { 0x00000307, 0x00001e40 }, { 0x00000323, 0x00001e42 }, - { 0x00000300, 0x000001f8 }, { 0x00000301, 0x00000143 }, - { 0x00000303, 0x000000d1 }, { 0x00000307, 0x00001e44 }, - { 0x0000030c, 0x00000147 }, { 0x00000323, 0x00001e46 }, - { 0x00000327, 0x00000145 }, { 0x0000032d, 0x00001e4a }, - { 0x00000331, 0x00001e48 }, { 0x00000300, 0x000000d2 }, - { 0x00000301, 0x000000d3 }, { 0x00000302, 0x000000d4 }, - { 0x00000303, 0x000000d5 }, { 0x00000304, 0x0000014c }, - { 0x00000306, 0x0000014e }, { 0x00000307, 0x0000022e }, - { 0x00000308, 0x000000d6 }, { 0x00000309, 0x00001ece }, - { 0x0000030b, 0x00000150 }, { 0x0000030c, 0x000001d1 }, - { 0x0000030f, 0x0000020c }, { 0x00000311, 0x0000020e }, - { 0x0000031b, 0x000001a0 }, { 0x00000323, 0x00001ecc }, - { 0x00000328, 0x000001ea }, { 0x00000301, 0x00001e54 }, - { 0x00000307, 0x00001e56 }, { 0x00000301, 0x00000154 }, - { 0x00000307, 0x00001e58 }, { 0x0000030c, 0x00000158 }, - { 0x0000030f, 0x00000210 }, { 0x00000311, 0x00000212 }, - { 0x00000323, 0x00001e5a }, { 0x00000327, 0x00000156 }, - { 0x00000331, 0x00001e5e }, { 0x00000301, 0x0000015a }, - { 0x00000302, 0x0000015c }, { 0x00000307, 0x00001e60 }, - { 0x0000030c, 0x00000160 }, { 0x00000323, 0x00001e62 }, - { 0x00000326, 0x00000218 }, { 0x00000327, 0x0000015e }, - { 0x00000307, 0x00001e6a }, { 0x0000030c, 0x00000164 }, - { 0x00000323, 0x00001e6c }, { 0x00000326, 0x0000021a }, - { 0x00000327, 0x00000162 }, { 0x0000032d, 0x00001e70 }, - { 0x00000331, 0x00001e6e }, { 0x00000300, 0x000000d9 }, - { 0x00000301, 0x000000da }, { 0x00000302, 0x000000db }, - { 0x00000303, 0x00000168 }, { 0x00000304, 0x0000016a }, - { 0x00000306, 0x0000016c }, { 0x00000308, 0x000000dc }, - { 0x00000309, 0x00001ee6 }, { 0x0000030a, 0x0000016e }, - { 0x0000030b, 0x00000170 }, { 0x0000030c, 0x000001d3 }, - { 0x0000030f, 0x00000214 }, { 0x00000311, 0x00000216 }, - { 0x0000031b, 0x000001af }, { 0x00000323, 0x00001ee4 }, - { 0x00000324, 0x00001e72 }, { 0x00000328, 0x00000172 }, - { 0x0000032d, 0x00001e76 }, { 0x00000330, 0x00001e74 }, - { 0x00000303, 0x00001e7c }, { 0x00000323, 0x00001e7e }, - { 0x00000300, 0x00001e80 }, { 0x00000301, 0x00001e82 }, - { 0x00000302, 0x00000174 }, { 0x00000307, 0x00001e86 }, - { 0x00000308, 0x00001e84 }, { 0x00000323, 0x00001e88 }, - { 0x00000307, 0x00001e8a }, { 0x00000308, 0x00001e8c }, - { 0x00000300, 0x00001ef2 }, { 0x00000301, 0x000000dd }, - { 0x00000302, 0x00000176 }, { 0x00000303, 0x00001ef8 }, - { 0x00000304, 0x00000232 }, { 0x00000307, 0x00001e8e }, - { 0x00000308, 0x00000178 }, { 0x00000309, 0x00001ef6 }, - { 0x00000323, 0x00001ef4 }, { 0x00000301, 0x00000179 }, - { 0x00000302, 0x00001e90 }, { 0x00000307, 0x0000017b }, - { 0x0000030c, 0x0000017d }, { 0x00000323, 0x00001e92 }, - { 0x00000331, 0x00001e94 }, { 0x00000300, 0x000000e0 }, - { 0x00000301, 0x000000e1 }, { 0x00000302, 0x000000e2 }, - { 0x00000303, 0x000000e3 }, { 0x00000304, 0x00000101 }, - { 0x00000306, 0x00000103 }, { 0x00000307, 0x00000227 }, - { 0x00000308, 0x000000e4 }, { 0x00000309, 0x00001ea3 }, - { 0x0000030a, 0x000000e5 }, { 0x0000030c, 0x000001ce }, - { 0x0000030f, 0x00000201 }, { 0x00000311, 0x00000203 }, - { 0x00000323, 0x00001ea1 }, { 0x00000325, 0x00001e01 }, - { 0x00000328, 0x00000105 }, { 0x00000307, 0x00001e03 }, - { 0x00000323, 0x00001e05 }, { 0x00000331, 0x00001e07 }, - { 0x00000301, 0x00000107 }, { 0x00000302, 0x00000109 }, - { 0x00000307, 0x0000010b }, { 0x0000030c, 0x0000010d }, - { 0x00000327, 0x000000e7 }, { 0x00000307, 0x00001e0b }, - { 0x0000030c, 0x0000010f }, { 0x00000323, 0x00001e0d }, - { 0x00000327, 0x00001e11 }, { 0x0000032d, 0x00001e13 }, - { 0x00000331, 0x00001e0f }, { 0x00000300, 0x000000e8 }, - { 0x00000301, 0x000000e9 }, { 0x00000302, 0x000000ea }, - { 0x00000303, 0x00001ebd }, { 0x00000304, 0x00000113 }, - { 0x00000306, 0x00000115 }, { 0x00000307, 0x00000117 }, - { 0x00000308, 0x000000eb }, { 0x00000309, 0x00001ebb }, - { 0x0000030c, 0x0000011b }, { 0x0000030f, 0x00000205 }, - { 0x00000311, 0x00000207 }, { 0x00000323, 0x00001eb9 }, - { 0x00000327, 0x00000229 }, { 0x00000328, 0x00000119 }, - { 0x0000032d, 0x00001e19 }, { 0x00000330, 0x00001e1b }, - { 0x00000307, 0x00001e1f }, { 0x00000301, 0x000001f5 }, - { 0x00000302, 0x0000011d }, { 0x00000304, 0x00001e21 }, - { 0x00000306, 0x0000011f }, { 0x00000307, 0x00000121 }, - { 0x0000030c, 0x000001e7 }, { 0x00000327, 0x00000123 }, - { 0x00000302, 0x00000125 }, { 0x00000307, 0x00001e23 }, - { 0x00000308, 0x00001e27 }, { 0x0000030c, 0x0000021f }, - { 0x00000323, 0x00001e25 }, { 0x00000327, 0x00001e29 }, - { 0x0000032e, 0x00001e2b }, { 0x00000331, 0x00001e96 }, - { 0x00000300, 0x000000ec }, { 0x00000301, 0x000000ed }, - { 0x00000302, 0x000000ee }, { 0x00000303, 0x00000129 }, - { 0x00000304, 0x0000012b }, { 0x00000306, 0x0000012d }, - { 0x00000308, 0x000000ef }, { 0x00000309, 0x00001ec9 }, - { 0x0000030c, 0x000001d0 }, { 0x0000030f, 0x00000209 }, - { 0x00000311, 0x0000020b }, { 0x00000323, 0x00001ecb }, - { 0x00000328, 0x0000012f }, { 0x00000330, 0x00001e2d }, - { 0x00000302, 0x00000135 }, { 0x0000030c, 0x000001f0 }, - { 0x00000301, 0x00001e31 }, { 0x0000030c, 0x000001e9 }, - { 0x00000323, 0x00001e33 }, { 0x00000327, 0x00000137 }, - { 0x00000331, 0x00001e35 }, { 0x00000301, 0x0000013a }, - { 0x0000030c, 0x0000013e }, { 0x00000323, 0x00001e37 }, - { 0x00000327, 0x0000013c }, { 0x0000032d, 0x00001e3d }, - { 0x00000331, 0x00001e3b }, { 0x00000301, 0x00001e3f }, - { 0x00000307, 0x00001e41 }, { 0x00000323, 0x00001e43 }, - { 0x00000300, 0x000001f9 }, { 0x00000301, 0x00000144 }, - { 0x00000303, 0x000000f1 }, { 0x00000307, 0x00001e45 }, - { 0x0000030c, 0x00000148 }, { 0x00000323, 0x00001e47 }, - { 0x00000327, 0x00000146 }, { 0x0000032d, 0x00001e4b }, - { 0x00000331, 0x00001e49 }, { 0x00000300, 0x000000f2 }, - { 0x00000301, 0x000000f3 }, { 0x00000302, 0x000000f4 }, - { 0x00000303, 0x000000f5 }, { 0x00000304, 0x0000014d }, - { 0x00000306, 0x0000014f }, { 0x00000307, 0x0000022f }, - { 0x00000308, 0x000000f6 }, { 0x00000309, 0x00001ecf }, - { 0x0000030b, 0x00000151 }, { 0x0000030c, 0x000001d2 }, - { 0x0000030f, 0x0000020d }, { 0x00000311, 0x0000020f }, - { 0x0000031b, 0x000001a1 }, { 0x00000323, 0x00001ecd }, - { 0x00000328, 0x000001eb }, { 0x00000301, 0x00001e55 }, - { 0x00000307, 0x00001e57 }, { 0x00000301, 0x00000155 }, - { 0x00000307, 0x00001e59 }, { 0x0000030c, 0x00000159 }, - { 0x0000030f, 0x00000211 }, { 0x00000311, 0x00000213 }, - { 0x00000323, 0x00001e5b }, { 0x00000327, 0x00000157 }, - { 0x00000331, 0x00001e5f }, { 0x00000301, 0x0000015b }, - { 0x00000302, 0x0000015d }, { 0x00000307, 0x00001e61 }, - { 0x0000030c, 0x00000161 }, { 0x00000323, 0x00001e63 }, - { 0x00000326, 0x00000219 }, { 0x00000327, 0x0000015f }, - { 0x00000307, 0x00001e6b }, { 0x00000308, 0x00001e97 }, - { 0x0000030c, 0x00000165 }, { 0x00000323, 0x00001e6d }, - { 0x00000326, 0x0000021b }, { 0x00000327, 0x00000163 }, - { 0x0000032d, 0x00001e71 }, { 0x00000331, 0x00001e6f }, - { 0x00000300, 0x000000f9 }, { 0x00000301, 0x000000fa }, - { 0x00000302, 0x000000fb }, { 0x00000303, 0x00000169 }, - { 0x00000304, 0x0000016b }, { 0x00000306, 0x0000016d }, - { 0x00000308, 0x000000fc }, { 0x00000309, 0x00001ee7 }, - { 0x0000030a, 0x0000016f }, { 0x0000030b, 0x00000171 }, - { 0x0000030c, 0x000001d4 }, { 0x0000030f, 0x00000215 }, - { 0x00000311, 0x00000217 }, { 0x0000031b, 0x000001b0 }, - { 0x00000323, 0x00001ee5 }, { 0x00000324, 0x00001e73 }, - { 0x00000328, 0x00000173 }, { 0x0000032d, 0x00001e77 }, - { 0x00000330, 0x00001e75 }, { 0x00000303, 0x00001e7d }, - { 0x00000323, 0x00001e7f }, { 0x00000300, 0x00001e81 }, - { 0x00000301, 0x00001e83 }, { 0x00000302, 0x00000175 }, - { 0x00000307, 0x00001e87 }, { 0x00000308, 0x00001e85 }, - { 0x0000030a, 0x00001e98 }, { 0x00000323, 0x00001e89 }, - { 0x00000307, 0x00001e8b }, { 0x00000308, 0x00001e8d }, - { 0x00000300, 0x00001ef3 }, { 0x00000301, 0x000000fd }, - { 0x00000302, 0x00000177 }, { 0x00000303, 0x00001ef9 }, - { 0x00000304, 0x00000233 }, { 0x00000307, 0x00001e8f }, - { 0x00000308, 0x000000ff }, { 0x00000309, 0x00001ef7 }, - { 0x0000030a, 0x00001e99 }, { 0x00000323, 0x00001ef5 }, - { 0x00000301, 0x0000017a }, { 0x00000302, 0x00001e91 }, - { 0x00000307, 0x0000017c }, { 0x0000030c, 0x0000017e }, - { 0x00000323, 0x00001e93 }, { 0x00000331, 0x00001e95 }, - { 0x00000300, 0x00001fed }, { 0x00000301, 0x00000385 }, - { 0x00000342, 0x00001fc1 }, { 0x00000300, 0x00001ea6 }, - { 0x00000301, 0x00001ea4 }, { 0x00000303, 0x00001eaa }, - { 0x00000309, 0x00001ea8 }, { 0x00000304, 0x000001de }, - { 0x00000301, 0x000001fa }, { 0x00000301, 0x000001fc }, - { 0x00000304, 0x000001e2 }, { 0x00000301, 0x00001e08 }, - { 0x00000300, 0x00001ec0 }, { 0x00000301, 0x00001ebe }, - { 0x00000303, 0x00001ec4 }, { 0x00000309, 0x00001ec2 }, - { 0x00000301, 0x00001e2e }, { 0x00000300, 0x00001ed2 }, - { 0x00000301, 0x00001ed0 }, { 0x00000303, 0x00001ed6 }, - { 0x00000309, 0x00001ed4 }, { 0x00000301, 0x00001e4c }, - { 0x00000304, 0x0000022c }, { 0x00000308, 0x00001e4e }, - { 0x00000304, 0x0000022a }, { 0x00000301, 0x000001fe }, - { 0x00000300, 0x000001db }, { 0x00000301, 0x000001d7 }, - { 0x00000304, 0x000001d5 }, { 0x0000030c, 0x000001d9 }, - { 0x00000300, 0x00001ea7 }, { 0x00000301, 0x00001ea5 }, - { 0x00000303, 0x00001eab }, { 0x00000309, 0x00001ea9 }, - { 0x00000304, 0x000001df }, { 0x00000301, 0x000001fb }, - { 0x00000301, 0x000001fd }, { 0x00000304, 0x000001e3 }, - { 0x00000301, 0x00001e09 }, { 0x00000300, 0x00001ec1 }, - { 0x00000301, 0x00001ebf }, { 0x00000303, 0x00001ec5 }, - { 0x00000309, 0x00001ec3 }, { 0x00000301, 0x00001e2f }, - { 0x00000300, 0x00001ed3 }, { 0x00000301, 0x00001ed1 }, - { 0x00000303, 0x00001ed7 }, { 0x00000309, 0x00001ed5 }, - { 0x00000301, 0x00001e4d }, { 0x00000304, 0x0000022d }, - { 0x00000308, 0x00001e4f }, { 0x00000304, 0x0000022b }, - { 0x00000301, 0x000001ff }, { 0x00000300, 0x000001dc }, - { 0x00000301, 0x000001d8 }, { 0x00000304, 0x000001d6 }, - { 0x0000030c, 0x000001da }, { 0x00000300, 0x00001eb0 }, - { 0x00000301, 0x00001eae }, { 0x00000303, 0x00001eb4 }, - { 0x00000309, 0x00001eb2 }, { 0x00000300, 0x00001eb1 }, - { 0x00000301, 0x00001eaf }, { 0x00000303, 0x00001eb5 }, - { 0x00000309, 0x00001eb3 }, { 0x00000300, 0x00001e14 }, - { 0x00000301, 0x00001e16 }, { 0x00000300, 0x00001e15 }, - { 0x00000301, 0x00001e17 }, { 0x00000300, 0x00001e50 }, - { 0x00000301, 0x00001e52 }, { 0x00000300, 0x00001e51 }, - { 0x00000301, 0x00001e53 }, { 0x00000307, 0x00001e64 }, - { 0x00000307, 0x00001e65 }, { 0x00000307, 0x00001e66 }, - { 0x00000307, 0x00001e67 }, { 0x00000301, 0x00001e78 }, - { 0x00000301, 0x00001e79 }, { 0x00000308, 0x00001e7a }, - { 0x00000308, 0x00001e7b }, { 0x00000307, 0x00001e9b }, - { 0x00000300, 0x00001edc }, { 0x00000301, 0x00001eda }, - { 0x00000303, 0x00001ee0 }, { 0x00000309, 0x00001ede }, - { 0x00000323, 0x00001ee2 }, { 0x00000300, 0x00001edd }, - { 0x00000301, 0x00001edb }, { 0x00000303, 0x00001ee1 }, - { 0x00000309, 0x00001edf }, { 0x00000323, 0x00001ee3 }, - { 0x00000300, 0x00001eea }, { 0x00000301, 0x00001ee8 }, - { 0x00000303, 0x00001eee }, { 0x00000309, 0x00001eec }, - { 0x00000323, 0x00001ef0 }, { 0x00000300, 0x00001eeb }, - { 0x00000301, 0x00001ee9 }, { 0x00000303, 0x00001eef }, - { 0x00000309, 0x00001eed }, { 0x00000323, 0x00001ef1 }, - { 0x0000030c, 0x000001ee }, { 0x00000304, 0x000001ec }, - { 0x00000304, 0x000001ed }, { 0x00000304, 0x000001e0 }, - { 0x00000304, 0x000001e1 }, { 0x00000306, 0x00001e1c }, - { 0x00000306, 0x00001e1d }, { 0x00000304, 0x00000230 }, - { 0x00000304, 0x00000231 }, { 0x0000030c, 0x000001ef }, - { 0x00000300, 0x00001fba }, { 0x00000301, 0x00000386 }, - { 0x00000304, 0x00001fb9 }, { 0x00000306, 0x00001fb8 }, - { 0x00000313, 0x00001f08 }, { 0x00000314, 0x00001f09 }, - { 0x00000345, 0x00001fbc }, { 0x00000300, 0x00001fc8 }, - { 0x00000301, 0x00000388 }, { 0x00000313, 0x00001f18 }, - { 0x00000314, 0x00001f19 }, { 0x00000300, 0x00001fca }, - { 0x00000301, 0x00000389 }, { 0x00000313, 0x00001f28 }, - { 0x00000314, 0x00001f29 }, { 0x00000345, 0x00001fcc }, - { 0x00000300, 0x00001fda }, { 0x00000301, 0x0000038a }, - { 0x00000304, 0x00001fd9 }, { 0x00000306, 0x00001fd8 }, - { 0x00000308, 0x000003aa }, { 0x00000313, 0x00001f38 }, - { 0x00000314, 0x00001f39 }, { 0x00000300, 0x00001ff8 }, - { 0x00000301, 0x0000038c }, { 0x00000313, 0x00001f48 }, - { 0x00000314, 0x00001f49 }, { 0x00000314, 0x00001fec }, - { 0x00000300, 0x00001fea }, { 0x00000301, 0x0000038e }, - { 0x00000304, 0x00001fe9 }, { 0x00000306, 0x00001fe8 }, - { 0x00000308, 0x000003ab }, { 0x00000314, 0x00001f59 }, - { 0x00000300, 0x00001ffa }, { 0x00000301, 0x0000038f }, - { 0x00000313, 0x00001f68 }, { 0x00000314, 0x00001f69 }, - { 0x00000345, 0x00001ffc }, { 0x00000345, 0x00001fb4 }, - { 0x00000345, 0x00001fc4 }, { 0x00000300, 0x00001f70 }, - { 0x00000301, 0x000003ac }, { 0x00000304, 0x00001fb1 }, - { 0x00000306, 0x00001fb0 }, { 0x00000313, 0x00001f00 }, - { 0x00000314, 0x00001f01 }, { 0x00000342, 0x00001fb6 }, - { 0x00000345, 0x00001fb3 }, { 0x00000300, 0x00001f72 }, - { 0x00000301, 0x000003ad }, { 0x00000313, 0x00001f10 }, - { 0x00000314, 0x00001f11 }, { 0x00000300, 0x00001f74 }, - { 0x00000301, 0x000003ae }, { 0x00000313, 0x00001f20 }, - { 0x00000314, 0x00001f21 }, { 0x00000342, 0x00001fc6 }, - { 0x00000345, 0x00001fc3 }, { 0x00000300, 0x00001f76 }, - { 0x00000301, 0x000003af }, { 0x00000304, 0x00001fd1 }, - { 0x00000306, 0x00001fd0 }, { 0x00000308, 0x000003ca }, - { 0x00000313, 0x00001f30 }, { 0x00000314, 0x00001f31 }, - { 0x00000342, 0x00001fd6 }, { 0x00000300, 0x00001f78 }, - { 0x00000301, 0x000003cc }, { 0x00000313, 0x00001f40 }, - { 0x00000314, 0x00001f41 }, { 0x00000313, 0x00001fe4 }, - { 0x00000314, 0x00001fe5 }, { 0x00000300, 0x00001f7a }, - { 0x00000301, 0x000003cd }, { 0x00000304, 0x00001fe1 }, - { 0x00000306, 0x00001fe0 }, { 0x00000308, 0x000003cb }, - { 0x00000313, 0x00001f50 }, { 0x00000314, 0x00001f51 }, - { 0x00000342, 0x00001fe6 }, { 0x00000300, 0x00001f7c }, - { 0x00000301, 0x000003ce }, { 0x00000313, 0x00001f60 }, - { 0x00000314, 0x00001f61 }, { 0x00000342, 0x00001ff6 }, - { 0x00000345, 0x00001ff3 }, { 0x00000300, 0x00001fd2 }, - { 0x00000301, 0x00000390 }, { 0x00000342, 0x00001fd7 }, - { 0x00000300, 0x00001fe2 }, { 0x00000301, 0x000003b0 }, - { 0x00000342, 0x00001fe7 }, { 0x00000345, 0x00001ff4 }, - { 0x00000301, 0x000003d3 }, { 0x00000308, 0x000003d4 }, - { 0x00000308, 0x00000407 }, { 0x00000306, 0x000004d0 }, - { 0x00000308, 0x000004d2 }, { 0x00000301, 0x00000403 }, - { 0x00000300, 0x00000400 }, { 0x00000306, 0x000004d6 }, - { 0x00000308, 0x00000401 }, { 0x00000306, 0x000004c1 }, - { 0x00000308, 0x000004dc }, { 0x00000308, 0x000004de }, - { 0x00000300, 0x0000040d }, { 0x00000304, 0x000004e2 }, - { 0x00000306, 0x00000419 }, { 0x00000308, 0x000004e4 }, - { 0x00000301, 0x0000040c }, { 0x00000308, 0x000004e6 }, - { 0x00000304, 0x000004ee }, { 0x00000306, 0x0000040e }, - { 0x00000308, 0x000004f0 }, { 0x0000030b, 0x000004f2 }, - { 0x00000308, 0x000004f4 }, { 0x00000308, 0x000004f8 }, - { 0x00000308, 0x000004ec }, { 0x00000306, 0x000004d1 }, - { 0x00000308, 0x000004d3 }, { 0x00000301, 0x00000453 }, - { 0x00000300, 0x00000450 }, { 0x00000306, 0x000004d7 }, - { 0x00000308, 0x00000451 }, { 0x00000306, 0x000004c2 }, - { 0x00000308, 0x000004dd }, { 0x00000308, 0x000004df }, - { 0x00000300, 0x0000045d }, { 0x00000304, 0x000004e3 }, - { 0x00000306, 0x00000439 }, { 0x00000308, 0x000004e5 }, - { 0x00000301, 0x0000045c }, { 0x00000308, 0x000004e7 }, - { 0x00000304, 0x000004ef }, { 0x00000306, 0x0000045e }, - { 0x00000308, 0x000004f1 }, { 0x0000030b, 0x000004f3 }, - { 0x00000308, 0x000004f5 }, { 0x00000308, 0x000004f9 }, - { 0x00000308, 0x000004ed }, { 0x00000308, 0x00000457 }, - { 0x0000030f, 0x00000476 }, { 0x0000030f, 0x00000477 }, - { 0x00000308, 0x000004da }, { 0x00000308, 0x000004db }, - { 0x00000308, 0x000004ea }, { 0x00000308, 0x000004eb }, - { 0x00000653, 0x00000622 }, { 0x00000654, 0x00000623 }, - { 0x00000655, 0x00000625 }, { 0x00000654, 0x00000624 }, - { 0x00000654, 0x00000626 }, { 0x00000654, 0x000006c2 }, - { 0x00000654, 0x000006d3 }, { 0x00000654, 0x000006c0 }, - { 0x0000093c, 0x00000929 }, { 0x0000093c, 0x00000931 }, - { 0x0000093c, 0x00000934 }, { 0x000009be, 0x000009cb }, - { 0x000009d7, 0x000009cc }, { 0x00000b3e, 0x00000b4b }, - { 0x00000b56, 0x00000b48 }, { 0x00000b57, 0x00000b4c }, - { 0x00000bd7, 0x00000b94 }, { 0x00000bbe, 0x00000bca }, - { 0x00000bd7, 0x00000bcc }, { 0x00000bbe, 0x00000bcb }, - { 0x00000c56, 0x00000c48 }, { 0x00000cd5, 0x00000cc0 }, - { 0x00000cc2, 0x00000cca }, { 0x00000cd5, 0x00000cc7 }, - { 0x00000cd6, 0x00000cc8 }, { 0x00000cd5, 0x00000ccb }, - { 0x00000d3e, 0x00000d4a }, { 0x00000d57, 0x00000d4c }, - { 0x00000d3e, 0x00000d4b }, { 0x00000dca, 0x00000dda }, - { 0x00000dcf, 0x00000ddc }, { 0x00000ddf, 0x00000dde }, - { 0x00000dca, 0x00000ddd }, { 0x0000102e, 0x00001026 }, - { 0x00000304, 0x00001e38 }, { 0x00000304, 0x00001e39 }, - { 0x00000304, 0x00001e5c }, { 0x00000304, 0x00001e5d }, - { 0x00000307, 0x00001e68 }, { 0x00000307, 0x00001e69 }, - { 0x00000302, 0x00001eac }, { 0x00000306, 0x00001eb6 }, - { 0x00000302, 0x00001ead }, { 0x00000306, 0x00001eb7 }, - { 0x00000302, 0x00001ec6 }, { 0x00000302, 0x00001ec7 }, - { 0x00000302, 0x00001ed8 }, { 0x00000302, 0x00001ed9 }, - { 0x00000300, 0x00001f02 }, { 0x00000301, 0x00001f04 }, - { 0x00000342, 0x00001f06 }, { 0x00000345, 0x00001f80 }, - { 0x00000300, 0x00001f03 }, { 0x00000301, 0x00001f05 }, - { 0x00000342, 0x00001f07 }, { 0x00000345, 0x00001f81 }, - { 0x00000345, 0x00001f82 }, { 0x00000345, 0x00001f83 }, - { 0x00000345, 0x00001f84 }, { 0x00000345, 0x00001f85 }, - { 0x00000345, 0x00001f86 }, { 0x00000345, 0x00001f87 }, - { 0x00000300, 0x00001f0a }, { 0x00000301, 0x00001f0c }, - { 0x00000342, 0x00001f0e }, { 0x00000345, 0x00001f88 }, - { 0x00000300, 0x00001f0b }, { 0x00000301, 0x00001f0d }, - { 0x00000342, 0x00001f0f }, { 0x00000345, 0x00001f89 }, - { 0x00000345, 0x00001f8a }, { 0x00000345, 0x00001f8b }, - { 0x00000345, 0x00001f8c }, { 0x00000345, 0x00001f8d }, - { 0x00000345, 0x00001f8e }, { 0x00000345, 0x00001f8f }, - { 0x00000300, 0x00001f12 }, { 0x00000301, 0x00001f14 }, - { 0x00000300, 0x00001f13 }, { 0x00000301, 0x00001f15 }, - { 0x00000300, 0x00001f1a }, { 0x00000301, 0x00001f1c }, - { 0x00000300, 0x00001f1b }, { 0x00000301, 0x00001f1d }, - { 0x00000300, 0x00001f22 }, { 0x00000301, 0x00001f24 }, - { 0x00000342, 0x00001f26 }, { 0x00000345, 0x00001f90 }, - { 0x00000300, 0x00001f23 }, { 0x00000301, 0x00001f25 }, - { 0x00000342, 0x00001f27 }, { 0x00000345, 0x00001f91 }, - { 0x00000345, 0x00001f92 }, { 0x00000345, 0x00001f93 }, - { 0x00000345, 0x00001f94 }, { 0x00000345, 0x00001f95 }, - { 0x00000345, 0x00001f96 }, { 0x00000345, 0x00001f97 }, - { 0x00000300, 0x00001f2a }, { 0x00000301, 0x00001f2c }, - { 0x00000342, 0x00001f2e }, { 0x00000345, 0x00001f98 }, - { 0x00000300, 0x00001f2b }, { 0x00000301, 0x00001f2d }, - { 0x00000342, 0x00001f2f }, { 0x00000345, 0x00001f99 }, - { 0x00000345, 0x00001f9a }, { 0x00000345, 0x00001f9b }, - { 0x00000345, 0x00001f9c }, { 0x00000345, 0x00001f9d }, - { 0x00000345, 0x00001f9e }, { 0x00000345, 0x00001f9f }, - { 0x00000300, 0x00001f32 }, { 0x00000301, 0x00001f34 }, - { 0x00000342, 0x00001f36 }, { 0x00000300, 0x00001f33 }, - { 0x00000301, 0x00001f35 }, { 0x00000342, 0x00001f37 }, - { 0x00000300, 0x00001f3a }, { 0x00000301, 0x00001f3c }, - { 0x00000342, 0x00001f3e }, { 0x00000300, 0x00001f3b }, - { 0x00000301, 0x00001f3d }, { 0x00000342, 0x00001f3f }, - { 0x00000300, 0x00001f42 }, { 0x00000301, 0x00001f44 }, - { 0x00000300, 0x00001f43 }, { 0x00000301, 0x00001f45 }, - { 0x00000300, 0x00001f4a }, { 0x00000301, 0x00001f4c }, - { 0x00000300, 0x00001f4b }, { 0x00000301, 0x00001f4d }, - { 0x00000300, 0x00001f52 }, { 0x00000301, 0x00001f54 }, - { 0x00000342, 0x00001f56 }, { 0x00000300, 0x00001f53 }, - { 0x00000301, 0x00001f55 }, { 0x00000342, 0x00001f57 }, - { 0x00000300, 0x00001f5b }, { 0x00000301, 0x00001f5d }, - { 0x00000342, 0x00001f5f }, { 0x00000300, 0x00001f62 }, - { 0x00000301, 0x00001f64 }, { 0x00000342, 0x00001f66 }, - { 0x00000345, 0x00001fa0 }, { 0x00000300, 0x00001f63 }, - { 0x00000301, 0x00001f65 }, { 0x00000342, 0x00001f67 }, - { 0x00000345, 0x00001fa1 }, { 0x00000345, 0x00001fa2 }, - { 0x00000345, 0x00001fa3 }, { 0x00000345, 0x00001fa4 }, - { 0x00000345, 0x00001fa5 }, { 0x00000345, 0x00001fa6 }, - { 0x00000345, 0x00001fa7 }, { 0x00000300, 0x00001f6a }, - { 0x00000301, 0x00001f6c }, { 0x00000342, 0x00001f6e }, - { 0x00000345, 0x00001fa8 }, { 0x00000300, 0x00001f6b }, - { 0x00000301, 0x00001f6d }, { 0x00000342, 0x00001f6f }, - { 0x00000345, 0x00001fa9 }, { 0x00000345, 0x00001faa }, - { 0x00000345, 0x00001fab }, { 0x00000345, 0x00001fac }, - { 0x00000345, 0x00001fad }, { 0x00000345, 0x00001fae }, - { 0x00000345, 0x00001faf }, { 0x00000345, 0x00001fb2 }, - { 0x00000345, 0x00001fc2 }, { 0x00000345, 0x00001ff2 }, - { 0x00000345, 0x00001fb7 }, { 0x00000300, 0x00001fcd }, - { 0x00000301, 0x00001fce }, { 0x00000342, 0x00001fcf }, - { 0x00000345, 0x00001fc7 }, { 0x00000345, 0x00001ff7 }, - { 0x00000300, 0x00001fdd }, { 0x00000301, 0x00001fde }, - { 0x00000342, 0x00001fdf }, { 0x00000338, 0x0000219a }, - { 0x00000338, 0x0000219b }, { 0x00000338, 0x000021ae }, - { 0x00000338, 0x000021cd }, { 0x00000338, 0x000021cf }, - { 0x00000338, 0x000021ce }, { 0x00000338, 0x00002204 }, - { 0x00000338, 0x00002209 }, { 0x00000338, 0x0000220c }, - { 0x00000338, 0x00002224 }, { 0x00000338, 0x00002226 }, - { 0x00000338, 0x00002241 }, { 0x00000338, 0x00002244 }, - { 0x00000338, 0x00002247 }, { 0x00000338, 0x00002249 }, - { 0x00000338, 0x0000226d }, { 0x00000338, 0x00002262 }, - { 0x00000338, 0x00002270 }, { 0x00000338, 0x00002271 }, - { 0x00000338, 0x00002274 }, { 0x00000338, 0x00002275 }, - { 0x00000338, 0x00002278 }, { 0x00000338, 0x00002279 }, - { 0x00000338, 0x00002280 }, { 0x00000338, 0x00002281 }, - { 0x00000338, 0x000022e0 }, { 0x00000338, 0x000022e1 }, - { 0x00000338, 0x00002284 }, { 0x00000338, 0x00002285 }, - { 0x00000338, 0x00002288 }, { 0x00000338, 0x00002289 }, - { 0x00000338, 0x000022e2 }, { 0x00000338, 0x000022e3 }, - { 0x00000338, 0x000022ac }, { 0x00000338, 0x000022ad }, - { 0x00000338, 0x000022ae }, { 0x00000338, 0x000022af }, - { 0x00000338, 0x000022ea }, { 0x00000338, 0x000022eb }, - { 0x00000338, 0x000022ec }, { 0x00000338, 0x000022ed }, - { 0x00003099, 0x00003094 }, { 0x00003099, 0x0000304c }, - { 0x00003099, 0x0000304e }, { 0x00003099, 0x00003050 }, - { 0x00003099, 0x00003052 }, { 0x00003099, 0x00003054 }, - { 0x00003099, 0x00003056 }, { 0x00003099, 0x00003058 }, - { 0x00003099, 0x0000305a }, { 0x00003099, 0x0000305c }, - { 0x00003099, 0x0000305e }, { 0x00003099, 0x00003060 }, - { 0x00003099, 0x00003062 }, { 0x00003099, 0x00003065 }, - { 0x00003099, 0x00003067 }, { 0x00003099, 0x00003069 }, - { 0x00003099, 0x00003070 }, { 0x0000309a, 0x00003071 }, - { 0x00003099, 0x00003073 }, { 0x0000309a, 0x00003074 }, - { 0x00003099, 0x00003076 }, { 0x0000309a, 0x00003077 }, - { 0x00003099, 0x00003079 }, { 0x0000309a, 0x0000307a }, - { 0x00003099, 0x0000307c }, { 0x0000309a, 0x0000307d }, - { 0x00003099, 0x0000309e }, { 0x00003099, 0x000030f4 }, - { 0x00003099, 0x000030ac }, { 0x00003099, 0x000030ae }, - { 0x00003099, 0x000030b0 }, { 0x00003099, 0x000030b2 }, - { 0x00003099, 0x000030b4 }, { 0x00003099, 0x000030b6 }, - { 0x00003099, 0x000030b8 }, { 0x00003099, 0x000030ba }, - { 0x00003099, 0x000030bc }, { 0x00003099, 0x000030be }, - { 0x00003099, 0x000030c0 }, { 0x00003099, 0x000030c2 }, - { 0x00003099, 0x000030c5 }, { 0x00003099, 0x000030c7 }, - { 0x00003099, 0x000030c9 }, { 0x00003099, 0x000030d0 }, - { 0x0000309a, 0x000030d1 }, { 0x00003099, 0x000030d3 }, - { 0x0000309a, 0x000030d4 }, { 0x00003099, 0x000030d6 }, - { 0x0000309a, 0x000030d7 }, { 0x00003099, 0x000030d9 }, - { 0x0000309a, 0x000030da }, { 0x00003099, 0x000030dc }, - { 0x0000309a, 0x000030dd }, { 0x00003099, 0x000030f7 }, - { 0x00003099, 0x000030f8 }, { 0x00003099, 0x000030f9 }, - { 0x00003099, 0x000030fa }, { 0x00003099, 0x000030fe }, -}; - - -/* - * Canonical/Compatibility Decomposition - */ - -#define DECOMP_BITS_0 9 -#define DECOMP_BITS_1 7 -#define DECOMP_BITS_2 5 -#define DECOMP_COMPAT 32768 - -static const char16_t decompose_imap[] = { - 272, 400, 528, 656, 784, 784, 784, 784, - 784, 784, 784, 784, 784, 784, 784, 912, - 784, 784, 784, 784, 784, 784, 784, 784, - 784, 784, 784, 784, 784, 1040, 784, 784, - 784, 784, 784, 784, 784, 784, 784, 784, - 784, 784, 784, 784, 784, 784, 784, 1168, - 784, 784, 784, 784, 784, 784, 784, 784, - 784, 784, 784, 784, 784, 784, 784, 784, - 784, 784, 784, 784, 784, 784, 784, 784, - 784, 784, 784, 784, 784, 784, 784, 784, - 784, 784, 784, 784, 784, 784, 784, 784, - 784, 784, 784, 784, 784, 784, 784, 784, - 784, 784, 784, 784, 784, 784, 784, 784, - 784, 784, 784, 784, 784, 784, 784, 784, - 784, 784, 784, 784, 784, 784, 784, 784, - 784, 784, 784, 784, 784, 784, 784, 784, - 784, 784, 784, 784, 784, 784, 784, 784, - 784, 784, 784, 784, 784, 784, 784, 784, - 784, 784, 784, 784, 784, 784, 784, 784, - 784, 784, 784, 784, 784, 784, 784, 784, - 784, 784, 784, 784, 784, 784, 784, 784, - 784, 784, 784, 784, 784, 784, 784, 784, - 784, 784, 784, 784, 784, 784, 784, 784, - 784, 784, 784, 784, 784, 784, 784, 784, - 784, 784, 784, 784, 784, 784, 784, 784, - 784, 784, 784, 784, 784, 784, 784, 784, - 784, 784, 784, 784, 784, 784, 784, 784, - 784, 784, 784, 784, 784, 784, 784, 784, - 784, 784, 784, 784, 784, 784, 784, 784, - 784, 784, 784, 784, 784, 784, 784, 784, - 784, 784, 784, 784, 784, 784, 784, 784, - 784, 784, 784, 784, 784, 784, 784, 784, - 784, 784, 784, 784, 784, 784, 784, 784, - 784, 784, 784, 784, 784, 784, 784, 784, - 0, 0, 0, 0, 0, 1, 2, 3, - 4, 5, 6, 7, 0, 8, 9, 10, - 11, 12, 0, 0, 0, 13, 14, 15, - 0, 0, 16, 17, 18, 19, 20, 21, - 22, 23, 24, 25, 0, 0, 26, 27, - 0, 0, 0, 0, 28, 0, 0, 0, - 0, 29, 0, 30, 0, 0, 31, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 32, 33, 0, 0, 0, 34, 0, - 0, 35, 36, 0, 0, 0, 0, 0, - 0, 0, 37, 0, 38, 0, 39, 0, - 0, 0, 40, 0, 0, 0, 41, 0, - 0, 0, 42, 0, 0, 0, 43, 0, - 0, 44, 0, 0, 0, 45, 46, 0, - 47, 0, 48, 49, 50, 51, 0, 0, - 0, 52, 0, 0, 0, 0, 0, 53, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 54, 55, 56, 57, 58, 0, 0, - 59, 60, 61, 62, 63, 64, 65, 66, - 67, 68, 69, 70, 71, 72, 73, 74, - 75, 76, 77, 78, 79, 80, 0, 0, - 81, 82, 83, 84, 85, 86, 87, 0, - 88, 89, 90, 91, 92, 93, 0, 94, - 0, 95, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 96, 97, 98, 99, 100, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 101, 0, 0, 102, 0, 0, 103, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 104, 0, 0, 0, 0, - 0, 0, 0, 0, 105, 0, 0, 106, - 107, 108, 109, 110, 111, 112, 113, 0, - 114, 115, 116, 117, 118, 119, 120, 121, - 0, 122, 123, 124, 125, 0, 0, 0, - 126, 127, 128, 129, 130, 131, 132, 133, - 134, 135, 136, 137, 138, 139, 140, 141, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 142, 143, 144, 145, 146, 147, 148, 149, - 150, 151, 152, 153, 154, 155, 156, 0, - 157, 158, 159, 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, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 197, 198, 0, 199, 200, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 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, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 233, 234, 235, 236, 237, 238, 239, 240, - 241, 242, 243, 244, 245, 246, 247, 248, - 249, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, -}; - -static const struct { - char16_t tbl[32]; -} decompose_table[] = { - {{ - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - }}, - {{ - 32769, 0, 0, 0, 0, 0, 0, 0, - 32770, 0, 32772, 0, 0, 0, 0, 32773, - 0, 0, 32775, 32776, 32777, 32779, 0, 0, - 32780, 32782, 32783, 0, 32784, 32787, 32790, 0, - }}, - {{ - 25, 27, 29, 31, 33, 35, 0, 37, - 39, 41, 43, 45, 47, 49, 51, 53, - 0, 55, 57, 59, 61, 63, 65, 0, - 0, 67, 69, 71, 73, 75, 0, 0, - }}, - {{ - 77, 79, 81, 83, 85, 87, 0, 89, - 91, 93, 95, 97, 99, 101, 103, 105, - 0, 107, 109, 111, 113, 115, 117, 0, - 0, 119, 121, 123, 125, 127, 0, 129, - }}, - {{ - 131, 133, 135, 137, 139, 141, 143, 145, - 147, 149, 151, 153, 155, 157, 159, 161, - 0, 0, 163, 165, 167, 169, 171, 173, - 175, 177, 179, 181, 183, 185, 187, 189, - }}, - {{ - 191, 193, 195, 197, 199, 201, 0, 0, - 203, 205, 207, 209, 211, 213, 215, 217, - 219, 0, 32989, 32991, 225, 227, 229, 231, - 0, 233, 235, 237, 239, 241, 243, 33013, - }}, - {{ - 33015, 0, 0, 249, 251, 253, 255, 257, - 259, 33029, 0, 0, 263, 265, 267, 269, - 271, 273, 0, 0, 275, 277, 279, 281, - 283, 285, 287, 289, 291, 293, 295, 297, - }}, - {{ - 299, 301, 303, 305, 307, 309, 0, 0, - 311, 313, 315, 317, 319, 321, 323, 325, - 327, 329, 331, 333, 335, 337, 339, 341, - 343, 345, 347, 349, 351, 353, 355, 33125, - }}, - {{ - 358, 360, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 362, - 364, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - }}, - {{ - 0, 0, 0, 0, 33134, 33136, 33138, 33140, - 33142, 33144, 33146, 33148, 33150, 384, 386, 388, - 390, 392, 394, 396, 398, 400, 402, 404, - 406, 408, 410, 412, 414, 0, 416, 418, - }}, - {{ - 420, 422, 424, 426, 0, 0, 428, 430, - 432, 434, 436, 438, 440, 442, 444, 446, - 448, 33218, 33220, 33222, 456, 458, 0, 0, - 460, 462, 464, 466, 468, 470, 472, 474, - }}, - {{ - 476, 478, 480, 482, 484, 486, 488, 490, - 492, 494, 496, 498, 500, 502, 504, 506, - 508, 510, 512, 514, 516, 518, 520, 522, - 524, 526, 528, 530, 0, 0, 532, 534, - }}, - {{ - 0, 0, 0, 0, 0, 0, 536, 538, - 540, 542, 544, 546, 548, 550, 552, 554, - 556, 558, 560, 562, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - }}, - {{ - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 33332, 33333, 33334, 33335, 33336, 33337, 33338, 33339, - 33340, 0, 0, 0, 0, 0, 0, 0, - }}, - {{ - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 33341, 33343, 33345, 33347, 33349, 33351, 0, 0, - }}, - {{ - 33353, 33354, 33355, 33356, 33357, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - }}, - {{ - 590, 591, 0, 592, 593, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - }}, - {{ - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 595, 0, 0, 0, - 0, 0, 33364, 0, 0, 0, 598, 0, - }}, - {{ - 0, 0, 0, 0, 33367, 601, 603, 605, - 606, 608, 610, 0, 612, 0, 614, 616, - 618, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - }}, - {{ - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 620, 622, 624, 626, 628, 630, - 632, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - }}, - {{ - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 634, 636, 638, 640, 642, 0, - 33412, 33413, 33414, 647, 649, 33419, 33420, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - }}, - {{ - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 33421, 33422, 33423, 0, 33424, 33425, 0, 0, - 0, 33426, 0, 0, 0, 0, 0, 0, - }}, - {{ - 659, 661, 0, 663, 0, 0, 0, 665, - 0, 0, 0, 0, 667, 669, 671, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 673, 0, 0, 0, 0, 0, 0, - }}, - {{ - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 675, 0, 0, 0, 0, 0, 0, - }}, - {{ - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 677, 679, 0, 681, 0, 0, 0, 683, - 0, 0, 0, 0, 685, 687, 689, 0, - }}, - {{ - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 691, 693, - 0, 0, 0, 0, 0, 0, 0, 0, - }}, - {{ - 0, 695, 697, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 699, 701, 703, 705, 0, 0, 707, 709, - 0, 0, 711, 713, 715, 717, 719, 721, - }}, - {{ - 0, 0, 723, 725, 727, 729, 731, 733, - 0, 0, 735, 737, 739, 741, 743, 745, - 747, 749, 751, 753, 755, 757, 0, 0, - 759, 761, 0, 0, 0, 0, 0, 0, - }}, - {{ - 0, 0, 0, 0, 0, 0, 0, 33531, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - }}, - {{ - 0, 0, 765, 767, 769, 771, 773, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - }}, - {{ - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 33543, 33545, 33547, - 33549, 0, 0, 0, 0, 0, 0, 0, - }}, - {{ - 783, 0, 785, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 787, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - }}, - {{ - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 789, 0, 0, 0, 0, 0, 0, - 0, 791, 0, 0, 793, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - }}, - {{ - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 795, 797, 799, 801, 803, 805, 807, 809, - }}, - {{ - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 811, 813, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 815, 817, 0, 819, - }}, - {{ - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 821, 0, 0, 823, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - }}, - {{ - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 825, 827, 829, 0, 0, 831, 0, - }}, - {{ - 0, 0, 0, 0, 0, 0, 0, 0, - 833, 0, 0, 835, 837, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 839, 841, 0, 0, - }}, - {{ - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 843, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - }}, - {{ - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 845, 847, 849, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - }}, - {{ - 0, 0, 0, 0, 0, 0, 0, 0, - 851, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - }}, - {{ - 853, 0, 0, 0, 0, 0, 0, 855, - 857, 0, 859, 861, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - }}, - {{ - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 863, 865, 867, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - }}, - {{ - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 869, 0, 871, 873, 875, 0, - }}, - {{ - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 33645, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - }}, - {{ - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 33647, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - }}, - {{ - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 33649, 33651, 0, 0, - }}, - {{ - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 33653, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - }}, - {{ - 0, 0, 0, 886, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 888, 0, 0, - 0, 0, 890, 0, 0, 0, 0, 892, - 0, 0, 0, 0, 894, 0, 0, 0, - }}, - {{ - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 896, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 898, 0, 900, 902, 33672, - 906, 33676, 0, 0, 0, 0, 0, 0, - }}, - {{ - 0, 910, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 912, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 914, 0, 0, - }}, - {{ - 0, 0, 916, 0, 0, 0, 0, 918, - 0, 0, 0, 0, 920, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 922, 0, 0, 0, 0, 0, 0, - }}, - {{ - 0, 0, 0, 0, 0, 0, 924, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - }}, - {{ - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 33694, 0, 0, 0, - }}, - {{ - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 33695, 33696, 33697, 0, - 33698, 33699, 33700, 33701, 33702, 33703, 33704, 33705, - 33706, 33707, 33708, 0, 33709, 33710, 33711, 33712, - }}, - {{ - 33713, 33714, 33715, 33716, 33717, 33718, 33719, 33720, - 33721, 33722, 33723, 33724, 33725, 33726, 0, 33727, - 33728, 33729, 33730, 33731, 33732, 33733, 33734, 33735, - 33736, 33737, 33738, 33739, 33740, 33741, 33742, 33743, - }}, - {{ - 33744, 33745, 33746, 33747, 33748, 33749, 33750, 33751, - 33752, 33753, 33754, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 33755, 0, 0, 0, 0, 0, 0, 0, - }}, - {{ - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 33756, 33757, 33758, 33759, 33760, - }}, - {{ - 33761, 33762, 33763, 33764, 33765, 33766, 33767, 33768, - 33769, 33770, 33771, 33772, 33773, 33774, 33775, 33776, - 33777, 33778, 33779, 33780, 33781, 33782, 33783, 33784, - 33785, 33786, 33787, 33788, 33789, 33790, 33791, 33792, - }}, - {{ - 1025, 1027, 1029, 1031, 1033, 1035, 1037, 1039, - 1041, 1043, 1045, 1047, 1049, 1051, 1053, 1055, - 1057, 1059, 1061, 1063, 1065, 1067, 1069, 1071, - 1073, 1075, 1077, 1079, 1081, 1083, 1085, 1087, - }}, - {{ - 1089, 1091, 1093, 1095, 1097, 1099, 1101, 1103, - 1105, 1107, 1109, 1111, 1113, 1115, 1117, 1119, - 1121, 1123, 1125, 1127, 1129, 1131, 1133, 1135, - 1137, 1139, 1141, 1143, 1145, 1147, 1149, 1151, - }}, - {{ - 1153, 1155, 1157, 1159, 1161, 1163, 1165, 1167, - 1169, 1171, 1173, 1175, 1177, 1179, 1181, 1183, - 1185, 1187, 1189, 1191, 1193, 1195, 1197, 1199, - 1201, 1203, 1205, 1207, 1209, 1211, 1213, 1215, - }}, - {{ - 1217, 1219, 1221, 1223, 1225, 1227, 1229, 1231, - 1233, 1235, 1237, 1239, 1241, 1243, 1245, 1247, - 1249, 1251, 1253, 1255, 1257, 1259, 1261, 1263, - 1265, 1267, 1269, 1271, 1273, 1275, 1277, 1279, - }}, - {{ - 1281, 1283, 1285, 1287, 1289, 1291, 1293, 1295, - 1297, 1299, 1301, 1303, 1305, 1307, 1309, 1311, - 1313, 1315, 1317, 1319, 1321, 1323, 1325, 1327, - 1329, 1331, 34101, 1335, 0, 0, 0, 0, - }}, - {{ - 1337, 1339, 1341, 1343, 1345, 1347, 1349, 1351, - 1353, 1355, 1357, 1359, 1361, 1363, 1365, 1367, - 1369, 1371, 1373, 1375, 1377, 1379, 1381, 1383, - 1385, 1387, 1389, 1391, 1393, 1395, 1397, 1399, - }}, - {{ - 1401, 1403, 1405, 1407, 1409, 1411, 1413, 1415, - 1417, 1419, 1421, 1423, 1425, 1427, 1429, 1431, - 1433, 1435, 1437, 1439, 1441, 1443, 1445, 1447, - 1449, 1451, 1453, 1455, 1457, 1459, 1461, 1463, - }}, - {{ - 1465, 1467, 1469, 1471, 1473, 1475, 1477, 1479, - 1481, 1483, 1485, 1487, 1489, 1491, 1493, 1495, - 1497, 1499, 1501, 1503, 1505, 1507, 1509, 1511, - 1513, 1515, 0, 0, 0, 0, 0, 0, - }}, - {{ - 1517, 1519, 1521, 1523, 1525, 1527, 1529, 1531, - 1533, 1535, 1537, 1539, 1541, 1543, 1545, 1547, - 1549, 1551, 1553, 1555, 1557, 1559, 0, 0, - 1561, 1563, 1565, 1567, 1569, 1571, 0, 0, - }}, - {{ - 1573, 1575, 1577, 1579, 1581, 1583, 1585, 1587, - 1589, 1591, 1593, 1595, 1597, 1599, 1601, 1603, - 1605, 1607, 1609, 1611, 1613, 1615, 1617, 1619, - 1621, 1623, 1625, 1627, 1629, 1631, 1633, 1635, - }}, - {{ - 1637, 1639, 1641, 1643, 1645, 1647, 0, 0, - 1649, 1651, 1653, 1655, 1657, 1659, 0, 0, - 1661, 1663, 1665, 1667, 1669, 1671, 1673, 1675, - 0, 1677, 0, 1679, 0, 1681, 0, 1683, - }}, - {{ - 1685, 1687, 1689, 1691, 1693, 1695, 1697, 1699, - 1701, 1703, 1705, 1707, 1709, 1711, 1713, 1715, - 1717, 1719, 1720, 1722, 1723, 1725, 1726, 1728, - 1729, 1731, 1732, 1734, 1735, 1737, 0, 0, - }}, - {{ - 1738, 1740, 1742, 1744, 1746, 1748, 1750, 1752, - 1754, 1756, 1758, 1760, 1762, 1764, 1766, 1768, - 1770, 1772, 1774, 1776, 1778, 1780, 1782, 1784, - 1786, 1788, 1790, 1792, 1794, 1796, 1798, 1800, - }}, - {{ - 1802, 1804, 1806, 1808, 1810, 1812, 1814, 1816, - 1818, 1820, 1822, 1824, 1826, 1828, 1830, 1832, - 1834, 1836, 1838, 1840, 1842, 0, 1844, 1846, - 1848, 1850, 1852, 1854, 1855, 34625, 1859, 34628, - }}, - {{ - 34630, 1864, 1866, 1868, 1870, 0, 1872, 1874, - 1876, 1878, 1879, 1881, 1882, 1884, 1886, 1888, - 1890, 1892, 1894, 1896, 0, 0, 1897, 1899, - 1901, 1903, 1905, 1907, 0, 1908, 1910, 1912, - }}, - {{ - 1914, 1916, 1918, 1920, 1921, 1923, 1925, 1927, - 1929, 1931, 1933, 1935, 1936, 1938, 1940, 1941, - 0, 0, 1942, 1944, 1946, 0, 1948, 1950, - 1952, 1954, 1955, 1957, 1958, 1960, 34729, 0, - }}, - {{ - 1963, 1964, 34733, 34734, 34735, 34736, 34737, 34738, - 34739, 34740, 34741, 0, 0, 0, 0, 0, - 0, 34742, 0, 0, 0, 0, 0, 34743, - 0, 0, 0, 0, 0, 0, 0, 0, - }}, - {{ - 0, 0, 0, 0, 34745, 34746, 34748, 0, - 0, 0, 0, 0, 0, 0, 0, 34751, - 0, 0, 0, 34752, 34754, 0, 34757, 34759, - 0, 0, 0, 0, 34762, 0, 34764, 0, - }}, - {{ - 0, 0, 0, 0, 0, 0, 0, 34766, - 34768, 34770, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 34772, - 0, 0, 0, 0, 0, 0, 0, 34776, - }}, - {{ - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 34777, 34778, 0, 0, 34779, 34780, 34781, 34782, - 34783, 34784, 34785, 34786, 34787, 34788, 34789, 34790, - }}, - {{ - 34791, 34792, 34793, 34794, 34795, 34796, 34797, 34798, - 34799, 34800, 34801, 34802, 34803, 34804, 34805, 0, - 34806, 34807, 34808, 34809, 34810, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - }}, - {{ - 0, 0, 0, 0, 0, 0, 0, 0, - 34811, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - }}, - {{ - 34813, 34816, 34819, 34820, 0, 34822, 34825, 34828, - 0, 34829, 34831, 34832, 34833, 34834, 34835, 34836, - 34837, 34838, 34839, 34840, 0, 34841, 34842, 0, - 0, 34844, 34845, 34846, 34847, 34848, 0, 0, - }}, - {{ - 34849, 34851, 34854, 0, 34856, 0, 2089, 0, - 34858, 0, 2091, 2092, 34861, 34862, 0, 34863, - 34864, 34865, 0, 34866, 34867, 34868, 34869, 34870, - 34871, 34872, 0, 34873, 34876, 34877, 34878, 34879, - }}, - {{ - 34880, 0, 0, 0, 0, 34881, 34882, 34883, - 34884, 34885, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 34886, 34889, 34892, 34895, 34898, - 34901, 34904, 34907, 34910, 34913, 34916, 34919, 34922, - }}, - {{ - 34924, 34925, 34927, 34930, 34932, 34933, 34935, 34938, - 34942, 34944, 34945, 34947, 34950, 34951, 34952, 34953, - 34954, 34955, 34957, 34960, 34962, 34963, 34965, 34968, - 34972, 34974, 34975, 34977, 34980, 34981, 34982, 34983, - }}, - {{ - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 2216, 2218, 0, 0, 0, 0, - }}, - {{ - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 2220, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - }}, - {{ - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 2222, 2224, 2226, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - }}, - {{ - 0, 0, 0, 0, 2228, 0, 0, 0, - 0, 2230, 0, 0, 2232, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - }}, - {{ - 0, 0, 0, 0, 2234, 0, 2236, 0, - 0, 0, 0, 0, 35006, 35008, 0, 35011, - 35013, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - }}, - {{ - 0, 2248, 0, 0, 2250, 0, 0, 2252, - 0, 2254, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - }}, - {{ - 2256, 0, 2258, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 2260, 2262, 2264, - 2266, 2268, 0, 0, 2270, 2272, 0, 0, - 2274, 2276, 0, 0, 0, 0, 0, 0, - }}, - {{ - 2278, 2280, 0, 0, 2282, 2284, 0, 0, - 2286, 2288, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - }}, - {{ - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 2290, 2292, 2294, 2296, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - }}, - {{ - 2298, 2300, 2302, 2304, 0, 0, 0, 0, - 0, 0, 2306, 2308, 2310, 2312, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - }}, - {{ - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 2314, 2315, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - }}, - {{ - 35084, 35085, 35086, 35087, 35088, 35089, 35090, 35091, - 35092, 35093, 35095, 35097, 35099, 35101, 35103, 35105, - 35107, 35109, 35111, 35113, 35115, 35118, 35121, 35124, - 35127, 35130, 35133, 35136, 35139, 35142, 35146, 35150, - }}, - {{ - 35154, 35158, 35162, 35166, 35170, 35174, 35178, 35182, - 35186, 35188, 35190, 35192, 35194, 35196, 35198, 35200, - 35202, 35204, 35207, 35210, 35213, 35216, 35219, 35222, - 35225, 35228, 35231, 35234, 35237, 35240, 35243, 35246, - }}, - {{ - 35249, 35252, 35255, 35258, 35261, 35264, 35267, 35270, - 35273, 35276, 35279, 35282, 35285, 35288, 35291, 35294, - 35297, 35300, 35303, 35306, 35309, 35312, 35315, 35316, - 35317, 35318, 35319, 35320, 35321, 35322, 35323, 35324, - }}, - {{ - 35325, 35326, 35327, 35328, 35329, 35330, 35331, 35332, - 35333, 35334, 35335, 35336, 35337, 35338, 35339, 35340, - 35341, 35342, 35343, 35344, 35345, 35346, 35347, 35348, - 35349, 35350, 35351, 35352, 35353, 35354, 35355, 35356, - }}, - {{ - 35357, 35358, 35359, 35360, 35361, 35362, 35363, 35364, - 35365, 35366, 35367, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - }}, - {{ - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 35368, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - }}, - {{ - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 35372, 35375, 35377, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - }}, - {{ - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 2612, 0, 0, 0, - }}, - {{ - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 35382, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - }}, - {{ - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 35383, - }}, - {{ - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 35384, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - }}, - {{ - 35385, 35386, 35387, 35388, 35389, 35390, 35391, 35392, - 35393, 35394, 35395, 35396, 35397, 35398, 35399, 35400, - 35401, 35402, 35403, 35404, 35405, 35406, 35407, 35408, - 35409, 35410, 35411, 35412, 35413, 35414, 35415, 35416, - }}, - {{ - 35417, 35418, 35419, 35420, 35421, 35422, 35423, 35424, - 35425, 35426, 35427, 35428, 35429, 35430, 35431, 35432, - 35433, 35434, 35435, 35436, 35437, 35438, 35439, 35440, - 35441, 35442, 35443, 35444, 35445, 35446, 35447, 35448, - }}, - {{ - 35449, 35450, 35451, 35452, 35453, 35454, 35455, 35456, - 35457, 35458, 35459, 35460, 35461, 35462, 35463, 35464, - 35465, 35466, 35467, 35468, 35469, 35470, 35471, 35472, - 35473, 35474, 35475, 35476, 35477, 35478, 35479, 35480, - }}, - {{ - 35481, 35482, 35483, 35484, 35485, 35486, 35487, 35488, - 35489, 35490, 35491, 35492, 35493, 35494, 35495, 35496, - 35497, 35498, 35499, 35500, 35501, 35502, 35503, 35504, - 35505, 35506, 35507, 35508, 35509, 35510, 35511, 35512, - }}, - {{ - 35513, 35514, 35515, 35516, 35517, 35518, 35519, 35520, - 35521, 35522, 35523, 35524, 35525, 35526, 35527, 35528, - 35529, 35530, 35531, 35532, 35533, 35534, 35535, 35536, - 35537, 35538, 35539, 35540, 35541, 35542, 35543, 35544, - }}, - {{ - 35545, 35546, 35547, 35548, 35549, 35550, 35551, 35552, - 35553, 35554, 35555, 35556, 35557, 35558, 35559, 35560, - 35561, 35562, 35563, 35564, 35565, 35566, 35567, 35568, - 35569, 35570, 35571, 35572, 35573, 35574, 35575, 35576, - }}, - {{ - 35577, 35578, 35579, 35580, 35581, 35582, 35583, 35584, - 35585, 35586, 35587, 35588, 35589, 35590, 35591, 35592, - 35593, 35594, 35595, 35596, 35597, 35598, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - }}, - {{ - 35599, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - }}, - {{ - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 35600, 0, - 35601, 35602, 35603, 0, 0, 0, 0, 0, - }}, - {{ - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 2836, 0, 2838, 0, - 2840, 0, 2842, 0, 2844, 0, 2846, 0, - 2848, 0, 2850, 0, 2852, 0, 2854, 0, - }}, - {{ - 2856, 0, 2858, 0, 0, 2860, 0, 2862, - 0, 2864, 0, 0, 0, 0, 0, 0, - 2866, 2868, 0, 2870, 2872, 0, 2874, 2876, - 0, 2878, 2880, 0, 2882, 2884, 0, 0, - }}, - {{ - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 2886, 0, 0, 0, - 0, 0, 0, 35656, 35658, 0, 2892, 35662, - }}, - {{ - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 2896, 0, 2898, 0, - 2900, 0, 2902, 0, 2904, 0, 2906, 0, - 2908, 0, 2910, 0, 2912, 0, 2914, 0, - }}, - {{ - 2916, 0, 2918, 0, 0, 2920, 0, 2922, - 0, 2924, 0, 0, 0, 0, 0, 0, - 2926, 2928, 0, 2930, 2932, 0, 2934, 2936, - 0, 2938, 2940, 0, 2942, 2944, 0, 0, - }}, - {{ - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 2946, 0, 0, 2948, - 2950, 2952, 2954, 0, 0, 0, 2956, 35726, - }}, - {{ - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 35728, 35729, 35730, 35731, 35732, 35733, 35734, - 35735, 35736, 35737, 35738, 35739, 35740, 35741, 35742, - }}, - {{ - 35743, 35744, 35745, 35746, 35747, 35748, 35749, 35750, - 35751, 35752, 35753, 35754, 35755, 35756, 35757, 35758, - 35759, 35760, 35761, 35762, 35763, 35764, 35765, 35766, - 35767, 35768, 35769, 35770, 35771, 35772, 35773, 35774, - }}, - {{ - 35775, 35776, 35777, 35778, 35779, 35780, 35781, 35782, - 35783, 35784, 35785, 35786, 35787, 35788, 35789, 35790, - 35791, 35792, 35793, 35794, 35795, 35796, 35797, 35798, - 35799, 35800, 35801, 35802, 35803, 35804, 35805, 35806, - }}, - {{ - 35807, 35808, 35809, 35810, 35811, 35812, 35813, 35814, - 35815, 35816, 35817, 35818, 35819, 35820, 35821, 0, - 0, 0, 35822, 35823, 35824, 35825, 35826, 35827, - 35828, 35829, 35830, 35831, 35832, 35833, 35834, 35835, - }}, - {{ - 35836, 35839, 35842, 35845, 35848, 35851, 35854, 35857, - 35860, 35863, 35866, 35869, 35872, 35875, 35878, 35882, - 35886, 35890, 35894, 35898, 35902, 35906, 35910, 35914, - 35918, 35922, 35926, 35930, 35934, 35938, 35945, 0, - }}, - {{ - 35951, 35954, 35957, 35960, 35963, 35966, 35969, 35972, - 35975, 35978, 35981, 35984, 35987, 35990, 35993, 35996, - 35999, 36002, 36005, 36008, 36011, 36014, 36017, 36020, - 36023, 36026, 36029, 36032, 36035, 36038, 36041, 36044, - }}, - {{ - 36047, 36050, 36053, 36056, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 36059, 36062, 36064, 36066, 36068, 36070, 36072, 36074, - 36076, 36078, 36080, 36082, 36084, 36086, 36088, 36090, - }}, - {{ - 36092, 36093, 36094, 36095, 36096, 36097, 36098, 36099, - 36100, 36101, 36102, 36103, 36104, 36105, 36106, 36108, - 36110, 36112, 36114, 36116, 36118, 36120, 36122, 36124, - 36126, 36128, 36130, 36132, 36134, 36139, 36143, 0, - }}, - {{ - 36145, 36146, 36147, 36148, 36149, 36150, 36151, 36152, - 36153, 36154, 36155, 36156, 36157, 36158, 36159, 36160, - 36161, 36162, 36163, 36164, 36165, 36166, 36167, 36168, - 36169, 36170, 36171, 36172, 36173, 36174, 36175, 36176, - }}, - {{ - 36177, 36178, 36179, 36180, 36181, 36182, 36183, 36184, - 36185, 36186, 36187, 36188, 36189, 36190, 36191, 36192, - 36193, 36194, 36196, 36198, 36200, 36202, 36204, 36206, - 36208, 36210, 36212, 36214, 36216, 36218, 36220, 36222, - }}, - {{ - 36224, 36226, 36228, 36230, 36232, 36234, 36236, 36238, - 36240, 36242, 36245, 36248, 36251, 36253, 36256, 36258, - 36261, 36262, 36263, 36264, 36265, 36266, 36267, 36268, - 36269, 36270, 36271, 36272, 36273, 36274, 36275, 36276, - }}, - {{ - 36277, 36278, 36279, 36280, 36281, 36282, 36283, 36284, - 36285, 36286, 36287, 36288, 36289, 36290, 36291, 36292, - 36293, 36294, 36295, 36296, 36297, 36298, 36299, 36300, - 36301, 36302, 36303, 36304, 36305, 36306, 36307, 0, - }}, - {{ - 36308, 36312, 36316, 36320, 36323, 36327, 36330, 36333, - 36338, 36342, 36345, 36348, 36351, 36355, 36359, 36362, - 36365, 36367, 36370, 36374, 36378, 36380, 36385, 36391, - 36396, 36399, 36404, 36409, 36413, 36416, 36419, 36422, - }}, - {{ - 36426, 36431, 36435, 36438, 36441, 36444, 36446, 36448, - 36450, 36452, 36455, 36458, 36463, 36466, 36470, 36475, - 36478, 36480, 36482, 36487, 36491, 36496, 36499, 36504, - 36506, 36509, 36512, 36515, 36518, 36521, 36525, 36528, - }}, - {{ - 36530, 36533, 36536, 36539, 36543, 36546, 36549, 36552, - 36557, 36561, 36563, 36568, 36570, 36574, 36578, 36581, - 36584, 36587, 36591, 36593, 36596, 36600, 36602, 36607, - 36610, 36612, 36614, 36616, 36618, 36620, 36622, 36624, - }}, - {{ - 36626, 36628, 36630, 36633, 36636, 36639, 36642, 36645, - 36648, 36651, 36654, 36657, 36660, 36663, 36666, 36669, - 36672, 36675, 36678, 36680, 36682, 36685, 36687, 36689, - 36691, 36694, 36697, 36699, 36701, 36703, 36705, 36707, - }}, - {{ - 36711, 36713, 36715, 36717, 36719, 36721, 36723, 36725, - 36727, 36730, 36734, 36736, 36738, 36740, 36742, 36744, - 36746, 36748, 36751, 36754, 36757, 36760, 36762, 36764, - 36766, 36768, 36770, 36772, 36774, 36776, 36778, 36780, - }}, - {{ - 36783, 36786, 36788, 36791, 36794, 36797, 36799, 36802, - 36805, 36809, 36811, 36814, 36817, 36820, 36823, 36828, - 36834, 36836, 36838, 36840, 36842, 36844, 36846, 36848, - 36850, 36852, 36854, 36856, 36858, 36860, 36862, 36864, - }}, - {{ - 36866, 36868, 36870, 36874, 36876, 36878, 36880, 36884, - 36887, 36889, 36891, 36893, 36895, 36897, 36899, 36901, - 36903, 36905, 36907, 36910, 36912, 36914, 36917, 36920, - 36922, 36926, 36929, 36931, 36933, 36935, 36937, 36940, - }}, - {{ - 36943, 36945, 36947, 36949, 36951, 36953, 36955, 36957, - 36959, 36961, 36964, 36967, 36970, 36973, 36976, 36979, - 36982, 36985, 36988, 36991, 36994, 36997, 37000, 37003, - 37006, 37009, 37012, 37015, 37018, 37021, 37024, 37027, - }}, - {{ - 4262, 4263, 4264, 4265, 4266, 4267, 4268, 4269, - 4270, 4271, 4272, 4273, 4274, 4275, 4276, 4277, - 4278, 4279, 4280, 4281, 4282, 4283, 4284, 4285, - 4286, 4287, 4288, 4289, 4290, 4291, 4292, 4293, - }}, - {{ - 4294, 4295, 4296, 4297, 4298, 4299, 4300, 4301, - 4302, 4303, 4304, 4305, 4306, 4307, 4308, 4309, - 4310, 4311, 4312, 4313, 4314, 4315, 4316, 4317, - 4318, 4319, 4320, 4321, 4322, 4323, 4324, 4325, - }}, - {{ - 4326, 4327, 4328, 4329, 4330, 4331, 4332, 4333, - 4334, 4335, 4336, 4337, 4338, 4339, 4340, 4341, - 4342, 4343, 4344, 4345, 4346, 4347, 4348, 4349, - 4350, 4351, 4352, 4353, 4354, 4355, 4356, 4357, - }}, - {{ - 4358, 4359, 4360, 4361, 4362, 4363, 4364, 4365, - 4366, 4367, 4368, 4369, 4370, 4371, 4372, 4373, - 4374, 4375, 4376, 4377, 4378, 4379, 4380, 4381, - 4382, 4383, 4384, 4385, 4386, 4387, 4388, 4389, - }}, - {{ - 4390, 4391, 4392, 4393, 4394, 4395, 4396, 4397, - 4398, 4399, 4400, 4401, 4402, 4403, 4404, 4405, - 4406, 4407, 4408, 4409, 4410, 4411, 4412, 4413, - 4414, 4415, 4416, 4417, 4418, 4419, 4420, 4421, - }}, - {{ - 4422, 4423, 4424, 4425, 4426, 4427, 4428, 4429, - 4430, 4431, 4432, 4433, 4434, 4435, 4436, 4437, - 4438, 4439, 4440, 4441, 4442, 4443, 4444, 4445, - 4446, 4447, 4448, 4449, 4450, 4451, 4452, 4453, - }}, - {{ - 4454, 4455, 4456, 4457, 4458, 4459, 4460, 4461, - 4462, 4463, 4464, 4465, 4466, 4467, 4468, 4469, - 4470, 4471, 4472, 4473, 4474, 4475, 4476, 4477, - 4478, 4479, 4480, 4481, 4482, 4483, 4484, 4485, - }}, - {{ - 4486, 4487, 4488, 4489, 4490, 4491, 4492, 4493, - 4494, 4495, 4496, 4497, 4498, 4499, 4500, 4501, - 4502, 4503, 4504, 4505, 4506, 4507, 4508, 4509, - 4510, 4511, 4512, 4513, 4514, 4515, 4516, 4517, - }}, - {{ - 4518, 4519, 4520, 4521, 4522, 4523, 4524, 4525, - 4526, 4527, 4528, 4529, 4530, 4531, 0, 0, - 4532, 0, 4533, 0, 0, 4534, 4535, 4536, - 4537, 4538, 4539, 4540, 4541, 4542, 4543, 0, - }}, - {{ - 4544, 0, 4545, 0, 0, 4546, 4547, 0, - 0, 0, 4548, 4549, 4550, 4551, 0, 0, - 4552, 4553, 4554, 4555, 4556, 4557, 4558, 4559, - 4560, 4561, 4562, 4563, 4564, 4565, 4566, 4567, - }}, - {{ - 4568, 4569, 4570, 4571, 4572, 4573, 4574, 4575, - 4576, 4577, 4578, 4579, 4580, 4581, 4582, 4583, - 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4591, - 4592, 4593, 4594, 4595, 4596, 4597, 4598, 4599, - }}, - {{ - 4600, 4601, 4602, 4603, 4604, 4605, 4606, 4607, - 4608, 4609, 4610, 0, 0, 0, 0, 0, - 4611, 4612, 4613, 4614, 4615, 4616, 4617, 4618, - 4619, 4620, 4621, 4622, 4623, 4624, 4625, 4626, - }}, - {{ - 4627, 4628, 4629, 4630, 4631, 4632, 4633, 4634, - 4635, 4636, 4637, 4638, 4639, 4640, 4641, 4642, - 4643, 4644, 4645, 4646, 4647, 4648, 4649, 4650, - 4651, 4652, 4653, 4654, 4655, 4656, 4657, 4658, - }}, - {{ - 4659, 4660, 4661, 4662, 4663, 4664, 4665, 4666, - 4667, 4668, 4669, 4670, 4671, 4672, 4673, 4674, - 4675, 4676, 4677, 4678, 4679, 4680, 4681, 4682, - 4683, 4684, 4685, 4686, 4687, 4688, 4689, 4690, - }}, - {{ - 4691, 4692, 4693, 4694, 4695, 4696, 4697, 4698, - 4699, 4700, 4701, 4702, 4703, 4704, 4705, 4706, - 4707, 4708, 4709, 4710, 4711, 4712, 4713, 4714, - 4715, 4716, 0, 0, 0, 0, 0, 0, - }}, - {{ - 37485, 37487, 37489, 37491, 37494, 37497, 37499, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 37501, 37503, 37505, 37507, 37509, - 0, 0, 0, 0, 0, 4743, 0, 4745, - }}, - {{ - 37515, 37516, 37517, 37518, 37519, 37520, 37521, 37522, - 37523, 37524, 4757, 4759, 4761, 4763, 4765, 4767, - 4769, 4771, 4773, 4775, 4777, 4779, 4781, 0, - 4783, 4785, 4787, 4789, 4791, 0, 4793, 0, - }}, - {{ - 4795, 4797, 0, 4799, 4801, 0, 4803, 4805, - 4807, 4809, 4811, 4813, 4815, 4817, 4819, 37589, - 37591, 37592, 37593, 37594, 37595, 37596, 37597, 37598, - 37599, 37600, 37601, 37602, 37603, 37604, 37605, 37606, - }}, - {{ - 37607, 37608, 37609, 37610, 37611, 37612, 37613, 37614, - 37615, 37616, 37617, 37618, 37619, 37620, 37621, 37622, - 37623, 37624, 37625, 37626, 37627, 37628, 37629, 37630, - 37631, 37632, 37633, 37634, 37635, 37636, 37637, 37638, - }}, - {{ - 37639, 37640, 37641, 37642, 37643, 37644, 37645, 37646, - 37647, 37648, 37649, 37650, 37651, 37652, 37653, 37654, - 37655, 37656, 37657, 37658, 37659, 37660, 37661, 37662, - 37663, 37664, 37665, 37666, 37667, 37668, 37669, 37670, - }}, - {{ - 37671, 37672, 37673, 37674, 37675, 37676, 37677, 37678, - 37679, 37680, 37681, 37682, 37683, 37684, 37685, 37686, - 37687, 37688, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - }}, - {{ - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 37689, 37690, 37691, 37692, 37693, - 37694, 37695, 37696, 37697, 37698, 37699, 37700, 37701, - }}, - {{ - 37702, 37703, 37704, 37705, 37706, 37707, 37708, 37709, - 37710, 37711, 37712, 37714, 37716, 37718, 37720, 37722, - 37724, 37726, 37728, 37730, 37732, 37734, 37736, 37738, - 37740, 37742, 37744, 37746, 37748, 37749, 37750, 37751, - }}, - {{ - 37752, 37754, 37756, 37758, 37760, 37762, 37764, 37766, - 37768, 37770, 37772, 37774, 37776, 37778, 37780, 37782, - 37784, 37786, 37788, 37790, 37792, 37794, 37796, 37798, - 37800, 37802, 37804, 37806, 37808, 37810, 37812, 37814, - }}, - {{ - 37816, 37818, 37820, 37822, 37824, 37826, 37828, 37830, - 37832, 37834, 37836, 37838, 37840, 37842, 37844, 37846, - 37848, 37850, 37852, 37854, 37856, 37858, 37860, 37862, - 37864, 37866, 37868, 37870, 37872, 37874, 37876, 37878, - }}, - {{ - 37880, 37882, 37884, 37886, 37888, 37890, 37892, 37894, - 37896, 37898, 37900, 37902, 37904, 37906, 37908, 37910, - 37912, 37914, 37916, 37918, 37920, 37922, 37924, 37926, - 37928, 37930, 37932, 37934, 37936, 37938, 37940, 37943, - }}, - {{ - 37946, 37949, 37952, 37955, 37958, 37960, 37962, 37964, - 37966, 37968, 37970, 37972, 37974, 37976, 37978, 37980, - 37982, 37984, 37986, 37988, 37990, 37992, 37994, 37996, - 37998, 38000, 38002, 38004, 38006, 38008, 38010, 38012, - }}, - {{ - 38014, 38016, 38018, 38020, 38022, 38024, 38026, 38028, - 38030, 38032, 38034, 38036, 38038, 38040, 38042, 38044, - 38046, 38048, 38050, 38052, 38054, 38056, 38058, 38060, - 38062, 38064, 38066, 38068, 38070, 38072, 38074, 38076, - }}, - {{ - 38078, 38080, 38082, 38084, 38086, 38088, 38090, 38092, - 38094, 38096, 38098, 38100, 38102, 38104, 38106, 38108, - 38110, 38112, 38114, 38116, 38118, 38120, 38122, 38124, - 38126, 38128, 38130, 38132, 38134, 38136, 38138, 38140, - }}, - {{ - 38142, 38144, 38146, 38148, 38150, 38152, 38154, 38156, - 38158, 38160, 38162, 38164, 38166, 38168, 38170, 38172, - 38174, 38176, 38178, 38180, 38182, 38184, 38186, 38188, - 38190, 38192, 38194, 38196, 38198, 38200, 38202, 38204, - }}, - {{ - 38206, 38208, 38210, 38212, 38214, 38216, 38218, 38220, - 38222, 38224, 38226, 38228, 38230, 38232, 38234, 38236, - 38238, 38240, 38242, 38245, 38248, 38251, 38253, 38255, - 38257, 38259, 38261, 38263, 38265, 38267, 38269, 38271, - }}, - {{ - 38273, 38275, 38277, 38279, 38281, 38283, 38285, 38287, - 38289, 38291, 38293, 38295, 38297, 38299, 38301, 38303, - 38305, 38307, 38309, 38311, 38313, 38315, 38317, 38319, - 38321, 38323, 38325, 38327, 38329, 38331, 38333, 38335, - }}, - {{ - 38337, 38339, 38341, 38343, 38345, 38347, 38349, 38351, - 38353, 38355, 38357, 38359, 38361, 38363, 38365, 38367, - 38369, 38371, 38373, 38375, 38377, 38379, 38381, 38383, - 38385, 38387, 38389, 38391, 38393, 38395, 0, 0, - }}, - {{ - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 38397, 38400, 38403, 38406, 38409, 38412, 38415, 38418, - 38421, 38424, 38427, 38430, 38433, 38436, 38439, 38442, - }}, - {{ - 38445, 38448, 38451, 38454, 38457, 38460, 38463, 38466, - 38469, 38472, 38475, 38478, 38481, 38484, 38487, 38490, - 38493, 38496, 38499, 38502, 38505, 38508, 38511, 38514, - 38517, 38520, 38523, 38526, 38529, 38532, 38535, 38538, - }}, - {{ - 38541, 38544, 38547, 38550, 38553, 38556, 38559, 38562, - 38565, 38568, 38571, 38574, 38577, 38580, 38583, 38586, - 0, 0, 38589, 38592, 38595, 38598, 38601, 38604, - 38607, 38610, 38613, 38616, 38619, 38622, 38625, 38628, - }}, - {{ - 38631, 38634, 38637, 38640, 38643, 38646, 38649, 38652, - 38655, 38658, 38661, 38664, 38667, 38670, 38673, 38676, - 38679, 38682, 38685, 38688, 38691, 38694, 38697, 38700, - 38703, 38706, 38709, 38712, 38715, 38718, 38721, 38724, - }}, - {{ - 38727, 38730, 38733, 38736, 38739, 38742, 38745, 38748, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - }}, - {{ - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 38751, 38754, 38757, 38761, 38765, 38769, 38773, 38777, - 38781, 38785, 38788, 38806, 38814, 0, 0, 0, - }}, - {{ - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 38818, 38819, 38820, 38821, 38822, 38823, 38824, 38825, - 38826, 38827, 0, 0, 0, 0, 0, 0, - }}, - {{ - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 38828, 38829, 38830, 38831, 38832, 38833, 38834, 38835, - 38836, 38837, 38838, 38839, 38840, 38841, 38842, 38843, - }}, - {{ - 38844, 38845, 38846, 38847, 38848, 0, 0, 38849, - 38850, 38851, 38852, 38853, 38854, 38855, 38856, 38857, - 38858, 38859, 38860, 0, 38861, 38862, 38863, 38864, - 38865, 38866, 38867, 38868, 38869, 38870, 38871, 38872, - }}, - {{ - 38873, 38874, 38875, 38876, 38877, 38878, 38879, 0, - 38880, 38881, 38882, 38883, 0, 0, 0, 0, - 38884, 38886, 38888, 0, 38890, 0, 38892, 38894, - 38896, 38898, 38900, 38902, 38904, 38906, 38908, 38910, - }}, - {{ - 38912, 38913, 38914, 38915, 38916, 38917, 38918, 38919, - 38920, 38921, 38922, 38923, 38924, 38925, 38926, 38927, - 38928, 38929, 38930, 38931, 38932, 38933, 38934, 38935, - 38936, 38937, 38938, 38939, 38940, 38941, 38942, 38943, - }}, - {{ - 38944, 38945, 38946, 38947, 38948, 38949, 38950, 38951, - 38952, 38953, 38954, 38955, 38956, 38957, 38958, 38959, - 38960, 38961, 38962, 38963, 38964, 38965, 38966, 38967, - 38968, 38969, 38970, 38971, 38972, 38973, 38974, 38975, - }}, - {{ - 38976, 38977, 38978, 38979, 38980, 38981, 38982, 38983, - 38984, 38985, 38986, 38987, 38988, 38989, 38990, 38991, - 38992, 38993, 38994, 38995, 38996, 38997, 38998, 38999, - 39000, 39001, 39002, 39003, 39004, 39005, 39006, 39007, - }}, - {{ - 39008, 39009, 39010, 39011, 39012, 39013, 39014, 39015, - 39016, 39017, 39018, 39019, 39020, 39021, 39022, 39023, - 39024, 39025, 39026, 39027, 39028, 39029, 39031, 39033, - 39035, 39037, 39039, 39041, 39043, 0, 0, 0, - }}, - {{ - 0, 39045, 39046, 39047, 39048, 39049, 39050, 39051, - 39052, 39053, 39054, 39055, 39056, 39057, 39058, 39059, - 39060, 39061, 39062, 39063, 39064, 39065, 39066, 39067, - 39068, 39069, 39070, 39071, 39072, 39073, 39074, 39075, - }}, - {{ - 39076, 39077, 39078, 39079, 39080, 39081, 39082, 39083, - 39084, 39085, 39086, 39087, 39088, 39089, 39090, 39091, - 39092, 39093, 39094, 39095, 39096, 39097, 39098, 39099, - 39100, 39101, 39102, 39103, 39104, 39105, 39106, 39107, - }}, - {{ - 39108, 39109, 39110, 39111, 39112, 39113, 39114, 39115, - 39116, 39117, 39118, 39119, 39120, 39121, 39122, 39123, - 39124, 39125, 39126, 39127, 39128, 39129, 39130, 39131, - 39132, 39133, 39134, 39135, 39136, 39137, 39138, 39139, - }}, - {{ - 39140, 39141, 39142, 39143, 39144, 39145, 39146, 39147, - 39148, 39149, 39150, 39151, 39152, 39153, 39154, 39155, - 39156, 39157, 39158, 39159, 39160, 39161, 39162, 39163, - 39164, 39165, 39166, 39167, 39168, 39169, 39170, 39171, - }}, - {{ - 39172, 39173, 39174, 39175, 39176, 39177, 39178, 39179, - 39180, 39181, 39182, 39183, 39184, 39185, 39186, 39187, - 39188, 39189, 39190, 39191, 39192, 39193, 39194, 39195, - 39196, 39197, 39198, 39199, 39200, 39201, 39202, 39203, - }}, - {{ - 39204, 39205, 39206, 39207, 39208, 39209, 39210, 39211, - 39212, 39213, 39214, 39215, 39216, 39217, 39218, 39219, - 39220, 39221, 39222, 39223, 39224, 39225, 39226, 39227, - 39228, 39229, 39230, 39231, 39232, 39233, 39234, 0, - }}, - {{ - 0, 0, 39235, 39236, 39237, 39238, 39239, 39240, - 0, 0, 39241, 39242, 39243, 39244, 39245, 39246, - 0, 0, 39247, 39248, 39249, 39250, 39251, 39252, - 0, 0, 39253, 39254, 39255, 0, 0, 0, - }}, - {{ - 39256, 39257, 39258, 39259, 39260, 39261, 39262, 0, - 39263, 39264, 39265, 39266, 39267, 39268, 39269, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - }}, - {{ - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 6502, 6504, - }}, - {{ - 6506, 6508, 6510, 6512, 6514, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - }}, - {{ - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 6516, 6518, 6520, 6522, 6524, - }}, - {{ - 6526, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - }}, - {{ - 39296, 39297, 39298, 39299, 39300, 39301, 39302, 39303, - 39304, 39305, 39306, 39307, 39308, 39309, 39310, 39311, - 39312, 39313, 39314, 39315, 39316, 39317, 39318, 39319, - 39320, 39321, 39322, 39323, 39324, 39325, 39326, 39327, - }}, - {{ - 39328, 39329, 39330, 39331, 39332, 39333, 39334, 39335, - 39336, 39337, 39338, 39339, 39340, 39341, 39342, 39343, - 39344, 39345, 39346, 39347, 39348, 39349, 39350, 39351, - 39352, 39353, 39354, 39355, 39356, 39357, 39358, 39359, - }}, - {{ - 39360, 39361, 39362, 39363, 39364, 39365, 39366, 39367, - 39368, 39369, 39370, 39371, 39372, 39373, 39374, 39375, - 39376, 39377, 39378, 39379, 39380, 0, 39381, 39382, - 39383, 39384, 39385, 39386, 39387, 39388, 39389, 39390, - }}, - {{ - 39391, 39392, 39393, 39394, 39395, 39396, 39397, 39398, - 39399, 39400, 39401, 39402, 39403, 39404, 39405, 39406, - 39407, 39408, 39409, 39410, 39411, 39412, 39413, 39414, - 39415, 39416, 39417, 39418, 39419, 39420, 39421, 39422, - }}, - {{ - 39423, 39424, 39425, 39426, 39427, 39428, 39429, 39430, - 39431, 39432, 39433, 39434, 39435, 39436, 39437, 39438, - 39439, 39440, 39441, 39442, 39443, 39444, 39445, 39446, - 39447, 39448, 39449, 39450, 39451, 0, 39452, 39453, - }}, - {{ - 0, 0, 39454, 0, 0, 39455, 39456, 0, - 0, 39457, 39458, 39459, 39460, 0, 39461, 39462, - 39463, 39464, 39465, 39466, 39467, 39468, 39469, 39470, - 39471, 39472, 0, 39473, 0, 39474, 39475, 39476, - }}, - {{ - 39477, 39478, 39479, 39480, 0, 39481, 39482, 39483, - 39484, 39485, 39486, 39487, 39488, 39489, 39490, 39491, - 39492, 39493, 39494, 39495, 39496, 39497, 39498, 39499, - 39500, 39501, 39502, 39503, 39504, 39505, 39506, 39507, - }}, - {{ - 39508, 39509, 39510, 39511, 39512, 39513, 39514, 39515, - 39516, 39517, 39518, 39519, 39520, 39521, 39522, 39523, - 39524, 39525, 39526, 39527, 39528, 39529, 39530, 39531, - 39532, 39533, 39534, 39535, 39536, 39537, 39538, 39539, - }}, - {{ - 39540, 39541, 39542, 39543, 39544, 39545, 0, 39546, - 39547, 39548, 39549, 0, 0, 39550, 39551, 39552, - 39553, 39554, 39555, 39556, 39557, 0, 39558, 39559, - 39560, 39561, 39562, 39563, 39564, 0, 39565, 39566, - }}, - {{ - 39567, 39568, 39569, 39570, 39571, 39572, 39573, 39574, - 39575, 39576, 39577, 39578, 39579, 39580, 39581, 39582, - 39583, 39584, 39585, 39586, 39587, 39588, 39589, 39590, - 39591, 39592, 0, 39593, 39594, 39595, 39596, 0, - }}, - {{ - 39597, 39598, 39599, 39600, 39601, 0, 39602, 0, - 0, 0, 39603, 39604, 39605, 39606, 39607, 39608, - 39609, 0, 39610, 39611, 39612, 39613, 39614, 39615, - 39616, 39617, 39618, 39619, 39620, 39621, 39622, 39623, - }}, - {{ - 39624, 39625, 39626, 39627, 39628, 39629, 39630, 39631, - 39632, 39633, 39634, 39635, 39636, 39637, 39638, 39639, - 39640, 39641, 39642, 39643, 39644, 39645, 39646, 39647, - 39648, 39649, 39650, 39651, 39652, 39653, 39654, 39655, - }}, - {{ - 39656, 39657, 39658, 39659, 39660, 39661, 39662, 39663, - 39664, 39665, 39666, 39667, 39668, 39669, 39670, 39671, - 39672, 39673, 39674, 39675, 39676, 39677, 39678, 39679, - 39680, 39681, 39682, 39683, 39684, 39685, 39686, 39687, - }}, - {{ - 39688, 39689, 39690, 39691, 39692, 39693, 39694, 39695, - 39696, 39697, 39698, 39699, 39700, 39701, 39702, 39703, - 39704, 39705, 39706, 39707, 39708, 39709, 39710, 39711, - 39712, 39713, 39714, 39715, 39716, 39717, 39718, 39719, - }}, - {{ - 39720, 39721, 39722, 39723, 39724, 39725, 39726, 39727, - 39728, 39729, 39730, 39731, 39732, 39733, 39734, 39735, - 39736, 39737, 39738, 39739, 39740, 39741, 39742, 39743, - 39744, 39745, 39746, 39747, 39748, 39749, 39750, 39751, - }}, - {{ - 39752, 39753, 39754, 39755, 39756, 39757, 39758, 39759, - 39760, 39761, 39762, 39763, 39764, 39765, 39766, 39767, - 39768, 39769, 39770, 39771, 39772, 39773, 39774, 39775, - 39776, 39777, 39778, 39779, 39780, 39781, 39782, 39783, - }}, - {{ - 39784, 39785, 39786, 39787, 39788, 39789, 39790, 39791, - 39792, 39793, 39794, 39795, 39796, 39797, 39798, 39799, - 39800, 39801, 39802, 39803, 39804, 39805, 39806, 39807, - 39808, 39809, 39810, 39811, 39812, 39813, 39814, 39815, - }}, - {{ - 39816, 39817, 39818, 39819, 39820, 39821, 39822, 39823, - 39824, 39825, 39826, 39827, 39828, 39829, 39830, 39831, - 39832, 39833, 39834, 39835, 39836, 39837, 39838, 39839, - 39840, 39841, 39842, 39843, 39844, 39845, 39846, 39847, - }}, - {{ - 39848, 39849, 39850, 39851, 39852, 39853, 39854, 39855, - 39856, 39857, 39858, 39859, 39860, 39861, 39862, 39863, - 39864, 39865, 39866, 39867, 39868, 39869, 39870, 39871, - 39872, 39873, 39874, 39875, 39876, 39877, 39878, 39879, - }}, - {{ - 39880, 39881, 39882, 39883, 39884, 39885, 39886, 39887, - 39888, 39889, 39890, 39891, 39892, 39893, 39894, 39895, - 39896, 39897, 39898, 39899, 39900, 39901, 39902, 39903, - 39904, 39905, 39906, 39907, 39908, 39909, 39910, 39911, - }}, - {{ - 39912, 39913, 39914, 39915, 39916, 39917, 39918, 39919, - 39920, 39921, 39922, 39923, 39924, 39925, 39926, 39927, - 39928, 39929, 39930, 39931, 39932, 39933, 39934, 39935, - 39936, 39937, 39938, 39939, 39940, 39941, 39942, 39943, - }}, - {{ - 39944, 39945, 39946, 39947, 39948, 39949, 0, 0, - 39950, 39951, 39952, 39953, 39954, 39955, 39956, 39957, - 39958, 39959, 39960, 39961, 39962, 39963, 39964, 39965, - 39966, 39967, 39968, 39969, 39970, 39971, 39972, 39973, - }}, - {{ - 39974, 39975, 39976, 39977, 39978, 39979, 39980, 39981, - 39982, 39983, 39984, 39985, 39986, 39987, 39988, 39989, - 39990, 39991, 39992, 39993, 39994, 39995, 39996, 39997, - 39998, 39999, 40000, 40001, 40002, 40003, 40004, 40005, - }}, - {{ - 40006, 40007, 40008, 40009, 40010, 40011, 40012, 40013, - 40014, 40015, 40016, 40017, 40018, 40019, 40020, 40021, - 40022, 40023, 40024, 40025, 40026, 40027, 40028, 40029, - 40030, 40031, 40032, 40033, 40034, 40035, 40036, 40037, - }}, - {{ - 40038, 40039, 40040, 40041, 40042, 40043, 40044, 40045, - 40046, 40047, 40048, 40049, 40050, 40051, 40052, 40053, - 40054, 40055, 40056, 40057, 40058, 40059, 40060, 40061, - 40062, 40063, 40064, 40065, 40066, 40067, 40068, 40069, - }}, - {{ - 40070, 40071, 40072, 40073, 40074, 40075, 40076, 40077, - 40078, 40079, 40080, 40081, 40082, 40083, 40084, 40085, - 40086, 40087, 40088, 40089, 40090, 40091, 40092, 40093, - 40094, 40095, 40096, 40097, 40098, 40099, 40100, 40101, - }}, - {{ - 40102, 40103, 40104, 40105, 40106, 40107, 40108, 40109, - 40110, 40111, 40112, 40113, 40114, 40115, 40116, 40117, - 40118, 40119, 40120, 40121, 40122, 40123, 40124, 40125, - 40126, 40127, 40128, 40129, 40130, 40131, 40132, 40133, - }}, - {{ - 40134, 40135, 40136, 40137, 40138, 40139, 40140, 40141, - 40142, 40143, 40144, 40145, 40146, 40147, 40148, 40149, - 40150, 40151, 40152, 40153, 40154, 40155, 40156, 40157, - 40158, 40159, 40160, 40161, 40162, 40163, 40164, 40165, - }}, - {{ - 40166, 40167, 40168, 40169, 40170, 40171, 40172, 40173, - 40174, 40175, 40176, 40177, 40178, 40179, 40180, 40181, - 40182, 40183, 40184, 40185, 40186, 40187, 40188, 40189, - 40190, 40191, 40192, 40193, 40194, 40195, 40196, 40197, - }}, - {{ - 40198, 40199, 40200, 40201, 40202, 40203, 40204, 40205, - 40206, 40207, 40208, 40209, 40210, 40211, 40212, 40213, - 40214, 40215, 40216, 40217, 40218, 40219, 40220, 40221, - 40222, 40223, 40224, 40225, 40226, 40227, 40228, 40229, - }}, - {{ - 40230, 40231, 40232, 40233, 40234, 40235, 40236, 40237, - 40238, 40239, 0, 0, 0, 0, 40240, 40241, - 40242, 40243, 40244, 40245, 40246, 40247, 40248, 40249, - 40250, 40251, 40252, 40253, 40254, 40255, 40256, 40257, - }}, - {{ - 40258, 40259, 40260, 40261, 40262, 40263, 40264, 40265, - 40266, 40267, 40268, 40269, 40270, 40271, 40272, 40273, - 40274, 40275, 40276, 40277, 40278, 40279, 40280, 40281, - 40282, 40283, 40284, 40285, 40286, 40287, 40288, 40289, - }}, - {{ - 7522, 7523, 7524, 7525, 7526, 7527, 7528, 7529, - 7530, 7531, 7532, 7533, 7534, 7535, 7536, 7537, - 7538, 7539, 7540, 7541, 7542, 7543, 7544, 7545, - 7546, 7547, 7548, 7549, 7550, 7551, 7552, 7553, - }}, - {{ - 7554, 7555, 7556, 7557, 7558, 7559, 7560, 7561, - 7562, 7563, 7564, 7565, 7566, 7567, 7568, 7569, - 7570, 7571, 7572, 7573, 7574, 7575, 7576, 7577, - 7578, 7579, 7580, 7581, 7582, 7583, 7584, 7585, - }}, - {{ - 7586, 7587, 7588, 7589, 7590, 7591, 7592, 7593, - 7594, 7595, 7596, 7597, 7598, 7599, 7600, 7601, - 7602, 7603, 7604, 7605, 7606, 7607, 7608, 7609, - 7610, 7611, 7612, 7613, 7614, 7615, 7616, 7617, - }}, - {{ - 7618, 7619, 7620, 7621, 7622, 7623, 7624, 7625, - 7626, 7627, 7628, 7629, 7630, 7631, 7632, 7633, - 7634, 7635, 7636, 7637, 7638, 7639, 7640, 7641, - 7642, 7643, 7644, 7645, 7646, 7647, 7648, 7649, - }}, - {{ - 7650, 7651, 7652, 7653, 7654, 7655, 7656, 7657, - 7658, 7659, 7660, 7661, 7662, 7663, 7664, 7665, - 7666, 7667, 7668, 7669, 7670, 7671, 7672, 7673, - 7674, 7675, 7676, 7677, 7678, 7679, 7680, 7681, - }}, - {{ - 7682, 7683, 7684, 7685, 7686, 7687, 7688, 7689, - 7690, 7691, 7692, 7693, 7694, 7695, 7696, 7697, - 7698, 7699, 7700, 7701, 7702, 7703, 7704, 7705, - 7706, 7707, 7708, 7709, 7710, 7711, 7712, 7713, - }}, - {{ - 7714, 7715, 7716, 7717, 7718, 7719, 7720, 7721, - 7722, 7723, 7724, 7725, 7726, 7727, 7728, 7729, - 7730, 7731, 7732, 7733, 7734, 7735, 7736, 7737, - 7738, 7739, 7740, 7741, 7742, 7743, 7744, 7745, - }}, - {{ - 7746, 7747, 7748, 7749, 7750, 7751, 7752, 7753, - 7754, 7755, 7756, 7757, 7758, 7759, 7760, 7761, - 7762, 7763, 7764, 7765, 7766, 7767, 7768, 7769, - 7770, 7771, 7772, 7773, 7774, 7775, 7776, 7777, - }}, - {{ - 7778, 7779, 7780, 7781, 7782, 7783, 7784, 7785, - 7786, 7787, 7788, 7789, 7790, 7791, 7792, 7793, - 7794, 7795, 7796, 7797, 7798, 7799, 7800, 7801, - 7802, 7803, 7804, 7805, 7806, 7807, 7808, 7809, - }}, - {{ - 7810, 7811, 7812, 7813, 7814, 7815, 7816, 7817, - 7818, 7819, 7820, 7821, 7822, 7823, 7824, 7825, - 7826, 7827, 7828, 7829, 7830, 7831, 7832, 7833, - 7834, 7835, 7836, 7837, 7838, 7839, 7840, 7841, - }}, - {{ - 7842, 7843, 7844, 7845, 7846, 7847, 7848, 7849, - 7850, 7851, 7852, 7853, 7854, 7855, 7856, 7857, - 7858, 7859, 7860, 7861, 7862, 7863, 7864, 7865, - 7866, 7867, 7868, 7869, 7870, 7871, 7872, 7873, - }}, - {{ - 7874, 7875, 7876, 7877, 7878, 7879, 7880, 7881, - 7882, 7883, 7884, 7885, 7886, 7887, 7888, 7889, - 7890, 7891, 7892, 7893, 7894, 7895, 7896, 7897, - 7898, 7899, 7900, 7901, 7902, 7903, 7904, 7905, - }}, - {{ - 7906, 7907, 7908, 7909, 7910, 7911, 7912, 7913, - 7914, 7915, 7916, 7917, 7918, 7919, 7920, 7921, - 7922, 7923, 7924, 7925, 7926, 7927, 7928, 7929, - 7930, 7931, 7932, 7933, 7934, 7935, 7936, 7937, - }}, - {{ - 7938, 7939, 7940, 7941, 7942, 7943, 7944, 7945, - 7946, 7947, 7948, 7949, 7950, 7951, 7952, 7953, - 7954, 7955, 7956, 7957, 7958, 7959, 7960, 7961, - 7962, 7963, 7964, 7965, 7966, 7967, 7968, 7969, - }}, - {{ - 7970, 7971, 7972, 7973, 7974, 7975, 7976, 7977, - 7978, 7979, 7980, 7981, 7982, 7983, 7984, 7985, - 7986, 7987, 7988, 7989, 7990, 7991, 7992, 7993, - 7994, 7995, 7996, 7997, 7998, 7999, 8000, 8001, - }}, - {{ - 8002, 8003, 8004, 8005, 8006, 8007, 8008, 8009, - 8010, 8011, 8012, 8013, 8014, 8015, 8016, 8017, - 8018, 8019, 8020, 8021, 8022, 8023, 8024, 8025, - 8026, 8027, 8028, 8029, 8030, 8031, 8032, 8033, - }}, - {{ - 8034, 8035, 8036, 8037, 8038, 8039, 8040, 8041, - 8042, 8043, 8044, 8045, 8046, 8047, 8048, 8049, - 8050, 8051, 8052, 8053, 8054, 8055, 8056, 8057, - 8058, 8059, 8060, 8061, 8062, 8063, 0, 0, - }}, -}; -static const uint32_t decompose_seq[] = { - 0x00000000, 0x80000020, 0x00000020, 0x80000308, - 0x80000061, 0x00000020, 0x80000304, 0x80000032, - 0x80000033, 0x00000020, 0x80000301, 0x800003bc, - 0x00000020, 0x80000327, 0x80000031, 0x8000006f, - 0x00000031, 0x00002044, 0x80000034, 0x00000031, - 0x00002044, 0x80000032, 0x00000033, 0x00002044, - 0x80000034, 0x00000041, 0x80000300, 0x00000041, - 0x80000301, 0x00000041, 0x80000302, 0x00000041, - 0x80000303, 0x00000041, 0x80000308, 0x00000041, - 0x8000030a, 0x00000043, 0x80000327, 0x00000045, - 0x80000300, 0x00000045, 0x80000301, 0x00000045, - 0x80000302, 0x00000045, 0x80000308, 0x00000049, - 0x80000300, 0x00000049, 0x80000301, 0x00000049, - 0x80000302, 0x00000049, 0x80000308, 0x0000004e, - 0x80000303, 0x0000004f, 0x80000300, 0x0000004f, - 0x80000301, 0x0000004f, 0x80000302, 0x0000004f, - 0x80000303, 0x0000004f, 0x80000308, 0x00000055, - 0x80000300, 0x00000055, 0x80000301, 0x00000055, - 0x80000302, 0x00000055, 0x80000308, 0x00000059, - 0x80000301, 0x00000061, 0x80000300, 0x00000061, - 0x80000301, 0x00000061, 0x80000302, 0x00000061, - 0x80000303, 0x00000061, 0x80000308, 0x00000061, - 0x8000030a, 0x00000063, 0x80000327, 0x00000065, - 0x80000300, 0x00000065, 0x80000301, 0x00000065, - 0x80000302, 0x00000065, 0x80000308, 0x00000069, - 0x80000300, 0x00000069, 0x80000301, 0x00000069, - 0x80000302, 0x00000069, 0x80000308, 0x0000006e, - 0x80000303, 0x0000006f, 0x80000300, 0x0000006f, - 0x80000301, 0x0000006f, 0x80000302, 0x0000006f, - 0x80000303, 0x0000006f, 0x80000308, 0x00000075, - 0x80000300, 0x00000075, 0x80000301, 0x00000075, - 0x80000302, 0x00000075, 0x80000308, 0x00000079, - 0x80000301, 0x00000079, 0x80000308, 0x00000041, - 0x80000304, 0x00000061, 0x80000304, 0x00000041, - 0x80000306, 0x00000061, 0x80000306, 0x00000041, - 0x80000328, 0x00000061, 0x80000328, 0x00000043, - 0x80000301, 0x00000063, 0x80000301, 0x00000043, - 0x80000302, 0x00000063, 0x80000302, 0x00000043, - 0x80000307, 0x00000063, 0x80000307, 0x00000043, - 0x8000030c, 0x00000063, 0x8000030c, 0x00000044, - 0x8000030c, 0x00000064, 0x8000030c, 0x00000045, - 0x80000304, 0x00000065, 0x80000304, 0x00000045, - 0x80000306, 0x00000065, 0x80000306, 0x00000045, - 0x80000307, 0x00000065, 0x80000307, 0x00000045, - 0x80000328, 0x00000065, 0x80000328, 0x00000045, - 0x8000030c, 0x00000065, 0x8000030c, 0x00000047, - 0x80000302, 0x00000067, 0x80000302, 0x00000047, - 0x80000306, 0x00000067, 0x80000306, 0x00000047, - 0x80000307, 0x00000067, 0x80000307, 0x00000047, - 0x80000327, 0x00000067, 0x80000327, 0x00000048, - 0x80000302, 0x00000068, 0x80000302, 0x00000049, - 0x80000303, 0x00000069, 0x80000303, 0x00000049, - 0x80000304, 0x00000069, 0x80000304, 0x00000049, - 0x80000306, 0x00000069, 0x80000306, 0x00000049, - 0x80000328, 0x00000069, 0x80000328, 0x00000049, - 0x80000307, 0x00000049, 0x8000004a, 0x00000069, - 0x8000006a, 0x0000004a, 0x80000302, 0x0000006a, - 0x80000302, 0x0000004b, 0x80000327, 0x0000006b, - 0x80000327, 0x0000004c, 0x80000301, 0x0000006c, - 0x80000301, 0x0000004c, 0x80000327, 0x0000006c, - 0x80000327, 0x0000004c, 0x8000030c, 0x0000006c, - 0x8000030c, 0x0000004c, 0x800000b7, 0x0000006c, - 0x800000b7, 0x0000004e, 0x80000301, 0x0000006e, - 0x80000301, 0x0000004e, 0x80000327, 0x0000006e, - 0x80000327, 0x0000004e, 0x8000030c, 0x0000006e, - 0x8000030c, 0x000002bc, 0x8000006e, 0x0000004f, - 0x80000304, 0x0000006f, 0x80000304, 0x0000004f, - 0x80000306, 0x0000006f, 0x80000306, 0x0000004f, - 0x8000030b, 0x0000006f, 0x8000030b, 0x00000052, - 0x80000301, 0x00000072, 0x80000301, 0x00000052, - 0x80000327, 0x00000072, 0x80000327, 0x00000052, - 0x8000030c, 0x00000072, 0x8000030c, 0x00000053, - 0x80000301, 0x00000073, 0x80000301, 0x00000053, - 0x80000302, 0x00000073, 0x80000302, 0x00000053, - 0x80000327, 0x00000073, 0x80000327, 0x00000053, - 0x8000030c, 0x00000073, 0x8000030c, 0x00000054, - 0x80000327, 0x00000074, 0x80000327, 0x00000054, - 0x8000030c, 0x00000074, 0x8000030c, 0x00000055, - 0x80000303, 0x00000075, 0x80000303, 0x00000055, - 0x80000304, 0x00000075, 0x80000304, 0x00000055, - 0x80000306, 0x00000075, 0x80000306, 0x00000055, - 0x8000030a, 0x00000075, 0x8000030a, 0x00000055, - 0x8000030b, 0x00000075, 0x8000030b, 0x00000055, - 0x80000328, 0x00000075, 0x80000328, 0x00000057, - 0x80000302, 0x00000077, 0x80000302, 0x00000059, - 0x80000302, 0x00000079, 0x80000302, 0x00000059, - 0x80000308, 0x0000005a, 0x80000301, 0x0000007a, - 0x80000301, 0x0000005a, 0x80000307, 0x0000007a, - 0x80000307, 0x0000005a, 0x8000030c, 0x0000007a, - 0x8000030c, 0x80000073, 0x0000004f, 0x8000031b, - 0x0000006f, 0x8000031b, 0x00000055, 0x8000031b, - 0x00000075, 0x8000031b, 0x00000044, 0x8000017d, - 0x00000044, 0x8000017e, 0x00000064, 0x8000017e, - 0x0000004c, 0x8000004a, 0x0000004c, 0x8000006a, - 0x0000006c, 0x8000006a, 0x0000004e, 0x8000004a, - 0x0000004e, 0x8000006a, 0x0000006e, 0x8000006a, - 0x00000041, 0x8000030c, 0x00000061, 0x8000030c, - 0x00000049, 0x8000030c, 0x00000069, 0x8000030c, - 0x0000004f, 0x8000030c, 0x0000006f, 0x8000030c, - 0x00000055, 0x8000030c, 0x00000075, 0x8000030c, - 0x000000dc, 0x80000304, 0x000000fc, 0x80000304, - 0x000000dc, 0x80000301, 0x000000fc, 0x80000301, - 0x000000dc, 0x8000030c, 0x000000fc, 0x8000030c, - 0x000000dc, 0x80000300, 0x000000fc, 0x80000300, - 0x000000c4, 0x80000304, 0x000000e4, 0x80000304, - 0x00000226, 0x80000304, 0x00000227, 0x80000304, - 0x000000c6, 0x80000304, 0x000000e6, 0x80000304, - 0x00000047, 0x8000030c, 0x00000067, 0x8000030c, - 0x0000004b, 0x8000030c, 0x0000006b, 0x8000030c, - 0x0000004f, 0x80000328, 0x0000006f, 0x80000328, - 0x000001ea, 0x80000304, 0x000001eb, 0x80000304, - 0x000001b7, 0x8000030c, 0x00000292, 0x8000030c, - 0x0000006a, 0x8000030c, 0x00000044, 0x8000005a, - 0x00000044, 0x8000007a, 0x00000064, 0x8000007a, - 0x00000047, 0x80000301, 0x00000067, 0x80000301, - 0x0000004e, 0x80000300, 0x0000006e, 0x80000300, - 0x000000c5, 0x80000301, 0x000000e5, 0x80000301, - 0x000000c6, 0x80000301, 0x000000e6, 0x80000301, - 0x000000d8, 0x80000301, 0x000000f8, 0x80000301, - 0x00000041, 0x8000030f, 0x00000061, 0x8000030f, - 0x00000041, 0x80000311, 0x00000061, 0x80000311, - 0x00000045, 0x8000030f, 0x00000065, 0x8000030f, - 0x00000045, 0x80000311, 0x00000065, 0x80000311, - 0x00000049, 0x8000030f, 0x00000069, 0x8000030f, - 0x00000049, 0x80000311, 0x00000069, 0x80000311, - 0x0000004f, 0x8000030f, 0x0000006f, 0x8000030f, - 0x0000004f, 0x80000311, 0x0000006f, 0x80000311, - 0x00000052, 0x8000030f, 0x00000072, 0x8000030f, - 0x00000052, 0x80000311, 0x00000072, 0x80000311, - 0x00000055, 0x8000030f, 0x00000075, 0x8000030f, - 0x00000055, 0x80000311, 0x00000075, 0x80000311, - 0x00000053, 0x80000326, 0x00000073, 0x80000326, - 0x00000054, 0x80000326, 0x00000074, 0x80000326, - 0x00000048, 0x8000030c, 0x00000068, 0x8000030c, - 0x00000041, 0x80000307, 0x00000061, 0x80000307, - 0x00000045, 0x80000327, 0x00000065, 0x80000327, - 0x000000d6, 0x80000304, 0x000000f6, 0x80000304, - 0x000000d5, 0x80000304, 0x000000f5, 0x80000304, - 0x0000004f, 0x80000307, 0x0000006f, 0x80000307, - 0x0000022e, 0x80000304, 0x0000022f, 0x80000304, - 0x00000059, 0x80000304, 0x00000079, 0x80000304, - 0x80000068, 0x80000266, 0x8000006a, 0x80000072, - 0x80000279, 0x8000027b, 0x80000281, 0x80000077, - 0x80000079, 0x00000020, 0x80000306, 0x00000020, - 0x80000307, 0x00000020, 0x8000030a, 0x00000020, - 0x80000328, 0x00000020, 0x80000303, 0x00000020, - 0x8000030b, 0x80000263, 0x8000006c, 0x80000073, - 0x80000078, 0x80000295, 0x80000300, 0x80000301, - 0x80000313, 0x00000308, 0x80000301, 0x800002b9, - 0x00000020, 0x80000345, 0x8000003b, 0x00000020, - 0x80000301, 0x000000a8, 0x80000301, 0x00000391, - 0x80000301, 0x800000b7, 0x00000395, 0x80000301, - 0x00000397, 0x80000301, 0x00000399, 0x80000301, - 0x0000039f, 0x80000301, 0x000003a5, 0x80000301, - 0x000003a9, 0x80000301, 0x000003ca, 0x80000301, - 0x00000399, 0x80000308, 0x000003a5, 0x80000308, - 0x000003b1, 0x80000301, 0x000003b5, 0x80000301, - 0x000003b7, 0x80000301, 0x000003b9, 0x80000301, - 0x000003cb, 0x80000301, 0x000003b9, 0x80000308, - 0x000003c5, 0x80000308, 0x000003bf, 0x80000301, - 0x000003c5, 0x80000301, 0x000003c9, 0x80000301, - 0x800003b2, 0x800003b8, 0x800003a5, 0x000003d2, - 0x80000301, 0x000003d2, 0x80000308, 0x800003c6, - 0x800003c0, 0x800003ba, 0x800003c1, 0x800003c2, - 0x80000398, 0x800003b5, 0x800003a3, 0x00000415, - 0x80000300, 0x00000415, 0x80000308, 0x00000413, - 0x80000301, 0x00000406, 0x80000308, 0x0000041a, - 0x80000301, 0x00000418, 0x80000300, 0x00000423, - 0x80000306, 0x00000418, 0x80000306, 0x00000438, - 0x80000306, 0x00000435, 0x80000300, 0x00000435, - 0x80000308, 0x00000433, 0x80000301, 0x00000456, - 0x80000308, 0x0000043a, 0x80000301, 0x00000438, - 0x80000300, 0x00000443, 0x80000306, 0x00000474, - 0x8000030f, 0x00000475, 0x8000030f, 0x00000416, - 0x80000306, 0x00000436, 0x80000306, 0x00000410, - 0x80000306, 0x00000430, 0x80000306, 0x00000410, - 0x80000308, 0x00000430, 0x80000308, 0x00000415, - 0x80000306, 0x00000435, 0x80000306, 0x000004d8, - 0x80000308, 0x000004d9, 0x80000308, 0x00000416, - 0x80000308, 0x00000436, 0x80000308, 0x00000417, - 0x80000308, 0x00000437, 0x80000308, 0x00000418, - 0x80000304, 0x00000438, 0x80000304, 0x00000418, - 0x80000308, 0x00000438, 0x80000308, 0x0000041e, - 0x80000308, 0x0000043e, 0x80000308, 0x000004e8, - 0x80000308, 0x000004e9, 0x80000308, 0x0000042d, - 0x80000308, 0x0000044d, 0x80000308, 0x00000423, - 0x80000304, 0x00000443, 0x80000304, 0x00000423, - 0x80000308, 0x00000443, 0x80000308, 0x00000423, - 0x8000030b, 0x00000443, 0x8000030b, 0x00000427, - 0x80000308, 0x00000447, 0x80000308, 0x0000042b, - 0x80000308, 0x0000044b, 0x80000308, 0x00000565, - 0x80000582, 0x00000627, 0x80000653, 0x00000627, - 0x80000654, 0x00000648, 0x80000654, 0x00000627, - 0x80000655, 0x0000064a, 0x80000654, 0x00000627, - 0x80000674, 0x00000648, 0x80000674, 0x000006c7, - 0x80000674, 0x0000064a, 0x80000674, 0x000006d5, - 0x80000654, 0x000006c1, 0x80000654, 0x000006d2, - 0x80000654, 0x00000928, 0x8000093c, 0x00000930, - 0x8000093c, 0x00000933, 0x8000093c, 0x00000915, - 0x8000093c, 0x00000916, 0x8000093c, 0x00000917, - 0x8000093c, 0x0000091c, 0x8000093c, 0x00000921, - 0x8000093c, 0x00000922, 0x8000093c, 0x0000092b, - 0x8000093c, 0x0000092f, 0x8000093c, 0x000009c7, - 0x800009be, 0x000009c7, 0x800009d7, 0x000009a1, - 0x800009bc, 0x000009a2, 0x800009bc, 0x000009af, - 0x800009bc, 0x00000a32, 0x80000a3c, 0x00000a38, - 0x80000a3c, 0x00000a16, 0x80000a3c, 0x00000a17, - 0x80000a3c, 0x00000a1c, 0x80000a3c, 0x00000a2b, - 0x80000a3c, 0x00000b47, 0x80000b56, 0x00000b47, - 0x80000b3e, 0x00000b47, 0x80000b57, 0x00000b21, - 0x80000b3c, 0x00000b22, 0x80000b3c, 0x00000b92, - 0x80000bd7, 0x00000bc6, 0x80000bbe, 0x00000bc7, - 0x80000bbe, 0x00000bc6, 0x80000bd7, 0x00000c46, - 0x80000c56, 0x00000cbf, 0x80000cd5, 0x00000cc6, - 0x80000cd5, 0x00000cc6, 0x80000cd6, 0x00000cc6, - 0x80000cc2, 0x00000cca, 0x80000cd5, 0x00000d46, - 0x80000d3e, 0x00000d47, 0x80000d3e, 0x00000d46, - 0x80000d57, 0x00000dd9, 0x80000dca, 0x00000dd9, - 0x80000dcf, 0x00000ddc, 0x80000dca, 0x00000dd9, - 0x80000ddf, 0x00000e4d, 0x80000e32, 0x00000ecd, - 0x80000eb2, 0x00000eab, 0x80000e99, 0x00000eab, - 0x80000ea1, 0x80000f0b, 0x00000f42, 0x80000fb7, - 0x00000f4c, 0x80000fb7, 0x00000f51, 0x80000fb7, - 0x00000f56, 0x80000fb7, 0x00000f5b, 0x80000fb7, - 0x00000f40, 0x80000fb5, 0x00000f71, 0x80000f72, - 0x00000f71, 0x80000f74, 0x00000fb2, 0x80000f80, - 0x00000fb2, 0x80000f81, 0x00000fb3, 0x80000f80, - 0x00000fb3, 0x80000f81, 0x00000f71, 0x80000f80, - 0x00000f92, 0x80000fb7, 0x00000f9c, 0x80000fb7, - 0x00000fa1, 0x80000fb7, 0x00000fa6, 0x80000fb7, - 0x00000fab, 0x80000fb7, 0x00000f90, 0x80000fb5, - 0x00001025, 0x8000102e, 0x800010dc, 0x80000041, - 0x800000c6, 0x80000042, 0x80000044, 0x80000045, - 0x8000018e, 0x80000047, 0x80000048, 0x80000049, - 0x8000004a, 0x8000004b, 0x8000004c, 0x8000004d, - 0x8000004e, 0x8000004f, 0x80000222, 0x80000050, - 0x80000052, 0x80000054, 0x80000055, 0x80000057, - 0x80000061, 0x80000250, 0x80000251, 0x80001d02, - 0x80000062, 0x80000064, 0x80000065, 0x80000259, - 0x8000025b, 0x8000025c, 0x80000067, 0x8000006b, - 0x8000006d, 0x8000014b, 0x8000006f, 0x80000254, - 0x80001d16, 0x80001d17, 0x80000070, 0x80000074, - 0x80000075, 0x80001d1d, 0x8000026f, 0x80000076, - 0x80001d25, 0x800003b2, 0x800003b3, 0x800003b4, - 0x800003c6, 0x800003c7, 0x80000069, 0x80000072, - 0x80000075, 0x80000076, 0x800003b2, 0x800003b3, - 0x800003c1, 0x800003c6, 0x800003c7, 0x8000043d, - 0x80000252, 0x80000063, 0x80000255, 0x800000f0, - 0x8000025c, 0x80000066, 0x8000025f, 0x80000261, - 0x80000265, 0x80000268, 0x80000269, 0x8000026a, - 0x80001d7b, 0x8000029d, 0x8000026d, 0x80001d85, - 0x8000029f, 0x80000271, 0x80000270, 0x80000272, - 0x80000273, 0x80000274, 0x80000275, 0x80000278, - 0x80000282, 0x80000283, 0x800001ab, 0x80000289, - 0x8000028a, 0x80001d1c, 0x8000028b, 0x8000028c, - 0x8000007a, 0x80000290, 0x80000291, 0x80000292, - 0x800003b8, 0x00000041, 0x80000325, 0x00000061, - 0x80000325, 0x00000042, 0x80000307, 0x00000062, - 0x80000307, 0x00000042, 0x80000323, 0x00000062, - 0x80000323, 0x00000042, 0x80000331, 0x00000062, - 0x80000331, 0x000000c7, 0x80000301, 0x000000e7, - 0x80000301, 0x00000044, 0x80000307, 0x00000064, - 0x80000307, 0x00000044, 0x80000323, 0x00000064, - 0x80000323, 0x00000044, 0x80000331, 0x00000064, - 0x80000331, 0x00000044, 0x80000327, 0x00000064, - 0x80000327, 0x00000044, 0x8000032d, 0x00000064, - 0x8000032d, 0x00000112, 0x80000300, 0x00000113, - 0x80000300, 0x00000112, 0x80000301, 0x00000113, - 0x80000301, 0x00000045, 0x8000032d, 0x00000065, - 0x8000032d, 0x00000045, 0x80000330, 0x00000065, - 0x80000330, 0x00000228, 0x80000306, 0x00000229, - 0x80000306, 0x00000046, 0x80000307, 0x00000066, - 0x80000307, 0x00000047, 0x80000304, 0x00000067, - 0x80000304, 0x00000048, 0x80000307, 0x00000068, - 0x80000307, 0x00000048, 0x80000323, 0x00000068, - 0x80000323, 0x00000048, 0x80000308, 0x00000068, - 0x80000308, 0x00000048, 0x80000327, 0x00000068, - 0x80000327, 0x00000048, 0x8000032e, 0x00000068, - 0x8000032e, 0x00000049, 0x80000330, 0x00000069, - 0x80000330, 0x000000cf, 0x80000301, 0x000000ef, - 0x80000301, 0x0000004b, 0x80000301, 0x0000006b, - 0x80000301, 0x0000004b, 0x80000323, 0x0000006b, - 0x80000323, 0x0000004b, 0x80000331, 0x0000006b, - 0x80000331, 0x0000004c, 0x80000323, 0x0000006c, - 0x80000323, 0x00001e36, 0x80000304, 0x00001e37, - 0x80000304, 0x0000004c, 0x80000331, 0x0000006c, - 0x80000331, 0x0000004c, 0x8000032d, 0x0000006c, - 0x8000032d, 0x0000004d, 0x80000301, 0x0000006d, - 0x80000301, 0x0000004d, 0x80000307, 0x0000006d, - 0x80000307, 0x0000004d, 0x80000323, 0x0000006d, - 0x80000323, 0x0000004e, 0x80000307, 0x0000006e, - 0x80000307, 0x0000004e, 0x80000323, 0x0000006e, - 0x80000323, 0x0000004e, 0x80000331, 0x0000006e, - 0x80000331, 0x0000004e, 0x8000032d, 0x0000006e, - 0x8000032d, 0x000000d5, 0x80000301, 0x000000f5, - 0x80000301, 0x000000d5, 0x80000308, 0x000000f5, - 0x80000308, 0x0000014c, 0x80000300, 0x0000014d, - 0x80000300, 0x0000014c, 0x80000301, 0x0000014d, - 0x80000301, 0x00000050, 0x80000301, 0x00000070, - 0x80000301, 0x00000050, 0x80000307, 0x00000070, - 0x80000307, 0x00000052, 0x80000307, 0x00000072, - 0x80000307, 0x00000052, 0x80000323, 0x00000072, - 0x80000323, 0x00001e5a, 0x80000304, 0x00001e5b, - 0x80000304, 0x00000052, 0x80000331, 0x00000072, - 0x80000331, 0x00000053, 0x80000307, 0x00000073, - 0x80000307, 0x00000053, 0x80000323, 0x00000073, - 0x80000323, 0x0000015a, 0x80000307, 0x0000015b, - 0x80000307, 0x00000160, 0x80000307, 0x00000161, - 0x80000307, 0x00001e62, 0x80000307, 0x00001e63, - 0x80000307, 0x00000054, 0x80000307, 0x00000074, - 0x80000307, 0x00000054, 0x80000323, 0x00000074, - 0x80000323, 0x00000054, 0x80000331, 0x00000074, - 0x80000331, 0x00000054, 0x8000032d, 0x00000074, - 0x8000032d, 0x00000055, 0x80000324, 0x00000075, - 0x80000324, 0x00000055, 0x80000330, 0x00000075, - 0x80000330, 0x00000055, 0x8000032d, 0x00000075, - 0x8000032d, 0x00000168, 0x80000301, 0x00000169, - 0x80000301, 0x0000016a, 0x80000308, 0x0000016b, - 0x80000308, 0x00000056, 0x80000303, 0x00000076, - 0x80000303, 0x00000056, 0x80000323, 0x00000076, - 0x80000323, 0x00000057, 0x80000300, 0x00000077, - 0x80000300, 0x00000057, 0x80000301, 0x00000077, - 0x80000301, 0x00000057, 0x80000308, 0x00000077, - 0x80000308, 0x00000057, 0x80000307, 0x00000077, - 0x80000307, 0x00000057, 0x80000323, 0x00000077, - 0x80000323, 0x00000058, 0x80000307, 0x00000078, - 0x80000307, 0x00000058, 0x80000308, 0x00000078, - 0x80000308, 0x00000059, 0x80000307, 0x00000079, - 0x80000307, 0x0000005a, 0x80000302, 0x0000007a, - 0x80000302, 0x0000005a, 0x80000323, 0x0000007a, - 0x80000323, 0x0000005a, 0x80000331, 0x0000007a, - 0x80000331, 0x00000068, 0x80000331, 0x00000074, - 0x80000308, 0x00000077, 0x8000030a, 0x00000079, - 0x8000030a, 0x00000061, 0x800002be, 0x0000017f, - 0x80000307, 0x00000041, 0x80000323, 0x00000061, - 0x80000323, 0x00000041, 0x80000309, 0x00000061, - 0x80000309, 0x000000c2, 0x80000301, 0x000000e2, - 0x80000301, 0x000000c2, 0x80000300, 0x000000e2, - 0x80000300, 0x000000c2, 0x80000309, 0x000000e2, - 0x80000309, 0x000000c2, 0x80000303, 0x000000e2, - 0x80000303, 0x00001ea0, 0x80000302, 0x00001ea1, - 0x80000302, 0x00000102, 0x80000301, 0x00000103, - 0x80000301, 0x00000102, 0x80000300, 0x00000103, - 0x80000300, 0x00000102, 0x80000309, 0x00000103, - 0x80000309, 0x00000102, 0x80000303, 0x00000103, - 0x80000303, 0x00001ea0, 0x80000306, 0x00001ea1, - 0x80000306, 0x00000045, 0x80000323, 0x00000065, - 0x80000323, 0x00000045, 0x80000309, 0x00000065, - 0x80000309, 0x00000045, 0x80000303, 0x00000065, - 0x80000303, 0x000000ca, 0x80000301, 0x000000ea, - 0x80000301, 0x000000ca, 0x80000300, 0x000000ea, - 0x80000300, 0x000000ca, 0x80000309, 0x000000ea, - 0x80000309, 0x000000ca, 0x80000303, 0x000000ea, - 0x80000303, 0x00001eb8, 0x80000302, 0x00001eb9, - 0x80000302, 0x00000049, 0x80000309, 0x00000069, - 0x80000309, 0x00000049, 0x80000323, 0x00000069, - 0x80000323, 0x0000004f, 0x80000323, 0x0000006f, - 0x80000323, 0x0000004f, 0x80000309, 0x0000006f, - 0x80000309, 0x000000d4, 0x80000301, 0x000000f4, - 0x80000301, 0x000000d4, 0x80000300, 0x000000f4, - 0x80000300, 0x000000d4, 0x80000309, 0x000000f4, - 0x80000309, 0x000000d4, 0x80000303, 0x000000f4, - 0x80000303, 0x00001ecc, 0x80000302, 0x00001ecd, - 0x80000302, 0x000001a0, 0x80000301, 0x000001a1, - 0x80000301, 0x000001a0, 0x80000300, 0x000001a1, - 0x80000300, 0x000001a0, 0x80000309, 0x000001a1, - 0x80000309, 0x000001a0, 0x80000303, 0x000001a1, - 0x80000303, 0x000001a0, 0x80000323, 0x000001a1, - 0x80000323, 0x00000055, 0x80000323, 0x00000075, - 0x80000323, 0x00000055, 0x80000309, 0x00000075, - 0x80000309, 0x000001af, 0x80000301, 0x000001b0, - 0x80000301, 0x000001af, 0x80000300, 0x000001b0, - 0x80000300, 0x000001af, 0x80000309, 0x000001b0, - 0x80000309, 0x000001af, 0x80000303, 0x000001b0, - 0x80000303, 0x000001af, 0x80000323, 0x000001b0, - 0x80000323, 0x00000059, 0x80000300, 0x00000079, - 0x80000300, 0x00000059, 0x80000323, 0x00000079, - 0x80000323, 0x00000059, 0x80000309, 0x00000079, - 0x80000309, 0x00000059, 0x80000303, 0x00000079, - 0x80000303, 0x000003b1, 0x80000313, 0x000003b1, - 0x80000314, 0x00001f00, 0x80000300, 0x00001f01, - 0x80000300, 0x00001f00, 0x80000301, 0x00001f01, - 0x80000301, 0x00001f00, 0x80000342, 0x00001f01, - 0x80000342, 0x00000391, 0x80000313, 0x00000391, - 0x80000314, 0x00001f08, 0x80000300, 0x00001f09, - 0x80000300, 0x00001f08, 0x80000301, 0x00001f09, - 0x80000301, 0x00001f08, 0x80000342, 0x00001f09, - 0x80000342, 0x000003b5, 0x80000313, 0x000003b5, - 0x80000314, 0x00001f10, 0x80000300, 0x00001f11, - 0x80000300, 0x00001f10, 0x80000301, 0x00001f11, - 0x80000301, 0x00000395, 0x80000313, 0x00000395, - 0x80000314, 0x00001f18, 0x80000300, 0x00001f19, - 0x80000300, 0x00001f18, 0x80000301, 0x00001f19, - 0x80000301, 0x000003b7, 0x80000313, 0x000003b7, - 0x80000314, 0x00001f20, 0x80000300, 0x00001f21, - 0x80000300, 0x00001f20, 0x80000301, 0x00001f21, - 0x80000301, 0x00001f20, 0x80000342, 0x00001f21, - 0x80000342, 0x00000397, 0x80000313, 0x00000397, - 0x80000314, 0x00001f28, 0x80000300, 0x00001f29, - 0x80000300, 0x00001f28, 0x80000301, 0x00001f29, - 0x80000301, 0x00001f28, 0x80000342, 0x00001f29, - 0x80000342, 0x000003b9, 0x80000313, 0x000003b9, - 0x80000314, 0x00001f30, 0x80000300, 0x00001f31, - 0x80000300, 0x00001f30, 0x80000301, 0x00001f31, - 0x80000301, 0x00001f30, 0x80000342, 0x00001f31, - 0x80000342, 0x00000399, 0x80000313, 0x00000399, - 0x80000314, 0x00001f38, 0x80000300, 0x00001f39, - 0x80000300, 0x00001f38, 0x80000301, 0x00001f39, - 0x80000301, 0x00001f38, 0x80000342, 0x00001f39, - 0x80000342, 0x000003bf, 0x80000313, 0x000003bf, - 0x80000314, 0x00001f40, 0x80000300, 0x00001f41, - 0x80000300, 0x00001f40, 0x80000301, 0x00001f41, - 0x80000301, 0x0000039f, 0x80000313, 0x0000039f, - 0x80000314, 0x00001f48, 0x80000300, 0x00001f49, - 0x80000300, 0x00001f48, 0x80000301, 0x00001f49, - 0x80000301, 0x000003c5, 0x80000313, 0x000003c5, - 0x80000314, 0x00001f50, 0x80000300, 0x00001f51, - 0x80000300, 0x00001f50, 0x80000301, 0x00001f51, - 0x80000301, 0x00001f50, 0x80000342, 0x00001f51, - 0x80000342, 0x000003a5, 0x80000314, 0x00001f59, - 0x80000300, 0x00001f59, 0x80000301, 0x00001f59, - 0x80000342, 0x000003c9, 0x80000313, 0x000003c9, - 0x80000314, 0x00001f60, 0x80000300, 0x00001f61, - 0x80000300, 0x00001f60, 0x80000301, 0x00001f61, - 0x80000301, 0x00001f60, 0x80000342, 0x00001f61, - 0x80000342, 0x000003a9, 0x80000313, 0x000003a9, - 0x80000314, 0x00001f68, 0x80000300, 0x00001f69, - 0x80000300, 0x00001f68, 0x80000301, 0x00001f69, - 0x80000301, 0x00001f68, 0x80000342, 0x00001f69, - 0x80000342, 0x000003b1, 0x80000300, 0x800003ac, - 0x000003b5, 0x80000300, 0x800003ad, 0x000003b7, - 0x80000300, 0x800003ae, 0x000003b9, 0x80000300, - 0x800003af, 0x000003bf, 0x80000300, 0x800003cc, - 0x000003c5, 0x80000300, 0x800003cd, 0x000003c9, - 0x80000300, 0x800003ce, 0x00001f00, 0x80000345, - 0x00001f01, 0x80000345, 0x00001f02, 0x80000345, - 0x00001f03, 0x80000345, 0x00001f04, 0x80000345, - 0x00001f05, 0x80000345, 0x00001f06, 0x80000345, - 0x00001f07, 0x80000345, 0x00001f08, 0x80000345, - 0x00001f09, 0x80000345, 0x00001f0a, 0x80000345, - 0x00001f0b, 0x80000345, 0x00001f0c, 0x80000345, - 0x00001f0d, 0x80000345, 0x00001f0e, 0x80000345, - 0x00001f0f, 0x80000345, 0x00001f20, 0x80000345, - 0x00001f21, 0x80000345, 0x00001f22, 0x80000345, - 0x00001f23, 0x80000345, 0x00001f24, 0x80000345, - 0x00001f25, 0x80000345, 0x00001f26, 0x80000345, - 0x00001f27, 0x80000345, 0x00001f28, 0x80000345, - 0x00001f29, 0x80000345, 0x00001f2a, 0x80000345, - 0x00001f2b, 0x80000345, 0x00001f2c, 0x80000345, - 0x00001f2d, 0x80000345, 0x00001f2e, 0x80000345, - 0x00001f2f, 0x80000345, 0x00001f60, 0x80000345, - 0x00001f61, 0x80000345, 0x00001f62, 0x80000345, - 0x00001f63, 0x80000345, 0x00001f64, 0x80000345, - 0x00001f65, 0x80000345, 0x00001f66, 0x80000345, - 0x00001f67, 0x80000345, 0x00001f68, 0x80000345, - 0x00001f69, 0x80000345, 0x00001f6a, 0x80000345, - 0x00001f6b, 0x80000345, 0x00001f6c, 0x80000345, - 0x00001f6d, 0x80000345, 0x00001f6e, 0x80000345, - 0x00001f6f, 0x80000345, 0x000003b1, 0x80000306, - 0x000003b1, 0x80000304, 0x00001f70, 0x80000345, - 0x000003b1, 0x80000345, 0x000003ac, 0x80000345, - 0x000003b1, 0x80000342, 0x00001fb6, 0x80000345, - 0x00000391, 0x80000306, 0x00000391, 0x80000304, - 0x00000391, 0x80000300, 0x80000386, 0x00000391, - 0x80000345, 0x00000020, 0x80000313, 0x800003b9, - 0x00000020, 0x80000313, 0x00000020, 0x80000342, - 0x000000a8, 0x80000342, 0x00001f74, 0x80000345, - 0x000003b7, 0x80000345, 0x000003ae, 0x80000345, - 0x000003b7, 0x80000342, 0x00001fc6, 0x80000345, - 0x00000395, 0x80000300, 0x80000388, 0x00000397, - 0x80000300, 0x80000389, 0x00000397, 0x80000345, - 0x00001fbf, 0x80000300, 0x00001fbf, 0x80000301, - 0x00001fbf, 0x80000342, 0x000003b9, 0x80000306, - 0x000003b9, 0x80000304, 0x000003ca, 0x80000300, - 0x80000390, 0x000003b9, 0x80000342, 0x000003ca, - 0x80000342, 0x00000399, 0x80000306, 0x00000399, - 0x80000304, 0x00000399, 0x80000300, 0x8000038a, - 0x00001ffe, 0x80000300, 0x00001ffe, 0x80000301, - 0x00001ffe, 0x80000342, 0x000003c5, 0x80000306, - 0x000003c5, 0x80000304, 0x000003cb, 0x80000300, - 0x800003b0, 0x000003c1, 0x80000313, 0x000003c1, - 0x80000314, 0x000003c5, 0x80000342, 0x000003cb, - 0x80000342, 0x000003a5, 0x80000306, 0x000003a5, - 0x80000304, 0x000003a5, 0x80000300, 0x8000038e, - 0x000003a1, 0x80000314, 0x000000a8, 0x80000300, - 0x80000385, 0x80000060, 0x00001f7c, 0x80000345, - 0x000003c9, 0x80000345, 0x000003ce, 0x80000345, - 0x000003c9, 0x80000342, 0x00001ff6, 0x80000345, - 0x0000039f, 0x80000300, 0x8000038c, 0x000003a9, - 0x80000300, 0x8000038f, 0x000003a9, 0x80000345, - 0x800000b4, 0x00000020, 0x80000314, 0x80002002, - 0x80002003, 0x80000020, 0x80000020, 0x80000020, - 0x80000020, 0x80000020, 0x80000020, 0x80000020, - 0x80000020, 0x80000020, 0x80002010, 0x00000020, - 0x80000333, 0x8000002e, 0x0000002e, 0x8000002e, - 0x0000002e, 0x0000002e, 0x8000002e, 0x80000020, - 0x00002032, 0x80002032, 0x00002032, 0x00002032, - 0x80002032, 0x00002035, 0x80002035, 0x00002035, - 0x00002035, 0x80002035, 0x00000021, 0x80000021, - 0x00000020, 0x80000305, 0x0000003f, 0x8000003f, - 0x0000003f, 0x80000021, 0x00000021, 0x8000003f, - 0x00002032, 0x00002032, 0x00002032, 0x80002032, - 0x80000020, 0x80000030, 0x80000069, 0x80000034, - 0x80000035, 0x80000036, 0x80000037, 0x80000038, - 0x80000039, 0x8000002b, 0x80002212, 0x8000003d, - 0x80000028, 0x80000029, 0x8000006e, 0x80000030, - 0x80000031, 0x80000032, 0x80000033, 0x80000034, - 0x80000035, 0x80000036, 0x80000037, 0x80000038, - 0x80000039, 0x8000002b, 0x80002212, 0x8000003d, - 0x80000028, 0x80000029, 0x80000061, 0x80000065, - 0x8000006f, 0x80000078, 0x80000259, 0x00000052, - 0x80000073, 0x00000061, 0x0000002f, 0x80000063, - 0x00000061, 0x0000002f, 0x80000073, 0x80000043, - 0x000000b0, 0x80000043, 0x00000063, 0x0000002f, - 0x8000006f, 0x00000063, 0x0000002f, 0x80000075, - 0x80000190, 0x000000b0, 0x80000046, 0x80000067, - 0x80000048, 0x80000048, 0x80000048, 0x80000068, - 0x80000127, 0x80000049, 0x80000049, 0x8000004c, - 0x8000006c, 0x8000004e, 0x0000004e, 0x8000006f, - 0x80000050, 0x80000051, 0x80000052, 0x80000052, - 0x80000052, 0x00000053, 0x8000004d, 0x00000054, - 0x00000045, 0x8000004c, 0x00000054, 0x8000004d, - 0x8000005a, 0x800003a9, 0x8000005a, 0x8000004b, - 0x800000c5, 0x80000042, 0x80000043, 0x80000065, - 0x80000045, 0x80000046, 0x8000004d, 0x8000006f, - 0x800005d0, 0x800005d1, 0x800005d2, 0x800005d3, - 0x80000069, 0x00000046, 0x00000041, 0x80000058, - 0x800003c0, 0x800003b3, 0x80000393, 0x800003a0, - 0x80002211, 0x80000044, 0x80000064, 0x80000065, - 0x80000069, 0x8000006a, 0x00000031, 0x00002044, - 0x80000033, 0x00000032, 0x00002044, 0x80000033, - 0x00000031, 0x00002044, 0x80000035, 0x00000032, - 0x00002044, 0x80000035, 0x00000033, 0x00002044, - 0x80000035, 0x00000034, 0x00002044, 0x80000035, - 0x00000031, 0x00002044, 0x80000036, 0x00000035, - 0x00002044, 0x80000036, 0x00000031, 0x00002044, - 0x80000038, 0x00000033, 0x00002044, 0x80000038, - 0x00000035, 0x00002044, 0x80000038, 0x00000037, - 0x00002044, 0x80000038, 0x00000031, 0x80002044, - 0x80000049, 0x00000049, 0x80000049, 0x00000049, - 0x00000049, 0x80000049, 0x00000049, 0x80000056, - 0x80000056, 0x00000056, 0x80000049, 0x00000056, - 0x00000049, 0x80000049, 0x00000056, 0x00000049, - 0x00000049, 0x80000049, 0x00000049, 0x80000058, - 0x80000058, 0x00000058, 0x80000049, 0x00000058, - 0x00000049, 0x80000049, 0x8000004c, 0x80000043, - 0x80000044, 0x8000004d, 0x80000069, 0x00000069, - 0x80000069, 0x00000069, 0x00000069, 0x80000069, - 0x00000069, 0x80000076, 0x80000076, 0x00000076, - 0x80000069, 0x00000076, 0x00000069, 0x80000069, - 0x00000076, 0x00000069, 0x00000069, 0x80000069, - 0x00000069, 0x80000078, 0x80000078, 0x00000078, - 0x80000069, 0x00000078, 0x00000069, 0x80000069, - 0x8000006c, 0x80000063, 0x80000064, 0x8000006d, - 0x00002190, 0x80000338, 0x00002192, 0x80000338, - 0x00002194, 0x80000338, 0x000021d0, 0x80000338, - 0x000021d4, 0x80000338, 0x000021d2, 0x80000338, - 0x00002203, 0x80000338, 0x00002208, 0x80000338, - 0x0000220b, 0x80000338, 0x00002223, 0x80000338, - 0x00002225, 0x80000338, 0x0000222b, 0x8000222b, - 0x0000222b, 0x0000222b, 0x8000222b, 0x0000222e, - 0x8000222e, 0x0000222e, 0x0000222e, 0x8000222e, - 0x0000223c, 0x80000338, 0x00002243, 0x80000338, - 0x00002245, 0x80000338, 0x00002248, 0x80000338, - 0x0000003d, 0x80000338, 0x00002261, 0x80000338, - 0x0000224d, 0x80000338, 0x0000003c, 0x80000338, - 0x0000003e, 0x80000338, 0x00002264, 0x80000338, - 0x00002265, 0x80000338, 0x00002272, 0x80000338, - 0x00002273, 0x80000338, 0x00002276, 0x80000338, - 0x00002277, 0x80000338, 0x0000227a, 0x80000338, - 0x0000227b, 0x80000338, 0x00002282, 0x80000338, - 0x00002283, 0x80000338, 0x00002286, 0x80000338, - 0x00002287, 0x80000338, 0x000022a2, 0x80000338, - 0x000022a8, 0x80000338, 0x000022a9, 0x80000338, - 0x000022ab, 0x80000338, 0x0000227c, 0x80000338, - 0x0000227d, 0x80000338, 0x00002291, 0x80000338, - 0x00002292, 0x80000338, 0x000022b2, 0x80000338, - 0x000022b3, 0x80000338, 0x000022b4, 0x80000338, - 0x000022b5, 0x80000338, 0x80003008, 0x80003009, - 0x80000031, 0x80000032, 0x80000033, 0x80000034, - 0x80000035, 0x80000036, 0x80000037, 0x80000038, - 0x80000039, 0x00000031, 0x80000030, 0x00000031, - 0x80000031, 0x00000031, 0x80000032, 0x00000031, - 0x80000033, 0x00000031, 0x80000034, 0x00000031, - 0x80000035, 0x00000031, 0x80000036, 0x00000031, - 0x80000037, 0x00000031, 0x80000038, 0x00000031, - 0x80000039, 0x00000032, 0x80000030, 0x00000028, - 0x00000031, 0x80000029, 0x00000028, 0x00000032, - 0x80000029, 0x00000028, 0x00000033, 0x80000029, - 0x00000028, 0x00000034, 0x80000029, 0x00000028, - 0x00000035, 0x80000029, 0x00000028, 0x00000036, - 0x80000029, 0x00000028, 0x00000037, 0x80000029, - 0x00000028, 0x00000038, 0x80000029, 0x00000028, - 0x00000039, 0x80000029, 0x00000028, 0x00000031, - 0x00000030, 0x80000029, 0x00000028, 0x00000031, - 0x00000031, 0x80000029, 0x00000028, 0x00000031, - 0x00000032, 0x80000029, 0x00000028, 0x00000031, - 0x00000033, 0x80000029, 0x00000028, 0x00000031, - 0x00000034, 0x80000029, 0x00000028, 0x00000031, - 0x00000035, 0x80000029, 0x00000028, 0x00000031, - 0x00000036, 0x80000029, 0x00000028, 0x00000031, - 0x00000037, 0x80000029, 0x00000028, 0x00000031, - 0x00000038, 0x80000029, 0x00000028, 0x00000031, - 0x00000039, 0x80000029, 0x00000028, 0x00000032, - 0x00000030, 0x80000029, 0x00000031, 0x8000002e, - 0x00000032, 0x8000002e, 0x00000033, 0x8000002e, - 0x00000034, 0x8000002e, 0x00000035, 0x8000002e, - 0x00000036, 0x8000002e, 0x00000037, 0x8000002e, - 0x00000038, 0x8000002e, 0x00000039, 0x8000002e, - 0x00000031, 0x00000030, 0x8000002e, 0x00000031, - 0x00000031, 0x8000002e, 0x00000031, 0x00000032, - 0x8000002e, 0x00000031, 0x00000033, 0x8000002e, - 0x00000031, 0x00000034, 0x8000002e, 0x00000031, - 0x00000035, 0x8000002e, 0x00000031, 0x00000036, - 0x8000002e, 0x00000031, 0x00000037, 0x8000002e, - 0x00000031, 0x00000038, 0x8000002e, 0x00000031, - 0x00000039, 0x8000002e, 0x00000032, 0x00000030, - 0x8000002e, 0x00000028, 0x00000061, 0x80000029, - 0x00000028, 0x00000062, 0x80000029, 0x00000028, - 0x00000063, 0x80000029, 0x00000028, 0x00000064, - 0x80000029, 0x00000028, 0x00000065, 0x80000029, - 0x00000028, 0x00000066, 0x80000029, 0x00000028, - 0x00000067, 0x80000029, 0x00000028, 0x00000068, - 0x80000029, 0x00000028, 0x00000069, 0x80000029, - 0x00000028, 0x0000006a, 0x80000029, 0x00000028, - 0x0000006b, 0x80000029, 0x00000028, 0x0000006c, - 0x80000029, 0x00000028, 0x0000006d, 0x80000029, - 0x00000028, 0x0000006e, 0x80000029, 0x00000028, - 0x0000006f, 0x80000029, 0x00000028, 0x00000070, - 0x80000029, 0x00000028, 0x00000071, 0x80000029, - 0x00000028, 0x00000072, 0x80000029, 0x00000028, - 0x00000073, 0x80000029, 0x00000028, 0x00000074, - 0x80000029, 0x00000028, 0x00000075, 0x80000029, - 0x00000028, 0x00000076, 0x80000029, 0x00000028, - 0x00000077, 0x80000029, 0x00000028, 0x00000078, - 0x80000029, 0x00000028, 0x00000079, 0x80000029, - 0x00000028, 0x0000007a, 0x80000029, 0x80000041, - 0x80000042, 0x80000043, 0x80000044, 0x80000045, - 0x80000046, 0x80000047, 0x80000048, 0x80000049, - 0x8000004a, 0x8000004b, 0x8000004c, 0x8000004d, - 0x8000004e, 0x8000004f, 0x80000050, 0x80000051, - 0x80000052, 0x80000053, 0x80000054, 0x80000055, - 0x80000056, 0x80000057, 0x80000058, 0x80000059, - 0x8000005a, 0x80000061, 0x80000062, 0x80000063, - 0x80000064, 0x80000065, 0x80000066, 0x80000067, - 0x80000068, 0x80000069, 0x8000006a, 0x8000006b, - 0x8000006c, 0x8000006d, 0x8000006e, 0x8000006f, - 0x80000070, 0x80000071, 0x80000072, 0x80000073, - 0x80000074, 0x80000075, 0x80000076, 0x80000077, - 0x80000078, 0x80000079, 0x8000007a, 0x80000030, - 0x0000222b, 0x0000222b, 0x0000222b, 0x8000222b, - 0x0000003a, 0x0000003a, 0x8000003d, 0x0000003d, - 0x8000003d, 0x0000003d, 0x0000003d, 0x8000003d, - 0x00002add, 0x80000338, 0x80002d61, 0x80006bcd, - 0x80009f9f, 0x80004e00, 0x80004e28, 0x80004e36, - 0x80004e3f, 0x80004e59, 0x80004e85, 0x80004e8c, - 0x80004ea0, 0x80004eba, 0x8000513f, 0x80005165, - 0x8000516b, 0x80005182, 0x80005196, 0x800051ab, - 0x800051e0, 0x800051f5, 0x80005200, 0x8000529b, - 0x800052f9, 0x80005315, 0x8000531a, 0x80005338, - 0x80005341, 0x8000535c, 0x80005369, 0x80005382, - 0x800053b6, 0x800053c8, 0x800053e3, 0x800056d7, - 0x8000571f, 0x800058eb, 0x80005902, 0x8000590a, - 0x80005915, 0x80005927, 0x80005973, 0x80005b50, - 0x80005b80, 0x80005bf8, 0x80005c0f, 0x80005c22, - 0x80005c38, 0x80005c6e, 0x80005c71, 0x80005ddb, - 0x80005de5, 0x80005df1, 0x80005dfe, 0x80005e72, - 0x80005e7a, 0x80005e7f, 0x80005ef4, 0x80005efe, - 0x80005f0b, 0x80005f13, 0x80005f50, 0x80005f61, - 0x80005f73, 0x80005fc3, 0x80006208, 0x80006236, - 0x8000624b, 0x8000652f, 0x80006534, 0x80006587, - 0x80006597, 0x800065a4, 0x800065b9, 0x800065e0, - 0x800065e5, 0x800066f0, 0x80006708, 0x80006728, - 0x80006b20, 0x80006b62, 0x80006b79, 0x80006bb3, - 0x80006bcb, 0x80006bd4, 0x80006bdb, 0x80006c0f, - 0x80006c14, 0x80006c34, 0x8000706b, 0x8000722a, - 0x80007236, 0x8000723b, 0x8000723f, 0x80007247, - 0x80007259, 0x8000725b, 0x800072ac, 0x80007384, - 0x80007389, 0x800074dc, 0x800074e6, 0x80007518, - 0x8000751f, 0x80007528, 0x80007530, 0x8000758b, - 0x80007592, 0x80007676, 0x8000767d, 0x800076ae, - 0x800076bf, 0x800076ee, 0x800077db, 0x800077e2, - 0x800077f3, 0x8000793a, 0x800079b8, 0x800079be, - 0x80007a74, 0x80007acb, 0x80007af9, 0x80007c73, - 0x80007cf8, 0x80007f36, 0x80007f51, 0x80007f8a, - 0x80007fbd, 0x80008001, 0x8000800c, 0x80008012, - 0x80008033, 0x8000807f, 0x80008089, 0x800081e3, - 0x800081ea, 0x800081f3, 0x800081fc, 0x8000820c, - 0x8000821b, 0x8000821f, 0x8000826e, 0x80008272, - 0x80008278, 0x8000864d, 0x8000866b, 0x80008840, - 0x8000884c, 0x80008863, 0x8000897e, 0x8000898b, - 0x800089d2, 0x80008a00, 0x80008c37, 0x80008c46, - 0x80008c55, 0x80008c78, 0x80008c9d, 0x80008d64, - 0x80008d70, 0x80008db3, 0x80008eab, 0x80008eca, - 0x80008f9b, 0x80008fb0, 0x80008fb5, 0x80009091, - 0x80009149, 0x800091c6, 0x800091cc, 0x800091d1, - 0x80009577, 0x80009580, 0x8000961c, 0x800096b6, - 0x800096b9, 0x800096e8, 0x80009751, 0x8000975e, - 0x80009762, 0x80009769, 0x800097cb, 0x800097ed, - 0x800097f3, 0x80009801, 0x800098a8, 0x800098db, - 0x800098df, 0x80009996, 0x80009999, 0x800099ac, - 0x80009aa8, 0x80009ad8, 0x80009adf, 0x80009b25, - 0x80009b2f, 0x80009b32, 0x80009b3c, 0x80009b5a, - 0x80009ce5, 0x80009e75, 0x80009e7f, 0x80009ea5, - 0x80009ebb, 0x80009ec3, 0x80009ecd, 0x80009ed1, - 0x80009ef9, 0x80009efd, 0x80009f0e, 0x80009f13, - 0x80009f20, 0x80009f3b, 0x80009f4a, 0x80009f52, - 0x80009f8d, 0x80009f9c, 0x80009fa0, 0x80000020, - 0x80003012, 0x80005341, 0x80005344, 0x80005345, - 0x0000304b, 0x80003099, 0x0000304d, 0x80003099, - 0x0000304f, 0x80003099, 0x00003051, 0x80003099, - 0x00003053, 0x80003099, 0x00003055, 0x80003099, - 0x00003057, 0x80003099, 0x00003059, 0x80003099, - 0x0000305b, 0x80003099, 0x0000305d, 0x80003099, - 0x0000305f, 0x80003099, 0x00003061, 0x80003099, - 0x00003064, 0x80003099, 0x00003066, 0x80003099, - 0x00003068, 0x80003099, 0x0000306f, 0x80003099, - 0x0000306f, 0x8000309a, 0x00003072, 0x80003099, - 0x00003072, 0x8000309a, 0x00003075, 0x80003099, - 0x00003075, 0x8000309a, 0x00003078, 0x80003099, - 0x00003078, 0x8000309a, 0x0000307b, 0x80003099, - 0x0000307b, 0x8000309a, 0x00003046, 0x80003099, - 0x00000020, 0x80003099, 0x00000020, 0x8000309a, - 0x0000309d, 0x80003099, 0x00003088, 0x8000308a, - 0x000030ab, 0x80003099, 0x000030ad, 0x80003099, - 0x000030af, 0x80003099, 0x000030b1, 0x80003099, - 0x000030b3, 0x80003099, 0x000030b5, 0x80003099, - 0x000030b7, 0x80003099, 0x000030b9, 0x80003099, - 0x000030bb, 0x80003099, 0x000030bd, 0x80003099, - 0x000030bf, 0x80003099, 0x000030c1, 0x80003099, - 0x000030c4, 0x80003099, 0x000030c6, 0x80003099, - 0x000030c8, 0x80003099, 0x000030cf, 0x80003099, - 0x000030cf, 0x8000309a, 0x000030d2, 0x80003099, - 0x000030d2, 0x8000309a, 0x000030d5, 0x80003099, - 0x000030d5, 0x8000309a, 0x000030d8, 0x80003099, - 0x000030d8, 0x8000309a, 0x000030db, 0x80003099, - 0x000030db, 0x8000309a, 0x000030a6, 0x80003099, - 0x000030ef, 0x80003099, 0x000030f0, 0x80003099, - 0x000030f1, 0x80003099, 0x000030f2, 0x80003099, - 0x000030fd, 0x80003099, 0x000030b3, 0x800030c8, - 0x80001100, 0x80001101, 0x800011aa, 0x80001102, - 0x800011ac, 0x800011ad, 0x80001103, 0x80001104, - 0x80001105, 0x800011b0, 0x800011b1, 0x800011b2, - 0x800011b3, 0x800011b4, 0x800011b5, 0x8000111a, - 0x80001106, 0x80001107, 0x80001108, 0x80001121, - 0x80001109, 0x8000110a, 0x8000110b, 0x8000110c, - 0x8000110d, 0x8000110e, 0x8000110f, 0x80001110, - 0x80001111, 0x80001112, 0x80001161, 0x80001162, - 0x80001163, 0x80001164, 0x80001165, 0x80001166, - 0x80001167, 0x80001168, 0x80001169, 0x8000116a, - 0x8000116b, 0x8000116c, 0x8000116d, 0x8000116e, - 0x8000116f, 0x80001170, 0x80001171, 0x80001172, - 0x80001173, 0x80001174, 0x80001175, 0x80001160, - 0x80001114, 0x80001115, 0x800011c7, 0x800011c8, - 0x800011cc, 0x800011ce, 0x800011d3, 0x800011d7, - 0x800011d9, 0x8000111c, 0x800011dd, 0x800011df, - 0x8000111d, 0x8000111e, 0x80001120, 0x80001122, - 0x80001123, 0x80001127, 0x80001129, 0x8000112b, - 0x8000112c, 0x8000112d, 0x8000112e, 0x8000112f, - 0x80001132, 0x80001136, 0x80001140, 0x80001147, - 0x8000114c, 0x800011f1, 0x800011f2, 0x80001157, - 0x80001158, 0x80001159, 0x80001184, 0x80001185, - 0x80001188, 0x80001191, 0x80001192, 0x80001194, - 0x8000119e, 0x800011a1, 0x80004e00, 0x80004e8c, - 0x80004e09, 0x800056db, 0x80004e0a, 0x80004e2d, - 0x80004e0b, 0x80007532, 0x80004e59, 0x80004e19, - 0x80004e01, 0x80005929, 0x80005730, 0x80004eba, - 0x00000028, 0x00001100, 0x80000029, 0x00000028, - 0x00001102, 0x80000029, 0x00000028, 0x00001103, - 0x80000029, 0x00000028, 0x00001105, 0x80000029, - 0x00000028, 0x00001106, 0x80000029, 0x00000028, - 0x00001107, 0x80000029, 0x00000028, 0x00001109, - 0x80000029, 0x00000028, 0x0000110b, 0x80000029, - 0x00000028, 0x0000110c, 0x80000029, 0x00000028, - 0x0000110e, 0x80000029, 0x00000028, 0x0000110f, - 0x80000029, 0x00000028, 0x00001110, 0x80000029, - 0x00000028, 0x00001111, 0x80000029, 0x00000028, - 0x00001112, 0x80000029, 0x00000028, 0x00001100, - 0x00001161, 0x80000029, 0x00000028, 0x00001102, - 0x00001161, 0x80000029, 0x00000028, 0x00001103, - 0x00001161, 0x80000029, 0x00000028, 0x00001105, - 0x00001161, 0x80000029, 0x00000028, 0x00001106, - 0x00001161, 0x80000029, 0x00000028, 0x00001107, - 0x00001161, 0x80000029, 0x00000028, 0x00001109, - 0x00001161, 0x80000029, 0x00000028, 0x0000110b, - 0x00001161, 0x80000029, 0x00000028, 0x0000110c, - 0x00001161, 0x80000029, 0x00000028, 0x0000110e, - 0x00001161, 0x80000029, 0x00000028, 0x0000110f, - 0x00001161, 0x80000029, 0x00000028, 0x00001110, - 0x00001161, 0x80000029, 0x00000028, 0x00001111, - 0x00001161, 0x80000029, 0x00000028, 0x00001112, - 0x00001161, 0x80000029, 0x00000028, 0x0000110c, - 0x0000116e, 0x80000029, 0x00000028, 0x0000110b, - 0x00001169, 0x0000110c, 0x00001165, 0x000011ab, - 0x80000029, 0x00000028, 0x0000110b, 0x00001169, - 0x00001112, 0x0000116e, 0x80000029, 0x00000028, - 0x00004e00, 0x80000029, 0x00000028, 0x00004e8c, - 0x80000029, 0x00000028, 0x00004e09, 0x80000029, - 0x00000028, 0x000056db, 0x80000029, 0x00000028, - 0x00004e94, 0x80000029, 0x00000028, 0x0000516d, - 0x80000029, 0x00000028, 0x00004e03, 0x80000029, - 0x00000028, 0x0000516b, 0x80000029, 0x00000028, - 0x00004e5d, 0x80000029, 0x00000028, 0x00005341, - 0x80000029, 0x00000028, 0x00006708, 0x80000029, - 0x00000028, 0x0000706b, 0x80000029, 0x00000028, - 0x00006c34, 0x80000029, 0x00000028, 0x00006728, - 0x80000029, 0x00000028, 0x000091d1, 0x80000029, - 0x00000028, 0x0000571f, 0x80000029, 0x00000028, - 0x000065e5, 0x80000029, 0x00000028, 0x0000682a, - 0x80000029, 0x00000028, 0x00006709, 0x80000029, - 0x00000028, 0x0000793e, 0x80000029, 0x00000028, - 0x0000540d, 0x80000029, 0x00000028, 0x00007279, - 0x80000029, 0x00000028, 0x00008ca1, 0x80000029, - 0x00000028, 0x0000795d, 0x80000029, 0x00000028, - 0x000052b4, 0x80000029, 0x00000028, 0x00004ee3, - 0x80000029, 0x00000028, 0x0000547c, 0x80000029, - 0x00000028, 0x00005b66, 0x80000029, 0x00000028, - 0x000076e3, 0x80000029, 0x00000028, 0x00004f01, - 0x80000029, 0x00000028, 0x00008cc7, 0x80000029, - 0x00000028, 0x00005354, 0x80000029, 0x00000028, - 0x0000796d, 0x80000029, 0x00000028, 0x00004f11, - 0x80000029, 0x00000028, 0x000081ea, 0x80000029, - 0x00000028, 0x000081f3, 0x80000029, 0x00000050, - 0x00000054, 0x80000045, 0x00000032, 0x80000031, - 0x00000032, 0x80000032, 0x00000032, 0x80000033, - 0x00000032, 0x80000034, 0x00000032, 0x80000035, - 0x00000032, 0x80000036, 0x00000032, 0x80000037, - 0x00000032, 0x80000038, 0x00000032, 0x80000039, - 0x00000033, 0x80000030, 0x00000033, 0x80000031, - 0x00000033, 0x80000032, 0x00000033, 0x80000033, - 0x00000033, 0x80000034, 0x00000033, 0x80000035, - 0x80001100, 0x80001102, 0x80001103, 0x80001105, - 0x80001106, 0x80001107, 0x80001109, 0x8000110b, - 0x8000110c, 0x8000110e, 0x8000110f, 0x80001110, - 0x80001111, 0x80001112, 0x00001100, 0x80001161, - 0x00001102, 0x80001161, 0x00001103, 0x80001161, - 0x00001105, 0x80001161, 0x00001106, 0x80001161, - 0x00001107, 0x80001161, 0x00001109, 0x80001161, - 0x0000110b, 0x80001161, 0x0000110c, 0x80001161, - 0x0000110e, 0x80001161, 0x0000110f, 0x80001161, - 0x00001110, 0x80001161, 0x00001111, 0x80001161, - 0x00001112, 0x80001161, 0x0000110e, 0x00001161, - 0x000011b7, 0x00001100, 0x80001169, 0x0000110c, - 0x0000116e, 0x0000110b, 0x80001174, 0x0000110b, - 0x8000116e, 0x80004e00, 0x80004e8c, 0x80004e09, - 0x800056db, 0x80004e94, 0x8000516d, 0x80004e03, - 0x8000516b, 0x80004e5d, 0x80005341, 0x80006708, - 0x8000706b, 0x80006c34, 0x80006728, 0x800091d1, - 0x8000571f, 0x800065e5, 0x8000682a, 0x80006709, - 0x8000793e, 0x8000540d, 0x80007279, 0x80008ca1, - 0x8000795d, 0x800052b4, 0x800079d8, 0x80007537, - 0x80005973, 0x80009069, 0x8000512a, 0x80005370, - 0x80006ce8, 0x80009805, 0x80004f11, 0x80005199, - 0x80006b63, 0x80004e0a, 0x80004e2d, 0x80004e0b, - 0x80005de6, 0x800053f3, 0x8000533b, 0x80005b97, - 0x80005b66, 0x800076e3, 0x80004f01, 0x80008cc7, - 0x80005354, 0x8000591c, 0x00000033, 0x80000036, - 0x00000033, 0x80000037, 0x00000033, 0x80000038, - 0x00000033, 0x80000039, 0x00000034, 0x80000030, - 0x00000034, 0x80000031, 0x00000034, 0x80000032, - 0x00000034, 0x80000033, 0x00000034, 0x80000034, - 0x00000034, 0x80000035, 0x00000034, 0x80000036, - 0x00000034, 0x80000037, 0x00000034, 0x80000038, - 0x00000034, 0x80000039, 0x00000035, 0x80000030, - 0x00000031, 0x80006708, 0x00000032, 0x80006708, - 0x00000033, 0x80006708, 0x00000034, 0x80006708, - 0x00000035, 0x80006708, 0x00000036, 0x80006708, - 0x00000037, 0x80006708, 0x00000038, 0x80006708, - 0x00000039, 0x80006708, 0x00000031, 0x00000030, - 0x80006708, 0x00000031, 0x00000031, 0x80006708, - 0x00000031, 0x00000032, 0x80006708, 0x00000048, - 0x80000067, 0x00000065, 0x00000072, 0x80000067, - 0x00000065, 0x80000056, 0x0000004c, 0x00000054, - 0x80000044, 0x800030a2, 0x800030a4, 0x800030a6, - 0x800030a8, 0x800030aa, 0x800030ab, 0x800030ad, - 0x800030af, 0x800030b1, 0x800030b3, 0x800030b5, - 0x800030b7, 0x800030b9, 0x800030bb, 0x800030bd, - 0x800030bf, 0x800030c1, 0x800030c4, 0x800030c6, - 0x800030c8, 0x800030ca, 0x800030cb, 0x800030cc, - 0x800030cd, 0x800030ce, 0x800030cf, 0x800030d2, - 0x800030d5, 0x800030d8, 0x800030db, 0x800030de, - 0x800030df, 0x800030e0, 0x800030e1, 0x800030e2, - 0x800030e4, 0x800030e6, 0x800030e8, 0x800030e9, - 0x800030ea, 0x800030eb, 0x800030ec, 0x800030ed, - 0x800030ef, 0x800030f0, 0x800030f1, 0x800030f2, - 0x000030a2, 0x000030d1, 0x000030fc, 0x800030c8, - 0x000030a2, 0x000030eb, 0x000030d5, 0x800030a1, - 0x000030a2, 0x000030f3, 0x000030da, 0x800030a2, - 0x000030a2, 0x000030fc, 0x800030eb, 0x000030a4, - 0x000030cb, 0x000030f3, 0x800030b0, 0x000030a4, - 0x000030f3, 0x800030c1, 0x000030a6, 0x000030a9, - 0x800030f3, 0x000030a8, 0x000030b9, 0x000030af, - 0x000030fc, 0x800030c9, 0x000030a8, 0x000030fc, - 0x000030ab, 0x800030fc, 0x000030aa, 0x000030f3, - 0x800030b9, 0x000030aa, 0x000030fc, 0x800030e0, - 0x000030ab, 0x000030a4, 0x800030ea, 0x000030ab, - 0x000030e9, 0x000030c3, 0x800030c8, 0x000030ab, - 0x000030ed, 0x000030ea, 0x800030fc, 0x000030ac, - 0x000030ed, 0x800030f3, 0x000030ac, 0x000030f3, - 0x800030de, 0x000030ae, 0x800030ac, 0x000030ae, - 0x000030cb, 0x800030fc, 0x000030ad, 0x000030e5, - 0x000030ea, 0x800030fc, 0x000030ae, 0x000030eb, - 0x000030c0, 0x800030fc, 0x000030ad, 0x800030ed, - 0x000030ad, 0x000030ed, 0x000030b0, 0x000030e9, - 0x800030e0, 0x000030ad, 0x000030ed, 0x000030e1, - 0x000030fc, 0x000030c8, 0x800030eb, 0x000030ad, - 0x000030ed, 0x000030ef, 0x000030c3, 0x800030c8, - 0x000030b0, 0x000030e9, 0x800030e0, 0x000030b0, - 0x000030e9, 0x000030e0, 0x000030c8, 0x800030f3, - 0x000030af, 0x000030eb, 0x000030bc, 0x000030a4, - 0x800030ed, 0x000030af, 0x000030ed, 0x000030fc, - 0x800030cd, 0x000030b1, 0x000030fc, 0x800030b9, - 0x000030b3, 0x000030eb, 0x800030ca, 0x000030b3, - 0x000030fc, 0x800030dd, 0x000030b5, 0x000030a4, - 0x000030af, 0x800030eb, 0x000030b5, 0x000030f3, - 0x000030c1, 0x000030fc, 0x800030e0, 0x000030b7, - 0x000030ea, 0x000030f3, 0x800030b0, 0x000030bb, - 0x000030f3, 0x800030c1, 0x000030bb, 0x000030f3, - 0x800030c8, 0x000030c0, 0x000030fc, 0x800030b9, - 0x000030c7, 0x800030b7, 0x000030c9, 0x800030eb, - 0x000030c8, 0x800030f3, 0x000030ca, 0x800030ce, - 0x000030ce, 0x000030c3, 0x800030c8, 0x000030cf, - 0x000030a4, 0x800030c4, 0x000030d1, 0x000030fc, - 0x000030bb, 0x000030f3, 0x800030c8, 0x000030d1, - 0x000030fc, 0x800030c4, 0x000030d0, 0x000030fc, - 0x000030ec, 0x800030eb, 0x000030d4, 0x000030a2, - 0x000030b9, 0x000030c8, 0x800030eb, 0x000030d4, - 0x000030af, 0x800030eb, 0x000030d4, 0x800030b3, - 0x000030d3, 0x800030eb, 0x000030d5, 0x000030a1, - 0x000030e9, 0x000030c3, 0x800030c9, 0x000030d5, - 0x000030a3, 0x000030fc, 0x800030c8, 0x000030d6, - 0x000030c3, 0x000030b7, 0x000030a7, 0x800030eb, - 0x000030d5, 0x000030e9, 0x800030f3, 0x000030d8, - 0x000030af, 0x000030bf, 0x000030fc, 0x800030eb, - 0x000030da, 0x800030bd, 0x000030da, 0x000030cb, - 0x800030d2, 0x000030d8, 0x000030eb, 0x800030c4, - 0x000030da, 0x000030f3, 0x800030b9, 0x000030da, - 0x000030fc, 0x800030b8, 0x000030d9, 0x000030fc, - 0x800030bf, 0x000030dd, 0x000030a4, 0x000030f3, - 0x800030c8, 0x000030dc, 0x000030eb, 0x800030c8, - 0x000030db, 0x800030f3, 0x000030dd, 0x000030f3, - 0x800030c9, 0x000030db, 0x000030fc, 0x800030eb, - 0x000030db, 0x000030fc, 0x800030f3, 0x000030de, - 0x000030a4, 0x000030af, 0x800030ed, 0x000030de, - 0x000030a4, 0x800030eb, 0x000030de, 0x000030c3, - 0x800030cf, 0x000030de, 0x000030eb, 0x800030af, - 0x000030de, 0x000030f3, 0x000030b7, 0x000030e7, - 0x800030f3, 0x000030df, 0x000030af, 0x000030ed, - 0x800030f3, 0x000030df, 0x800030ea, 0x000030df, - 0x000030ea, 0x000030d0, 0x000030fc, 0x800030eb, - 0x000030e1, 0x800030ac, 0x000030e1, 0x000030ac, - 0x000030c8, 0x800030f3, 0x000030e1, 0x000030fc, - 0x000030c8, 0x800030eb, 0x000030e4, 0x000030fc, - 0x800030c9, 0x000030e4, 0x000030fc, 0x800030eb, - 0x000030e6, 0x000030a2, 0x800030f3, 0x000030ea, - 0x000030c3, 0x000030c8, 0x800030eb, 0x000030ea, - 0x800030e9, 0x000030eb, 0x000030d4, 0x800030fc, - 0x000030eb, 0x000030fc, 0x000030d6, 0x800030eb, - 0x000030ec, 0x800030e0, 0x000030ec, 0x000030f3, - 0x000030c8, 0x000030b2, 0x800030f3, 0x000030ef, - 0x000030c3, 0x800030c8, 0x00000030, 0x800070b9, - 0x00000031, 0x800070b9, 0x00000032, 0x800070b9, - 0x00000033, 0x800070b9, 0x00000034, 0x800070b9, - 0x00000035, 0x800070b9, 0x00000036, 0x800070b9, - 0x00000037, 0x800070b9, 0x00000038, 0x800070b9, - 0x00000039, 0x800070b9, 0x00000031, 0x00000030, - 0x800070b9, 0x00000031, 0x00000031, 0x800070b9, - 0x00000031, 0x00000032, 0x800070b9, 0x00000031, - 0x00000033, 0x800070b9, 0x00000031, 0x00000034, - 0x800070b9, 0x00000031, 0x00000035, 0x800070b9, - 0x00000031, 0x00000036, 0x800070b9, 0x00000031, - 0x00000037, 0x800070b9, 0x00000031, 0x00000038, - 0x800070b9, 0x00000031, 0x00000039, 0x800070b9, - 0x00000032, 0x00000030, 0x800070b9, 0x00000032, - 0x00000031, 0x800070b9, 0x00000032, 0x00000032, - 0x800070b9, 0x00000032, 0x00000033, 0x800070b9, - 0x00000032, 0x00000034, 0x800070b9, 0x00000068, - 0x00000050, 0x80000061, 0x00000064, 0x80000061, - 0x00000041, 0x80000055, 0x00000062, 0x00000061, - 0x80000072, 0x0000006f, 0x80000056, 0x00000070, - 0x80000063, 0x00000064, 0x8000006d, 0x00000064, - 0x0000006d, 0x800000b2, 0x00000064, 0x0000006d, - 0x800000b3, 0x00000049, 0x80000055, 0x00005e73, - 0x80006210, 0x0000662d, 0x8000548c, 0x00005927, - 0x80006b63, 0x0000660e, 0x80006cbb, 0x0000682a, - 0x00005f0f, 0x00004f1a, 0x8000793e, 0x00000070, - 0x80000041, 0x0000006e, 0x80000041, 0x000003bc, - 0x80000041, 0x0000006d, 0x80000041, 0x0000006b, - 0x80000041, 0x0000004b, 0x80000042, 0x0000004d, - 0x80000042, 0x00000047, 0x80000042, 0x00000063, - 0x00000061, 0x8000006c, 0x0000006b, 0x00000063, - 0x00000061, 0x8000006c, 0x00000070, 0x80000046, - 0x0000006e, 0x80000046, 0x000003bc, 0x80000046, - 0x000003bc, 0x80000067, 0x0000006d, 0x80000067, - 0x0000006b, 0x80000067, 0x00000048, 0x8000007a, - 0x0000006b, 0x00000048, 0x8000007a, 0x0000004d, - 0x00000048, 0x8000007a, 0x00000047, 0x00000048, - 0x8000007a, 0x00000054, 0x00000048, 0x8000007a, - 0x000003bc, 0x80002113, 0x0000006d, 0x80002113, - 0x00000064, 0x80002113, 0x0000006b, 0x80002113, - 0x00000066, 0x8000006d, 0x0000006e, 0x8000006d, - 0x000003bc, 0x8000006d, 0x0000006d, 0x8000006d, - 0x00000063, 0x8000006d, 0x0000006b, 0x8000006d, - 0x0000006d, 0x0000006d, 0x800000b2, 0x00000063, - 0x0000006d, 0x800000b2, 0x0000006d, 0x800000b2, - 0x0000006b, 0x0000006d, 0x800000b2, 0x0000006d, - 0x0000006d, 0x800000b3, 0x00000063, 0x0000006d, - 0x800000b3, 0x0000006d, 0x800000b3, 0x0000006b, - 0x0000006d, 0x800000b3, 0x0000006d, 0x00002215, - 0x80000073, 0x0000006d, 0x00002215, 0x00000073, - 0x800000b2, 0x00000050, 0x80000061, 0x0000006b, - 0x00000050, 0x80000061, 0x0000004d, 0x00000050, - 0x80000061, 0x00000047, 0x00000050, 0x80000061, - 0x00000072, 0x00000061, 0x80000064, 0x00000072, - 0x00000061, 0x00000064, 0x00002215, 0x80000073, - 0x00000072, 0x00000061, 0x00000064, 0x00002215, - 0x00000073, 0x800000b2, 0x00000070, 0x80000073, - 0x0000006e, 0x80000073, 0x000003bc, 0x80000073, - 0x0000006d, 0x80000073, 0x00000070, 0x80000056, - 0x0000006e, 0x80000056, 0x000003bc, 0x80000056, - 0x0000006d, 0x80000056, 0x0000006b, 0x80000056, - 0x0000004d, 0x80000056, 0x00000070, 0x80000057, - 0x0000006e, 0x80000057, 0x000003bc, 0x80000057, - 0x0000006d, 0x80000057, 0x0000006b, 0x80000057, - 0x0000004d, 0x80000057, 0x0000006b, 0x800003a9, - 0x0000004d, 0x800003a9, 0x00000061, 0x0000002e, - 0x0000006d, 0x8000002e, 0x00000042, 0x80000071, - 0x00000063, 0x80000063, 0x00000063, 0x80000064, - 0x00000043, 0x00002215, 0x0000006b, 0x80000067, - 0x00000043, 0x0000006f, 0x8000002e, 0x00000064, - 0x80000042, 0x00000047, 0x80000079, 0x00000068, - 0x80000061, 0x00000048, 0x80000050, 0x00000069, - 0x8000006e, 0x0000004b, 0x8000004b, 0x0000004b, - 0x8000004d, 0x0000006b, 0x80000074, 0x0000006c, - 0x8000006d, 0x0000006c, 0x8000006e, 0x0000006c, - 0x0000006f, 0x80000067, 0x0000006c, 0x80000078, - 0x0000006d, 0x80000062, 0x0000006d, 0x00000069, - 0x8000006c, 0x0000006d, 0x0000006f, 0x8000006c, - 0x00000050, 0x80000048, 0x00000070, 0x0000002e, - 0x0000006d, 0x8000002e, 0x00000050, 0x00000050, - 0x8000004d, 0x00000050, 0x80000052, 0x00000073, - 0x80000072, 0x00000053, 0x80000076, 0x00000057, - 0x80000062, 0x00000056, 0x00002215, 0x8000006d, - 0x00000041, 0x00002215, 0x8000006d, 0x00000031, - 0x800065e5, 0x00000032, 0x800065e5, 0x00000033, - 0x800065e5, 0x00000034, 0x800065e5, 0x00000035, - 0x800065e5, 0x00000036, 0x800065e5, 0x00000037, - 0x800065e5, 0x00000038, 0x800065e5, 0x00000039, - 0x800065e5, 0x00000031, 0x00000030, 0x800065e5, - 0x00000031, 0x00000031, 0x800065e5, 0x00000031, - 0x00000032, 0x800065e5, 0x00000031, 0x00000033, - 0x800065e5, 0x00000031, 0x00000034, 0x800065e5, - 0x00000031, 0x00000035, 0x800065e5, 0x00000031, - 0x00000036, 0x800065e5, 0x00000031, 0x00000037, - 0x800065e5, 0x00000031, 0x00000038, 0x800065e5, - 0x00000031, 0x00000039, 0x800065e5, 0x00000032, - 0x00000030, 0x800065e5, 0x00000032, 0x00000031, - 0x800065e5, 0x00000032, 0x00000032, 0x800065e5, - 0x00000032, 0x00000033, 0x800065e5, 0x00000032, - 0x00000034, 0x800065e5, 0x00000032, 0x00000035, - 0x800065e5, 0x00000032, 0x00000036, 0x800065e5, - 0x00000032, 0x00000037, 0x800065e5, 0x00000032, - 0x00000038, 0x800065e5, 0x00000032, 0x00000039, - 0x800065e5, 0x00000033, 0x00000030, 0x800065e5, - 0x00000033, 0x00000031, 0x800065e5, 0x00000067, - 0x00000061, 0x8000006c, 0x80008c48, 0x800066f4, - 0x80008eca, 0x80008cc8, 0x80006ed1, 0x80004e32, - 0x800053e5, 0x80009f9c, 0x80009f9c, 0x80005951, - 0x800091d1, 0x80005587, 0x80005948, 0x800061f6, - 0x80007669, 0x80007f85, 0x8000863f, 0x800087ba, - 0x800088f8, 0x8000908f, 0x80006a02, 0x80006d1b, - 0x800070d9, 0x800073de, 0x8000843d, 0x8000916a, - 0x800099f1, 0x80004e82, 0x80005375, 0x80006b04, - 0x8000721b, 0x8000862d, 0x80009e1e, 0x80005d50, - 0x80006feb, 0x800085cd, 0x80008964, 0x800062c9, - 0x800081d8, 0x8000881f, 0x80005eca, 0x80006717, - 0x80006d6a, 0x800072fc, 0x800090ce, 0x80004f86, - 0x800051b7, 0x800052de, 0x800064c4, 0x80006ad3, - 0x80007210, 0x800076e7, 0x80008001, 0x80008606, - 0x8000865c, 0x80008def, 0x80009732, 0x80009b6f, - 0x80009dfa, 0x8000788c, 0x8000797f, 0x80007da0, - 0x800083c9, 0x80009304, 0x80009e7f, 0x80008ad6, - 0x800058df, 0x80005f04, 0x80007c60, 0x8000807e, - 0x80007262, 0x800078ca, 0x80008cc2, 0x800096f7, - 0x800058d8, 0x80005c62, 0x80006a13, 0x80006dda, - 0x80006f0f, 0x80007d2f, 0x80007e37, 0x8000964b, - 0x800052d2, 0x8000808b, 0x800051dc, 0x800051cc, - 0x80007a1c, 0x80007dbe, 0x800083f1, 0x80009675, - 0x80008b80, 0x800062cf, 0x80006a02, 0x80008afe, - 0x80004e39, 0x80005be7, 0x80006012, 0x80007387, - 0x80007570, 0x80005317, 0x800078fb, 0x80004fbf, - 0x80005fa9, 0x80004e0d, 0x80006ccc, 0x80006578, - 0x80007d22, 0x800053c3, 0x8000585e, 0x80007701, - 0x80008449, 0x80008aaa, 0x80006bba, 0x80008fb0, - 0x80006c88, 0x800062fe, 0x800082e5, 0x800063a0, - 0x80007565, 0x80004eae, 0x80005169, 0x800051c9, - 0x80006881, 0x80007ce7, 0x8000826f, 0x80008ad2, - 0x800091cf, 0x800052f5, 0x80005442, 0x80005973, - 0x80005eec, 0x800065c5, 0x80006ffe, 0x8000792a, - 0x800095ad, 0x80009a6a, 0x80009e97, 0x80009ece, - 0x8000529b, 0x800066c6, 0x80006b77, 0x80008f62, - 0x80005e74, 0x80006190, 0x80006200, 0x8000649a, - 0x80006f23, 0x80007149, 0x80007489, 0x800079ca, - 0x80007df4, 0x8000806f, 0x80008f26, 0x800084ee, - 0x80009023, 0x8000934a, 0x80005217, 0x800052a3, - 0x800054bd, 0x800070c8, 0x800088c2, 0x80008aaa, - 0x80005ec9, 0x80005ff5, 0x8000637b, 0x80006bae, - 0x80007c3e, 0x80007375, 0x80004ee4, 0x800056f9, - 0x80005be7, 0x80005dba, 0x8000601c, 0x800073b2, - 0x80007469, 0x80007f9a, 0x80008046, 0x80009234, - 0x800096f6, 0x80009748, 0x80009818, 0x80004f8b, - 0x800079ae, 0x800091b4, 0x800096b8, 0x800060e1, - 0x80004e86, 0x800050da, 0x80005bee, 0x80005c3f, - 0x80006599, 0x80006a02, 0x800071ce, 0x80007642, - 0x800084fc, 0x8000907c, 0x80009f8d, 0x80006688, - 0x8000962e, 0x80005289, 0x8000677b, 0x800067f3, - 0x80006d41, 0x80006e9c, 0x80007409, 0x80007559, - 0x8000786b, 0x80007d10, 0x8000985e, 0x8000516d, - 0x8000622e, 0x80009678, 0x8000502b, 0x80005d19, - 0x80006dea, 0x80008f2a, 0x80005f8b, 0x80006144, - 0x80006817, 0x80007387, 0x80009686, 0x80005229, - 0x8000540f, 0x80005c65, 0x80006613, 0x8000674e, - 0x800068a8, 0x80006ce5, 0x80007406, 0x800075e2, - 0x80007f79, 0x800088cf, 0x800088e1, 0x800091cc, - 0x800096e2, 0x8000533f, 0x80006eba, 0x8000541d, - 0x800071d0, 0x80007498, 0x800085fa, 0x800096a3, - 0x80009c57, 0x80009e9f, 0x80006797, 0x80006dcb, - 0x800081e8, 0x80007acb, 0x80007b20, 0x80007c92, - 0x800072c0, 0x80007099, 0x80008b58, 0x80004ec0, - 0x80008336, 0x8000523a, 0x80005207, 0x80005ea6, - 0x800062d3, 0x80007cd6, 0x80005b85, 0x80006d1e, - 0x800066b4, 0x80008f3b, 0x8000884c, 0x8000964d, - 0x8000898b, 0x80005ed3, 0x80005140, 0x800055c0, - 0x8000585a, 0x80006674, 0x800051de, 0x8000732a, - 0x800076ca, 0x8000793c, 0x8000795e, 0x80007965, - 0x8000798f, 0x80009756, 0x80007cbe, 0x80007fbd, - 0x80008612, 0x80008af8, 0x80009038, 0x800090fd, - 0x800098ef, 0x800098fc, 0x80009928, 0x80009db4, - 0x80004fae, 0x800050e7, 0x8000514d, 0x800052c9, - 0x800052e4, 0x80005351, 0x8000559d, 0x80005606, - 0x80005668, 0x80005840, 0x800058a8, 0x80005c64, - 0x80005c6e, 0x80006094, 0x80006168, 0x8000618e, - 0x800061f2, 0x8000654f, 0x800065e2, 0x80006691, - 0x80006885, 0x80006d77, 0x80006e1a, 0x80006f22, - 0x8000716e, 0x8000722b, 0x80007422, 0x80007891, - 0x8000793e, 0x80007949, 0x80007948, 0x80007950, - 0x80007956, 0x8000795d, 0x8000798d, 0x8000798e, - 0x80007a40, 0x80007a81, 0x80007bc0, 0x80007df4, - 0x80007e09, 0x80007e41, 0x80007f72, 0x80008005, - 0x800081ed, 0x80008279, 0x80008279, 0x80008457, - 0x80008910, 0x80008996, 0x80008b01, 0x80008b39, - 0x80008cd3, 0x80008d08, 0x80008fb6, 0x80009038, - 0x800096e3, 0x800097ff, 0x8000983b, 0x80004e26, - 0x800051b5, 0x80005168, 0x80004f80, 0x80005145, - 0x80005180, 0x800052c7, 0x800052fa, 0x8000559d, - 0x80005555, 0x80005599, 0x800055e2, 0x8000585a, - 0x800058b3, 0x80005944, 0x80005954, 0x80005a62, - 0x80005b28, 0x80005ed2, 0x80005ed9, 0x80005f69, - 0x80005fad, 0x800060d8, 0x8000614e, 0x80006108, - 0x8000618e, 0x80006160, 0x800061f2, 0x80006234, - 0x800063c4, 0x8000641c, 0x80006452, 0x80006556, - 0x80006674, 0x80006717, 0x8000671b, 0x80006756, - 0x80006b79, 0x80006bba, 0x80006d41, 0x80006edb, - 0x80006ecb, 0x80006f22, 0x8000701e, 0x8000716e, - 0x800077a7, 0x80007235, 0x800072af, 0x8000732a, - 0x80007471, 0x80007506, 0x8000753b, 0x8000761d, - 0x8000761f, 0x800076ca, 0x800076db, 0x800076f4, - 0x8000774a, 0x80007740, 0x800078cc, 0x80007ab1, - 0x80007bc0, 0x80007c7b, 0x80007d5b, 0x80007df4, - 0x80007f3e, 0x80008005, 0x80008352, 0x800083ef, - 0x80008779, 0x80008941, 0x80008986, 0x80008996, - 0x80008abf, 0x80008af8, 0x80008acb, 0x80008b01, - 0x80008afe, 0x80008aed, 0x80008b39, 0x80008b8a, - 0x80008d08, 0x80008f38, 0x80009072, 0x80009199, - 0x80009276, 0x8000967c, 0x800096e3, 0x80009756, - 0x800097db, 0x800097ff, 0x8000980b, 0x8000983b, - 0x80009b12, 0x80009f9c, 0x8002284a, 0x80022844, - 0x800233d5, 0x80003b9d, 0x80004018, 0x80004039, - 0x80025249, 0x80025cd0, 0x80027ed3, 0x80009f43, - 0x80009f8e, 0x00000066, 0x80000066, 0x00000066, - 0x80000069, 0x00000066, 0x8000006c, 0x00000066, - 0x00000066, 0x80000069, 0x00000066, 0x00000066, - 0x8000006c, 0x0000017f, 0x80000074, 0x00000073, - 0x80000074, 0x00000574, 0x80000576, 0x00000574, - 0x80000565, 0x00000574, 0x8000056b, 0x0000057e, - 0x80000576, 0x00000574, 0x8000056d, 0x000005d9, - 0x800005b4, 0x000005f2, 0x800005b7, 0x800005e2, - 0x800005d0, 0x800005d3, 0x800005d4, 0x800005db, - 0x800005dc, 0x800005dd, 0x800005e8, 0x800005ea, - 0x8000002b, 0x000005e9, 0x800005c1, 0x000005e9, - 0x800005c2, 0x0000fb49, 0x800005c1, 0x0000fb49, - 0x800005c2, 0x000005d0, 0x800005b7, 0x000005d0, - 0x800005b8, 0x000005d0, 0x800005bc, 0x000005d1, - 0x800005bc, 0x000005d2, 0x800005bc, 0x000005d3, - 0x800005bc, 0x000005d4, 0x800005bc, 0x000005d5, - 0x800005bc, 0x000005d6, 0x800005bc, 0x000005d8, - 0x800005bc, 0x000005d9, 0x800005bc, 0x000005da, - 0x800005bc, 0x000005db, 0x800005bc, 0x000005dc, - 0x800005bc, 0x000005de, 0x800005bc, 0x000005e0, - 0x800005bc, 0x000005e1, 0x800005bc, 0x000005e3, - 0x800005bc, 0x000005e4, 0x800005bc, 0x000005e6, - 0x800005bc, 0x000005e7, 0x800005bc, 0x000005e8, - 0x800005bc, 0x000005e9, 0x800005bc, 0x000005ea, - 0x800005bc, 0x000005d5, 0x800005b9, 0x000005d1, - 0x800005bf, 0x000005db, 0x800005bf, 0x000005e4, - 0x800005bf, 0x000005d0, 0x800005dc, 0x80000671, - 0x80000671, 0x8000067b, 0x8000067b, 0x8000067b, - 0x8000067b, 0x8000067e, 0x8000067e, 0x8000067e, - 0x8000067e, 0x80000680, 0x80000680, 0x80000680, - 0x80000680, 0x8000067a, 0x8000067a, 0x8000067a, - 0x8000067a, 0x8000067f, 0x8000067f, 0x8000067f, - 0x8000067f, 0x80000679, 0x80000679, 0x80000679, - 0x80000679, 0x800006a4, 0x800006a4, 0x800006a4, - 0x800006a4, 0x800006a6, 0x800006a6, 0x800006a6, - 0x800006a6, 0x80000684, 0x80000684, 0x80000684, - 0x80000684, 0x80000683, 0x80000683, 0x80000683, - 0x80000683, 0x80000686, 0x80000686, 0x80000686, - 0x80000686, 0x80000687, 0x80000687, 0x80000687, - 0x80000687, 0x8000068d, 0x8000068d, 0x8000068c, - 0x8000068c, 0x8000068e, 0x8000068e, 0x80000688, - 0x80000688, 0x80000698, 0x80000698, 0x80000691, - 0x80000691, 0x800006a9, 0x800006a9, 0x800006a9, - 0x800006a9, 0x800006af, 0x800006af, 0x800006af, - 0x800006af, 0x800006b3, 0x800006b3, 0x800006b3, - 0x800006b3, 0x800006b1, 0x800006b1, 0x800006b1, - 0x800006b1, 0x800006ba, 0x800006ba, 0x800006bb, - 0x800006bb, 0x800006bb, 0x800006bb, 0x800006c0, - 0x800006c0, 0x800006c1, 0x800006c1, 0x800006c1, - 0x800006c1, 0x800006be, 0x800006be, 0x800006be, - 0x800006be, 0x800006d2, 0x800006d2, 0x800006d3, - 0x800006d3, 0x800006ad, 0x800006ad, 0x800006ad, - 0x800006ad, 0x800006c7, 0x800006c7, 0x800006c6, - 0x800006c6, 0x800006c8, 0x800006c8, 0x80000677, - 0x800006cb, 0x800006cb, 0x800006c5, 0x800006c5, - 0x800006c9, 0x800006c9, 0x800006d0, 0x800006d0, - 0x800006d0, 0x800006d0, 0x80000649, 0x80000649, - 0x00000626, 0x80000627, 0x00000626, 0x80000627, - 0x00000626, 0x800006d5, 0x00000626, 0x800006d5, - 0x00000626, 0x80000648, 0x00000626, 0x80000648, - 0x00000626, 0x800006c7, 0x00000626, 0x800006c7, - 0x00000626, 0x800006c6, 0x00000626, 0x800006c6, - 0x00000626, 0x800006c8, 0x00000626, 0x800006c8, - 0x00000626, 0x800006d0, 0x00000626, 0x800006d0, - 0x00000626, 0x800006d0, 0x00000626, 0x80000649, - 0x00000626, 0x80000649, 0x00000626, 0x80000649, - 0x800006cc, 0x800006cc, 0x800006cc, 0x800006cc, - 0x00000626, 0x8000062c, 0x00000626, 0x8000062d, - 0x00000626, 0x80000645, 0x00000626, 0x80000649, - 0x00000626, 0x8000064a, 0x00000628, 0x8000062c, - 0x00000628, 0x8000062d, 0x00000628, 0x8000062e, - 0x00000628, 0x80000645, 0x00000628, 0x80000649, - 0x00000628, 0x8000064a, 0x0000062a, 0x8000062c, - 0x0000062a, 0x8000062d, 0x0000062a, 0x8000062e, - 0x0000062a, 0x80000645, 0x0000062a, 0x80000649, - 0x0000062a, 0x8000064a, 0x0000062b, 0x8000062c, - 0x0000062b, 0x80000645, 0x0000062b, 0x80000649, - 0x0000062b, 0x8000064a, 0x0000062c, 0x8000062d, - 0x0000062c, 0x80000645, 0x0000062d, 0x8000062c, - 0x0000062d, 0x80000645, 0x0000062e, 0x8000062c, - 0x0000062e, 0x8000062d, 0x0000062e, 0x80000645, - 0x00000633, 0x8000062c, 0x00000633, 0x8000062d, - 0x00000633, 0x8000062e, 0x00000633, 0x80000645, - 0x00000635, 0x8000062d, 0x00000635, 0x80000645, - 0x00000636, 0x8000062c, 0x00000636, 0x8000062d, - 0x00000636, 0x8000062e, 0x00000636, 0x80000645, - 0x00000637, 0x8000062d, 0x00000637, 0x80000645, - 0x00000638, 0x80000645, 0x00000639, 0x8000062c, - 0x00000639, 0x80000645, 0x0000063a, 0x8000062c, - 0x0000063a, 0x80000645, 0x00000641, 0x8000062c, - 0x00000641, 0x8000062d, 0x00000641, 0x8000062e, - 0x00000641, 0x80000645, 0x00000641, 0x80000649, - 0x00000641, 0x8000064a, 0x00000642, 0x8000062d, - 0x00000642, 0x80000645, 0x00000642, 0x80000649, - 0x00000642, 0x8000064a, 0x00000643, 0x80000627, - 0x00000643, 0x8000062c, 0x00000643, 0x8000062d, - 0x00000643, 0x8000062e, 0x00000643, 0x80000644, - 0x00000643, 0x80000645, 0x00000643, 0x80000649, - 0x00000643, 0x8000064a, 0x00000644, 0x8000062c, - 0x00000644, 0x8000062d, 0x00000644, 0x8000062e, - 0x00000644, 0x80000645, 0x00000644, 0x80000649, - 0x00000644, 0x8000064a, 0x00000645, 0x8000062c, - 0x00000645, 0x8000062d, 0x00000645, 0x8000062e, - 0x00000645, 0x80000645, 0x00000645, 0x80000649, - 0x00000645, 0x8000064a, 0x00000646, 0x8000062c, - 0x00000646, 0x8000062d, 0x00000646, 0x8000062e, - 0x00000646, 0x80000645, 0x00000646, 0x80000649, - 0x00000646, 0x8000064a, 0x00000647, 0x8000062c, - 0x00000647, 0x80000645, 0x00000647, 0x80000649, - 0x00000647, 0x8000064a, 0x0000064a, 0x8000062c, - 0x0000064a, 0x8000062d, 0x0000064a, 0x8000062e, - 0x0000064a, 0x80000645, 0x0000064a, 0x80000649, - 0x0000064a, 0x8000064a, 0x00000630, 0x80000670, - 0x00000631, 0x80000670, 0x00000649, 0x80000670, - 0x00000020, 0x0000064c, 0x80000651, 0x00000020, - 0x0000064d, 0x80000651, 0x00000020, 0x0000064e, - 0x80000651, 0x00000020, 0x0000064f, 0x80000651, - 0x00000020, 0x00000650, 0x80000651, 0x00000020, - 0x00000651, 0x80000670, 0x00000626, 0x80000631, - 0x00000626, 0x80000632, 0x00000626, 0x80000645, - 0x00000626, 0x80000646, 0x00000626, 0x80000649, - 0x00000626, 0x8000064a, 0x00000628, 0x80000631, - 0x00000628, 0x80000632, 0x00000628, 0x80000645, - 0x00000628, 0x80000646, 0x00000628, 0x80000649, - 0x00000628, 0x8000064a, 0x0000062a, 0x80000631, - 0x0000062a, 0x80000632, 0x0000062a, 0x80000645, - 0x0000062a, 0x80000646, 0x0000062a, 0x80000649, - 0x0000062a, 0x8000064a, 0x0000062b, 0x80000631, - 0x0000062b, 0x80000632, 0x0000062b, 0x80000645, - 0x0000062b, 0x80000646, 0x0000062b, 0x80000649, - 0x0000062b, 0x8000064a, 0x00000641, 0x80000649, - 0x00000641, 0x8000064a, 0x00000642, 0x80000649, - 0x00000642, 0x8000064a, 0x00000643, 0x80000627, - 0x00000643, 0x80000644, 0x00000643, 0x80000645, - 0x00000643, 0x80000649, 0x00000643, 0x8000064a, - 0x00000644, 0x80000645, 0x00000644, 0x80000649, - 0x00000644, 0x8000064a, 0x00000645, 0x80000627, - 0x00000645, 0x80000645, 0x00000646, 0x80000631, - 0x00000646, 0x80000632, 0x00000646, 0x80000645, - 0x00000646, 0x80000646, 0x00000646, 0x80000649, - 0x00000646, 0x8000064a, 0x00000649, 0x80000670, - 0x0000064a, 0x80000631, 0x0000064a, 0x80000632, - 0x0000064a, 0x80000645, 0x0000064a, 0x80000646, - 0x0000064a, 0x80000649, 0x0000064a, 0x8000064a, - 0x00000626, 0x8000062c, 0x00000626, 0x8000062d, - 0x00000626, 0x8000062e, 0x00000626, 0x80000645, - 0x00000626, 0x80000647, 0x00000628, 0x8000062c, - 0x00000628, 0x8000062d, 0x00000628, 0x8000062e, - 0x00000628, 0x80000645, 0x00000628, 0x80000647, - 0x0000062a, 0x8000062c, 0x0000062a, 0x8000062d, - 0x0000062a, 0x8000062e, 0x0000062a, 0x80000645, - 0x0000062a, 0x80000647, 0x0000062b, 0x80000645, - 0x0000062c, 0x8000062d, 0x0000062c, 0x80000645, - 0x0000062d, 0x8000062c, 0x0000062d, 0x80000645, - 0x0000062e, 0x8000062c, 0x0000062e, 0x80000645, - 0x00000633, 0x8000062c, 0x00000633, 0x8000062d, - 0x00000633, 0x8000062e, 0x00000633, 0x80000645, - 0x00000635, 0x8000062d, 0x00000635, 0x8000062e, - 0x00000635, 0x80000645, 0x00000636, 0x8000062c, - 0x00000636, 0x8000062d, 0x00000636, 0x8000062e, - 0x00000636, 0x80000645, 0x00000637, 0x8000062d, - 0x00000638, 0x80000645, 0x00000639, 0x8000062c, - 0x00000639, 0x80000645, 0x0000063a, 0x8000062c, - 0x0000063a, 0x80000645, 0x00000641, 0x8000062c, - 0x00000641, 0x8000062d, 0x00000641, 0x8000062e, - 0x00000641, 0x80000645, 0x00000642, 0x8000062d, - 0x00000642, 0x80000645, 0x00000643, 0x8000062c, - 0x00000643, 0x8000062d, 0x00000643, 0x8000062e, - 0x00000643, 0x80000644, 0x00000643, 0x80000645, - 0x00000644, 0x8000062c, 0x00000644, 0x8000062d, - 0x00000644, 0x8000062e, 0x00000644, 0x80000645, - 0x00000644, 0x80000647, 0x00000645, 0x8000062c, - 0x00000645, 0x8000062d, 0x00000645, 0x8000062e, - 0x00000645, 0x80000645, 0x00000646, 0x8000062c, - 0x00000646, 0x8000062d, 0x00000646, 0x8000062e, - 0x00000646, 0x80000645, 0x00000646, 0x80000647, - 0x00000647, 0x8000062c, 0x00000647, 0x80000645, - 0x00000647, 0x80000670, 0x0000064a, 0x8000062c, - 0x0000064a, 0x8000062d, 0x0000064a, 0x8000062e, - 0x0000064a, 0x80000645, 0x0000064a, 0x80000647, - 0x00000626, 0x80000645, 0x00000626, 0x80000647, - 0x00000628, 0x80000645, 0x00000628, 0x80000647, - 0x0000062a, 0x80000645, 0x0000062a, 0x80000647, - 0x0000062b, 0x80000645, 0x0000062b, 0x80000647, - 0x00000633, 0x80000645, 0x00000633, 0x80000647, - 0x00000634, 0x80000645, 0x00000634, 0x80000647, - 0x00000643, 0x80000644, 0x00000643, 0x80000645, - 0x00000644, 0x80000645, 0x00000646, 0x80000645, - 0x00000646, 0x80000647, 0x0000064a, 0x80000645, - 0x0000064a, 0x80000647, 0x00000640, 0x0000064e, - 0x80000651, 0x00000640, 0x0000064f, 0x80000651, - 0x00000640, 0x00000650, 0x80000651, 0x00000637, - 0x80000649, 0x00000637, 0x8000064a, 0x00000639, - 0x80000649, 0x00000639, 0x8000064a, 0x0000063a, - 0x80000649, 0x0000063a, 0x8000064a, 0x00000633, - 0x80000649, 0x00000633, 0x8000064a, 0x00000634, - 0x80000649, 0x00000634, 0x8000064a, 0x0000062d, - 0x80000649, 0x0000062d, 0x8000064a, 0x0000062c, - 0x80000649, 0x0000062c, 0x8000064a, 0x0000062e, - 0x80000649, 0x0000062e, 0x8000064a, 0x00000635, - 0x80000649, 0x00000635, 0x8000064a, 0x00000636, - 0x80000649, 0x00000636, 0x8000064a, 0x00000634, - 0x8000062c, 0x00000634, 0x8000062d, 0x00000634, - 0x8000062e, 0x00000634, 0x80000645, 0x00000634, - 0x80000631, 0x00000633, 0x80000631, 0x00000635, - 0x80000631, 0x00000636, 0x80000631, 0x00000637, - 0x80000649, 0x00000637, 0x8000064a, 0x00000639, - 0x80000649, 0x00000639, 0x8000064a, 0x0000063a, - 0x80000649, 0x0000063a, 0x8000064a, 0x00000633, - 0x80000649, 0x00000633, 0x8000064a, 0x00000634, - 0x80000649, 0x00000634, 0x8000064a, 0x0000062d, - 0x80000649, 0x0000062d, 0x8000064a, 0x0000062c, - 0x80000649, 0x0000062c, 0x8000064a, 0x0000062e, - 0x80000649, 0x0000062e, 0x8000064a, 0x00000635, - 0x80000649, 0x00000635, 0x8000064a, 0x00000636, - 0x80000649, 0x00000636, 0x8000064a, 0x00000634, - 0x8000062c, 0x00000634, 0x8000062d, 0x00000634, - 0x8000062e, 0x00000634, 0x80000645, 0x00000634, - 0x80000631, 0x00000633, 0x80000631, 0x00000635, - 0x80000631, 0x00000636, 0x80000631, 0x00000634, - 0x8000062c, 0x00000634, 0x8000062d, 0x00000634, - 0x8000062e, 0x00000634, 0x80000645, 0x00000633, - 0x80000647, 0x00000634, 0x80000647, 0x00000637, - 0x80000645, 0x00000633, 0x8000062c, 0x00000633, - 0x8000062d, 0x00000633, 0x8000062e, 0x00000634, - 0x8000062c, 0x00000634, 0x8000062d, 0x00000634, - 0x8000062e, 0x00000637, 0x80000645, 0x00000638, - 0x80000645, 0x00000627, 0x8000064b, 0x00000627, - 0x8000064b, 0x0000062a, 0x0000062c, 0x80000645, - 0x0000062a, 0x0000062d, 0x8000062c, 0x0000062a, - 0x0000062d, 0x8000062c, 0x0000062a, 0x0000062d, - 0x80000645, 0x0000062a, 0x0000062e, 0x80000645, - 0x0000062a, 0x00000645, 0x8000062c, 0x0000062a, - 0x00000645, 0x8000062d, 0x0000062a, 0x00000645, - 0x8000062e, 0x0000062c, 0x00000645, 0x8000062d, - 0x0000062c, 0x00000645, 0x8000062d, 0x0000062d, - 0x00000645, 0x8000064a, 0x0000062d, 0x00000645, - 0x80000649, 0x00000633, 0x0000062d, 0x8000062c, - 0x00000633, 0x0000062c, 0x8000062d, 0x00000633, - 0x0000062c, 0x80000649, 0x00000633, 0x00000645, - 0x8000062d, 0x00000633, 0x00000645, 0x8000062d, - 0x00000633, 0x00000645, 0x8000062c, 0x00000633, - 0x00000645, 0x80000645, 0x00000633, 0x00000645, - 0x80000645, 0x00000635, 0x0000062d, 0x8000062d, - 0x00000635, 0x0000062d, 0x8000062d, 0x00000635, - 0x00000645, 0x80000645, 0x00000634, 0x0000062d, - 0x80000645, 0x00000634, 0x0000062d, 0x80000645, - 0x00000634, 0x0000062c, 0x8000064a, 0x00000634, - 0x00000645, 0x8000062e, 0x00000634, 0x00000645, - 0x8000062e, 0x00000634, 0x00000645, 0x80000645, - 0x00000634, 0x00000645, 0x80000645, 0x00000636, - 0x0000062d, 0x80000649, 0x00000636, 0x0000062e, - 0x80000645, 0x00000636, 0x0000062e, 0x80000645, - 0x00000637, 0x00000645, 0x8000062d, 0x00000637, - 0x00000645, 0x8000062d, 0x00000637, 0x00000645, - 0x80000645, 0x00000637, 0x00000645, 0x8000064a, - 0x00000639, 0x0000062c, 0x80000645, 0x00000639, - 0x00000645, 0x80000645, 0x00000639, 0x00000645, - 0x80000645, 0x00000639, 0x00000645, 0x80000649, - 0x0000063a, 0x00000645, 0x80000645, 0x0000063a, - 0x00000645, 0x8000064a, 0x0000063a, 0x00000645, - 0x80000649, 0x00000641, 0x0000062e, 0x80000645, - 0x00000641, 0x0000062e, 0x80000645, 0x00000642, - 0x00000645, 0x8000062d, 0x00000642, 0x00000645, - 0x80000645, 0x00000644, 0x0000062d, 0x80000645, - 0x00000644, 0x0000062d, 0x8000064a, 0x00000644, - 0x0000062d, 0x80000649, 0x00000644, 0x0000062c, - 0x8000062c, 0x00000644, 0x0000062c, 0x8000062c, - 0x00000644, 0x0000062e, 0x80000645, 0x00000644, - 0x0000062e, 0x80000645, 0x00000644, 0x00000645, - 0x8000062d, 0x00000644, 0x00000645, 0x8000062d, - 0x00000645, 0x0000062d, 0x8000062c, 0x00000645, - 0x0000062d, 0x80000645, 0x00000645, 0x0000062d, - 0x8000064a, 0x00000645, 0x0000062c, 0x8000062d, - 0x00000645, 0x0000062c, 0x80000645, 0x00000645, - 0x0000062e, 0x8000062c, 0x00000645, 0x0000062e, - 0x80000645, 0x00000645, 0x0000062c, 0x8000062e, - 0x00000647, 0x00000645, 0x8000062c, 0x00000647, - 0x00000645, 0x80000645, 0x00000646, 0x0000062d, - 0x80000645, 0x00000646, 0x0000062d, 0x80000649, - 0x00000646, 0x0000062c, 0x80000645, 0x00000646, - 0x0000062c, 0x80000645, 0x00000646, 0x0000062c, - 0x80000649, 0x00000646, 0x00000645, 0x8000064a, - 0x00000646, 0x00000645, 0x80000649, 0x0000064a, - 0x00000645, 0x80000645, 0x0000064a, 0x00000645, - 0x80000645, 0x00000628, 0x0000062e, 0x8000064a, - 0x0000062a, 0x0000062c, 0x8000064a, 0x0000062a, - 0x0000062c, 0x80000649, 0x0000062a, 0x0000062e, - 0x8000064a, 0x0000062a, 0x0000062e, 0x80000649, - 0x0000062a, 0x00000645, 0x8000064a, 0x0000062a, - 0x00000645, 0x80000649, 0x0000062c, 0x00000645, - 0x8000064a, 0x0000062c, 0x0000062d, 0x80000649, - 0x0000062c, 0x00000645, 0x80000649, 0x00000633, - 0x0000062e, 0x80000649, 0x00000635, 0x0000062d, - 0x8000064a, 0x00000634, 0x0000062d, 0x8000064a, - 0x00000636, 0x0000062d, 0x8000064a, 0x00000644, - 0x0000062c, 0x8000064a, 0x00000644, 0x00000645, - 0x8000064a, 0x0000064a, 0x0000062d, 0x8000064a, - 0x0000064a, 0x0000062c, 0x8000064a, 0x0000064a, - 0x00000645, 0x8000064a, 0x00000645, 0x00000645, - 0x8000064a, 0x00000642, 0x00000645, 0x8000064a, - 0x00000646, 0x0000062d, 0x8000064a, 0x00000642, - 0x00000645, 0x8000062d, 0x00000644, 0x0000062d, - 0x80000645, 0x00000639, 0x00000645, 0x8000064a, - 0x00000643, 0x00000645, 0x8000064a, 0x00000646, - 0x0000062c, 0x8000062d, 0x00000645, 0x0000062e, - 0x8000064a, 0x00000644, 0x0000062c, 0x80000645, - 0x00000643, 0x00000645, 0x80000645, 0x00000644, - 0x0000062c, 0x80000645, 0x00000646, 0x0000062c, - 0x8000062d, 0x0000062c, 0x0000062d, 0x8000064a, - 0x0000062d, 0x0000062c, 0x8000064a, 0x00000645, - 0x0000062c, 0x8000064a, 0x00000641, 0x00000645, - 0x8000064a, 0x00000628, 0x0000062d, 0x8000064a, - 0x00000643, 0x00000645, 0x80000645, 0x00000639, - 0x0000062c, 0x80000645, 0x00000635, 0x00000645, - 0x80000645, 0x00000633, 0x0000062e, 0x8000064a, - 0x00000646, 0x0000062c, 0x8000064a, 0x00000635, - 0x00000644, 0x800006d2, 0x00000642, 0x00000644, - 0x800006d2, 0x00000627, 0x00000644, 0x00000644, - 0x80000647, 0x00000627, 0x00000643, 0x00000628, - 0x80000631, 0x00000645, 0x0000062d, 0x00000645, - 0x8000062f, 0x00000635, 0x00000644, 0x00000639, - 0x80000645, 0x00000631, 0x00000633, 0x00000648, - 0x80000644, 0x00000639, 0x00000644, 0x0000064a, - 0x80000647, 0x00000648, 0x00000633, 0x00000644, - 0x80000645, 0x00000635, 0x00000644, 0x80000649, - 0x00000635, 0x00000644, 0x00000649, 0x00000020, - 0x00000627, 0x00000644, 0x00000644, 0x00000647, - 0x00000020, 0x00000639, 0x00000644, 0x0000064a, - 0x00000647, 0x00000020, 0x00000648, 0x00000633, - 0x00000644, 0x80000645, 0x0000062c, 0x00000644, - 0x00000020, 0x0000062c, 0x00000644, 0x00000627, - 0x00000644, 0x80000647, 0x00000631, 0x000006cc, - 0x00000627, 0x80000644, 0x8000002c, 0x80003001, - 0x80003002, 0x8000003a, 0x8000003b, 0x80000021, - 0x8000003f, 0x80003016, 0x80003017, 0x80002026, - 0x80002025, 0x80002014, 0x80002013, 0x8000005f, - 0x8000005f, 0x80000028, 0x80000029, 0x8000007b, - 0x8000007d, 0x80003014, 0x80003015, 0x80003010, - 0x80003011, 0x8000300a, 0x8000300b, 0x80003008, - 0x80003009, 0x8000300c, 0x8000300d, 0x8000300e, - 0x8000300f, 0x8000005b, 0x8000005d, 0x8000203e, - 0x8000203e, 0x8000203e, 0x8000203e, 0x8000005f, - 0x8000005f, 0x8000005f, 0x8000002c, 0x80003001, - 0x8000002e, 0x8000003b, 0x8000003a, 0x8000003f, - 0x80000021, 0x80002014, 0x80000028, 0x80000029, - 0x8000007b, 0x8000007d, 0x80003014, 0x80003015, - 0x80000023, 0x80000026, 0x8000002a, 0x8000002b, - 0x8000002d, 0x8000003c, 0x8000003e, 0x8000003d, - 0x8000005c, 0x80000024, 0x80000025, 0x80000040, - 0x00000020, 0x8000064b, 0x00000640, 0x8000064b, - 0x00000020, 0x8000064c, 0x00000020, 0x8000064d, - 0x00000020, 0x8000064e, 0x00000640, 0x8000064e, - 0x00000020, 0x8000064f, 0x00000640, 0x8000064f, - 0x00000020, 0x80000650, 0x00000640, 0x80000650, - 0x00000020, 0x80000651, 0x00000640, 0x80000651, - 0x00000020, 0x80000652, 0x00000640, 0x80000652, - 0x80000621, 0x80000622, 0x80000622, 0x80000623, - 0x80000623, 0x80000624, 0x80000624, 0x80000625, - 0x80000625, 0x80000626, 0x80000626, 0x80000626, - 0x80000626, 0x80000627, 0x80000627, 0x80000628, - 0x80000628, 0x80000628, 0x80000628, 0x80000629, - 0x80000629, 0x8000062a, 0x8000062a, 0x8000062a, - 0x8000062a, 0x8000062b, 0x8000062b, 0x8000062b, - 0x8000062b, 0x8000062c, 0x8000062c, 0x8000062c, - 0x8000062c, 0x8000062d, 0x8000062d, 0x8000062d, - 0x8000062d, 0x8000062e, 0x8000062e, 0x8000062e, - 0x8000062e, 0x8000062f, 0x8000062f, 0x80000630, - 0x80000630, 0x80000631, 0x80000631, 0x80000632, - 0x80000632, 0x80000633, 0x80000633, 0x80000633, - 0x80000633, 0x80000634, 0x80000634, 0x80000634, - 0x80000634, 0x80000635, 0x80000635, 0x80000635, - 0x80000635, 0x80000636, 0x80000636, 0x80000636, - 0x80000636, 0x80000637, 0x80000637, 0x80000637, - 0x80000637, 0x80000638, 0x80000638, 0x80000638, - 0x80000638, 0x80000639, 0x80000639, 0x80000639, - 0x80000639, 0x8000063a, 0x8000063a, 0x8000063a, - 0x8000063a, 0x80000641, 0x80000641, 0x80000641, - 0x80000641, 0x80000642, 0x80000642, 0x80000642, - 0x80000642, 0x80000643, 0x80000643, 0x80000643, - 0x80000643, 0x80000644, 0x80000644, 0x80000644, - 0x80000644, 0x80000645, 0x80000645, 0x80000645, - 0x80000645, 0x80000646, 0x80000646, 0x80000646, - 0x80000646, 0x80000647, 0x80000647, 0x80000647, - 0x80000647, 0x80000648, 0x80000648, 0x80000649, - 0x80000649, 0x8000064a, 0x8000064a, 0x8000064a, - 0x8000064a, 0x00000644, 0x80000622, 0x00000644, - 0x80000622, 0x00000644, 0x80000623, 0x00000644, - 0x80000623, 0x00000644, 0x80000625, 0x00000644, - 0x80000625, 0x00000644, 0x80000627, 0x00000644, - 0x80000627, 0x80000021, 0x80000022, 0x80000023, - 0x80000024, 0x80000025, 0x80000026, 0x80000027, - 0x80000028, 0x80000029, 0x8000002a, 0x8000002b, - 0x8000002c, 0x8000002d, 0x8000002e, 0x8000002f, - 0x80000030, 0x80000031, 0x80000032, 0x80000033, - 0x80000034, 0x80000035, 0x80000036, 0x80000037, - 0x80000038, 0x80000039, 0x8000003a, 0x8000003b, - 0x8000003c, 0x8000003d, 0x8000003e, 0x8000003f, - 0x80000040, 0x80000041, 0x80000042, 0x80000043, - 0x80000044, 0x80000045, 0x80000046, 0x80000047, - 0x80000048, 0x80000049, 0x8000004a, 0x8000004b, - 0x8000004c, 0x8000004d, 0x8000004e, 0x8000004f, - 0x80000050, 0x80000051, 0x80000052, 0x80000053, - 0x80000054, 0x80000055, 0x80000056, 0x80000057, - 0x80000058, 0x80000059, 0x8000005a, 0x8000005b, - 0x8000005c, 0x8000005d, 0x8000005e, 0x8000005f, - 0x80000060, 0x80000061, 0x80000062, 0x80000063, - 0x80000064, 0x80000065, 0x80000066, 0x80000067, - 0x80000068, 0x80000069, 0x8000006a, 0x8000006b, - 0x8000006c, 0x8000006d, 0x8000006e, 0x8000006f, - 0x80000070, 0x80000071, 0x80000072, 0x80000073, - 0x80000074, 0x80000075, 0x80000076, 0x80000077, - 0x80000078, 0x80000079, 0x8000007a, 0x8000007b, - 0x8000007c, 0x8000007d, 0x8000007e, 0x80002985, - 0x80002986, 0x80003002, 0x8000300c, 0x8000300d, - 0x80003001, 0x800030fb, 0x800030f2, 0x800030a1, - 0x800030a3, 0x800030a5, 0x800030a7, 0x800030a9, - 0x800030e3, 0x800030e5, 0x800030e7, 0x800030c3, - 0x800030fc, 0x800030a2, 0x800030a4, 0x800030a6, - 0x800030a8, 0x800030aa, 0x800030ab, 0x800030ad, - 0x800030af, 0x800030b1, 0x800030b3, 0x800030b5, - 0x800030b7, 0x800030b9, 0x800030bb, 0x800030bd, - 0x800030bf, 0x800030c1, 0x800030c4, 0x800030c6, - 0x800030c8, 0x800030ca, 0x800030cb, 0x800030cc, - 0x800030cd, 0x800030ce, 0x800030cf, 0x800030d2, - 0x800030d5, 0x800030d8, 0x800030db, 0x800030de, - 0x800030df, 0x800030e0, 0x800030e1, 0x800030e2, - 0x800030e4, 0x800030e6, 0x800030e8, 0x800030e9, - 0x800030ea, 0x800030eb, 0x800030ec, 0x800030ed, - 0x800030ef, 0x800030f3, 0x80003099, 0x8000309a, - 0x80003164, 0x80003131, 0x80003132, 0x80003133, - 0x80003134, 0x80003135, 0x80003136, 0x80003137, - 0x80003138, 0x80003139, 0x8000313a, 0x8000313b, - 0x8000313c, 0x8000313d, 0x8000313e, 0x8000313f, - 0x80003140, 0x80003141, 0x80003142, 0x80003143, - 0x80003144, 0x80003145, 0x80003146, 0x80003147, - 0x80003148, 0x80003149, 0x8000314a, 0x8000314b, - 0x8000314c, 0x8000314d, 0x8000314e, 0x8000314f, - 0x80003150, 0x80003151, 0x80003152, 0x80003153, - 0x80003154, 0x80003155, 0x80003156, 0x80003157, - 0x80003158, 0x80003159, 0x8000315a, 0x8000315b, - 0x8000315c, 0x8000315d, 0x8000315e, 0x8000315f, - 0x80003160, 0x80003161, 0x80003162, 0x80003163, - 0x800000a2, 0x800000a3, 0x800000ac, 0x800000af, - 0x800000a6, 0x800000a5, 0x800020a9, 0x80002502, - 0x80002190, 0x80002191, 0x80002192, 0x80002193, - 0x800025a0, 0x800025cb, 0x0001d157, 0x8001d165, - 0x0001d158, 0x8001d165, 0x0001d15f, 0x8001d16e, - 0x0001d15f, 0x8001d16f, 0x0001d15f, 0x8001d170, - 0x0001d15f, 0x8001d171, 0x0001d15f, 0x8001d172, - 0x0001d1b9, 0x8001d165, 0x0001d1ba, 0x8001d165, - 0x0001d1bb, 0x8001d16e, 0x0001d1bc, 0x8001d16e, - 0x0001d1bb, 0x8001d16f, 0x0001d1bc, 0x8001d16f, - 0x80000041, 0x80000042, 0x80000043, 0x80000044, - 0x80000045, 0x80000046, 0x80000047, 0x80000048, - 0x80000049, 0x8000004a, 0x8000004b, 0x8000004c, - 0x8000004d, 0x8000004e, 0x8000004f, 0x80000050, - 0x80000051, 0x80000052, 0x80000053, 0x80000054, - 0x80000055, 0x80000056, 0x80000057, 0x80000058, - 0x80000059, 0x8000005a, 0x80000061, 0x80000062, - 0x80000063, 0x80000064, 0x80000065, 0x80000066, - 0x80000067, 0x80000068, 0x80000069, 0x8000006a, - 0x8000006b, 0x8000006c, 0x8000006d, 0x8000006e, - 0x8000006f, 0x80000070, 0x80000071, 0x80000072, - 0x80000073, 0x80000074, 0x80000075, 0x80000076, - 0x80000077, 0x80000078, 0x80000079, 0x8000007a, - 0x80000041, 0x80000042, 0x80000043, 0x80000044, - 0x80000045, 0x80000046, 0x80000047, 0x80000048, - 0x80000049, 0x8000004a, 0x8000004b, 0x8000004c, - 0x8000004d, 0x8000004e, 0x8000004f, 0x80000050, - 0x80000051, 0x80000052, 0x80000053, 0x80000054, - 0x80000055, 0x80000056, 0x80000057, 0x80000058, - 0x80000059, 0x8000005a, 0x80000061, 0x80000062, - 0x80000063, 0x80000064, 0x80000065, 0x80000066, - 0x80000067, 0x80000069, 0x8000006a, 0x8000006b, - 0x8000006c, 0x8000006d, 0x8000006e, 0x8000006f, - 0x80000070, 0x80000071, 0x80000072, 0x80000073, - 0x80000074, 0x80000075, 0x80000076, 0x80000077, - 0x80000078, 0x80000079, 0x8000007a, 0x80000041, - 0x80000042, 0x80000043, 0x80000044, 0x80000045, - 0x80000046, 0x80000047, 0x80000048, 0x80000049, - 0x8000004a, 0x8000004b, 0x8000004c, 0x8000004d, - 0x8000004e, 0x8000004f, 0x80000050, 0x80000051, - 0x80000052, 0x80000053, 0x80000054, 0x80000055, - 0x80000056, 0x80000057, 0x80000058, 0x80000059, - 0x8000005a, 0x80000061, 0x80000062, 0x80000063, - 0x80000064, 0x80000065, 0x80000066, 0x80000067, - 0x80000068, 0x80000069, 0x8000006a, 0x8000006b, - 0x8000006c, 0x8000006d, 0x8000006e, 0x8000006f, - 0x80000070, 0x80000071, 0x80000072, 0x80000073, - 0x80000074, 0x80000075, 0x80000076, 0x80000077, - 0x80000078, 0x80000079, 0x8000007a, 0x80000041, - 0x80000043, 0x80000044, 0x80000047, 0x8000004a, - 0x8000004b, 0x8000004e, 0x8000004f, 0x80000050, - 0x80000051, 0x80000053, 0x80000054, 0x80000055, - 0x80000056, 0x80000057, 0x80000058, 0x80000059, - 0x8000005a, 0x80000061, 0x80000062, 0x80000063, - 0x80000064, 0x80000066, 0x80000068, 0x80000069, - 0x8000006a, 0x8000006b, 0x8000006c, 0x8000006d, - 0x8000006e, 0x80000070, 0x80000071, 0x80000072, - 0x80000073, 0x80000074, 0x80000075, 0x80000076, - 0x80000077, 0x80000078, 0x80000079, 0x8000007a, - 0x80000041, 0x80000042, 0x80000043, 0x80000044, - 0x80000045, 0x80000046, 0x80000047, 0x80000048, - 0x80000049, 0x8000004a, 0x8000004b, 0x8000004c, - 0x8000004d, 0x8000004e, 0x8000004f, 0x80000050, - 0x80000051, 0x80000052, 0x80000053, 0x80000054, - 0x80000055, 0x80000056, 0x80000057, 0x80000058, - 0x80000059, 0x8000005a, 0x80000061, 0x80000062, - 0x80000063, 0x80000064, 0x80000065, 0x80000066, - 0x80000067, 0x80000068, 0x80000069, 0x8000006a, - 0x8000006b, 0x8000006c, 0x8000006d, 0x8000006e, - 0x8000006f, 0x80000070, 0x80000071, 0x80000072, - 0x80000073, 0x80000074, 0x80000075, 0x80000076, - 0x80000077, 0x80000078, 0x80000079, 0x8000007a, - 0x80000041, 0x80000042, 0x80000044, 0x80000045, - 0x80000046, 0x80000047, 0x8000004a, 0x8000004b, - 0x8000004c, 0x8000004d, 0x8000004e, 0x8000004f, - 0x80000050, 0x80000051, 0x80000053, 0x80000054, - 0x80000055, 0x80000056, 0x80000057, 0x80000058, - 0x80000059, 0x80000061, 0x80000062, 0x80000063, - 0x80000064, 0x80000065, 0x80000066, 0x80000067, - 0x80000068, 0x80000069, 0x8000006a, 0x8000006b, - 0x8000006c, 0x8000006d, 0x8000006e, 0x8000006f, - 0x80000070, 0x80000071, 0x80000072, 0x80000073, - 0x80000074, 0x80000075, 0x80000076, 0x80000077, - 0x80000078, 0x80000079, 0x8000007a, 0x80000041, - 0x80000042, 0x80000044, 0x80000045, 0x80000046, - 0x80000047, 0x80000049, 0x8000004a, 0x8000004b, - 0x8000004c, 0x8000004d, 0x8000004f, 0x80000053, - 0x80000054, 0x80000055, 0x80000056, 0x80000057, - 0x80000058, 0x80000059, 0x80000061, 0x80000062, - 0x80000063, 0x80000064, 0x80000065, 0x80000066, - 0x80000067, 0x80000068, 0x80000069, 0x8000006a, - 0x8000006b, 0x8000006c, 0x8000006d, 0x8000006e, - 0x8000006f, 0x80000070, 0x80000071, 0x80000072, - 0x80000073, 0x80000074, 0x80000075, 0x80000076, - 0x80000077, 0x80000078, 0x80000079, 0x8000007a, - 0x80000041, 0x80000042, 0x80000043, 0x80000044, - 0x80000045, 0x80000046, 0x80000047, 0x80000048, - 0x80000049, 0x8000004a, 0x8000004b, 0x8000004c, - 0x8000004d, 0x8000004e, 0x8000004f, 0x80000050, - 0x80000051, 0x80000052, 0x80000053, 0x80000054, - 0x80000055, 0x80000056, 0x80000057, 0x80000058, - 0x80000059, 0x8000005a, 0x80000061, 0x80000062, - 0x80000063, 0x80000064, 0x80000065, 0x80000066, - 0x80000067, 0x80000068, 0x80000069, 0x8000006a, - 0x8000006b, 0x8000006c, 0x8000006d, 0x8000006e, - 0x8000006f, 0x80000070, 0x80000071, 0x80000072, - 0x80000073, 0x80000074, 0x80000075, 0x80000076, - 0x80000077, 0x80000078, 0x80000079, 0x8000007a, - 0x80000041, 0x80000042, 0x80000043, 0x80000044, - 0x80000045, 0x80000046, 0x80000047, 0x80000048, - 0x80000049, 0x8000004a, 0x8000004b, 0x8000004c, - 0x8000004d, 0x8000004e, 0x8000004f, 0x80000050, - 0x80000051, 0x80000052, 0x80000053, 0x80000054, - 0x80000055, 0x80000056, 0x80000057, 0x80000058, - 0x80000059, 0x8000005a, 0x80000061, 0x80000062, - 0x80000063, 0x80000064, 0x80000065, 0x80000066, - 0x80000067, 0x80000068, 0x80000069, 0x8000006a, - 0x8000006b, 0x8000006c, 0x8000006d, 0x8000006e, - 0x8000006f, 0x80000070, 0x80000071, 0x80000072, - 0x80000073, 0x80000074, 0x80000075, 0x80000076, - 0x80000077, 0x80000078, 0x80000079, 0x8000007a, - 0x80000041, 0x80000042, 0x80000043, 0x80000044, - 0x80000045, 0x80000046, 0x80000047, 0x80000048, - 0x80000049, 0x8000004a, 0x8000004b, 0x8000004c, - 0x8000004d, 0x8000004e, 0x8000004f, 0x80000050, - 0x80000051, 0x80000052, 0x80000053, 0x80000054, - 0x80000055, 0x80000056, 0x80000057, 0x80000058, - 0x80000059, 0x8000005a, 0x80000061, 0x80000062, - 0x80000063, 0x80000064, 0x80000065, 0x80000066, - 0x80000067, 0x80000068, 0x80000069, 0x8000006a, - 0x8000006b, 0x8000006c, 0x8000006d, 0x8000006e, - 0x8000006f, 0x80000070, 0x80000071, 0x80000072, - 0x80000073, 0x80000074, 0x80000075, 0x80000076, - 0x80000077, 0x80000078, 0x80000079, 0x8000007a, - 0x80000041, 0x80000042, 0x80000043, 0x80000044, - 0x80000045, 0x80000046, 0x80000047, 0x80000048, - 0x80000049, 0x8000004a, 0x8000004b, 0x8000004c, - 0x8000004d, 0x8000004e, 0x8000004f, 0x80000050, - 0x80000051, 0x80000052, 0x80000053, 0x80000054, - 0x80000055, 0x80000056, 0x80000057, 0x80000058, - 0x80000059, 0x8000005a, 0x80000061, 0x80000062, - 0x80000063, 0x80000064, 0x80000065, 0x80000066, - 0x80000067, 0x80000068, 0x80000069, 0x8000006a, - 0x8000006b, 0x8000006c, 0x8000006d, 0x8000006e, - 0x8000006f, 0x80000070, 0x80000071, 0x80000072, - 0x80000073, 0x80000074, 0x80000075, 0x80000076, - 0x80000077, 0x80000078, 0x80000079, 0x8000007a, - 0x80000041, 0x80000042, 0x80000043, 0x80000044, - 0x80000045, 0x80000046, 0x80000047, 0x80000048, - 0x80000049, 0x8000004a, 0x8000004b, 0x8000004c, - 0x8000004d, 0x8000004e, 0x8000004f, 0x80000050, - 0x80000051, 0x80000052, 0x80000053, 0x80000054, - 0x80000055, 0x80000056, 0x80000057, 0x80000058, - 0x80000059, 0x8000005a, 0x80000061, 0x80000062, - 0x80000063, 0x80000064, 0x80000065, 0x80000066, - 0x80000067, 0x80000068, 0x80000069, 0x8000006a, - 0x8000006b, 0x8000006c, 0x8000006d, 0x8000006e, - 0x8000006f, 0x80000070, 0x80000071, 0x80000072, - 0x80000073, 0x80000074, 0x80000075, 0x80000076, - 0x80000077, 0x80000078, 0x80000079, 0x8000007a, - 0x80000041, 0x80000042, 0x80000043, 0x80000044, - 0x80000045, 0x80000046, 0x80000047, 0x80000048, - 0x80000049, 0x8000004a, 0x8000004b, 0x8000004c, - 0x8000004d, 0x8000004e, 0x8000004f, 0x80000050, - 0x80000051, 0x80000052, 0x80000053, 0x80000054, - 0x80000055, 0x80000056, 0x80000057, 0x80000058, - 0x80000059, 0x8000005a, 0x80000061, 0x80000062, - 0x80000063, 0x80000064, 0x80000065, 0x80000066, - 0x80000067, 0x80000068, 0x80000069, 0x8000006a, - 0x8000006b, 0x8000006c, 0x8000006d, 0x8000006e, - 0x8000006f, 0x80000070, 0x80000071, 0x80000072, - 0x80000073, 0x80000074, 0x80000075, 0x80000076, - 0x80000077, 0x80000078, 0x80000079, 0x8000007a, - 0x80000131, 0x80000237, 0x80000391, 0x80000392, - 0x80000393, 0x80000394, 0x80000395, 0x80000396, - 0x80000397, 0x80000398, 0x80000399, 0x8000039a, - 0x8000039b, 0x8000039c, 0x8000039d, 0x8000039e, - 0x8000039f, 0x800003a0, 0x800003a1, 0x800003f4, - 0x800003a3, 0x800003a4, 0x800003a5, 0x800003a6, - 0x800003a7, 0x800003a8, 0x800003a9, 0x80002207, - 0x800003b1, 0x800003b2, 0x800003b3, 0x800003b4, - 0x800003b5, 0x800003b6, 0x800003b7, 0x800003b8, - 0x800003b9, 0x800003ba, 0x800003bb, 0x800003bc, - 0x800003bd, 0x800003be, 0x800003bf, 0x800003c0, - 0x800003c1, 0x800003c2, 0x800003c3, 0x800003c4, - 0x800003c5, 0x800003c6, 0x800003c7, 0x800003c8, - 0x800003c9, 0x80002202, 0x800003f5, 0x800003d1, - 0x800003f0, 0x800003d5, 0x800003f1, 0x800003d6, - 0x80000391, 0x80000392, 0x80000393, 0x80000394, - 0x80000395, 0x80000396, 0x80000397, 0x80000398, - 0x80000399, 0x8000039a, 0x8000039b, 0x8000039c, - 0x8000039d, 0x8000039e, 0x8000039f, 0x800003a0, - 0x800003a1, 0x800003f4, 0x800003a3, 0x800003a4, - 0x800003a5, 0x800003a6, 0x800003a7, 0x800003a8, - 0x800003a9, 0x80002207, 0x800003b1, 0x800003b2, - 0x800003b3, 0x800003b4, 0x800003b5, 0x800003b6, - 0x800003b7, 0x800003b8, 0x800003b9, 0x800003ba, - 0x800003bb, 0x800003bc, 0x800003bd, 0x800003be, - 0x800003bf, 0x800003c0, 0x800003c1, 0x800003c2, - 0x800003c3, 0x800003c4, 0x800003c5, 0x800003c6, - 0x800003c7, 0x800003c8, 0x800003c9, 0x80002202, - 0x800003f5, 0x800003d1, 0x800003f0, 0x800003d5, - 0x800003f1, 0x800003d6, 0x80000391, 0x80000392, - 0x80000393, 0x80000394, 0x80000395, 0x80000396, - 0x80000397, 0x80000398, 0x80000399, 0x8000039a, - 0x8000039b, 0x8000039c, 0x8000039d, 0x8000039e, - 0x8000039f, 0x800003a0, 0x800003a1, 0x800003f4, - 0x800003a3, 0x800003a4, 0x800003a5, 0x800003a6, - 0x800003a7, 0x800003a8, 0x800003a9, 0x80002207, - 0x800003b1, 0x800003b2, 0x800003b3, 0x800003b4, - 0x800003b5, 0x800003b6, 0x800003b7, 0x800003b8, - 0x800003b9, 0x800003ba, 0x800003bb, 0x800003bc, - 0x800003bd, 0x800003be, 0x800003bf, 0x800003c0, - 0x800003c1, 0x800003c2, 0x800003c3, 0x800003c4, - 0x800003c5, 0x800003c6, 0x800003c7, 0x800003c8, - 0x800003c9, 0x80002202, 0x800003f5, 0x800003d1, - 0x800003f0, 0x800003d5, 0x800003f1, 0x800003d6, - 0x80000391, 0x80000392, 0x80000393, 0x80000394, - 0x80000395, 0x80000396, 0x80000397, 0x80000398, - 0x80000399, 0x8000039a, 0x8000039b, 0x8000039c, - 0x8000039d, 0x8000039e, 0x8000039f, 0x800003a0, - 0x800003a1, 0x800003f4, 0x800003a3, 0x800003a4, - 0x800003a5, 0x800003a6, 0x800003a7, 0x800003a8, - 0x800003a9, 0x80002207, 0x800003b1, 0x800003b2, - 0x800003b3, 0x800003b4, 0x800003b5, 0x800003b6, - 0x800003b7, 0x800003b8, 0x800003b9, 0x800003ba, - 0x800003bb, 0x800003bc, 0x800003bd, 0x800003be, - 0x800003bf, 0x800003c0, 0x800003c1, 0x800003c2, - 0x800003c3, 0x800003c4, 0x800003c5, 0x800003c6, - 0x800003c7, 0x800003c8, 0x800003c9, 0x80002202, - 0x800003f5, 0x800003d1, 0x800003f0, 0x800003d5, - 0x800003f1, 0x800003d6, 0x80000391, 0x80000392, - 0x80000393, 0x80000394, 0x80000395, 0x80000396, - 0x80000397, 0x80000398, 0x80000399, 0x8000039a, - 0x8000039b, 0x8000039c, 0x8000039d, 0x8000039e, - 0x8000039f, 0x800003a0, 0x800003a1, 0x800003f4, - 0x800003a3, 0x800003a4, 0x800003a5, 0x800003a6, - 0x800003a7, 0x800003a8, 0x800003a9, 0x80002207, - 0x800003b1, 0x800003b2, 0x800003b3, 0x800003b4, - 0x800003b5, 0x800003b6, 0x800003b7, 0x800003b8, - 0x800003b9, 0x800003ba, 0x800003bb, 0x800003bc, - 0x800003bd, 0x800003be, 0x800003bf, 0x800003c0, - 0x800003c1, 0x800003c2, 0x800003c3, 0x800003c4, - 0x800003c5, 0x800003c6, 0x800003c7, 0x800003c8, - 0x800003c9, 0x80002202, 0x800003f5, 0x800003d1, - 0x800003f0, 0x800003d5, 0x800003f1, 0x800003d6, - 0x80000030, 0x80000031, 0x80000032, 0x80000033, - 0x80000034, 0x80000035, 0x80000036, 0x80000037, - 0x80000038, 0x80000039, 0x80000030, 0x80000031, - 0x80000032, 0x80000033, 0x80000034, 0x80000035, - 0x80000036, 0x80000037, 0x80000038, 0x80000039, - 0x80000030, 0x80000031, 0x80000032, 0x80000033, - 0x80000034, 0x80000035, 0x80000036, 0x80000037, - 0x80000038, 0x80000039, 0x80000030, 0x80000031, - 0x80000032, 0x80000033, 0x80000034, 0x80000035, - 0x80000036, 0x80000037, 0x80000038, 0x80000039, - 0x80000030, 0x80000031, 0x80000032, 0x80000033, - 0x80000034, 0x80000035, 0x80000036, 0x80000037, - 0x80000038, 0x80000039, 0x80004e3d, 0x80004e38, - 0x80004e41, 0x80020122, 0x80004f60, 0x80004fae, - 0x80004fbb, 0x80005002, 0x8000507a, 0x80005099, - 0x800050e7, 0x800050cf, 0x8000349e, 0x8002063a, - 0x8000514d, 0x80005154, 0x80005164, 0x80005177, - 0x8002051c, 0x800034b9, 0x80005167, 0x8000518d, - 0x8002054b, 0x80005197, 0x800051a4, 0x80004ecc, - 0x800051ac, 0x800051b5, 0x800291df, 0x800051f5, - 0x80005203, 0x800034df, 0x8000523b, 0x80005246, - 0x80005272, 0x80005277, 0x80003515, 0x800052c7, - 0x800052c9, 0x800052e4, 0x800052fa, 0x80005305, - 0x80005306, 0x80005317, 0x80005349, 0x80005351, - 0x8000535a, 0x80005373, 0x8000537d, 0x8000537f, - 0x8000537f, 0x8000537f, 0x80020a2c, 0x80007070, - 0x800053ca, 0x800053df, 0x80020b63, 0x800053eb, - 0x800053f1, 0x80005406, 0x8000549e, 0x80005438, - 0x80005448, 0x80005468, 0x800054a2, 0x800054f6, - 0x80005510, 0x80005553, 0x80005563, 0x80005584, - 0x80005584, 0x80005599, 0x800055ab, 0x800055b3, - 0x800055c2, 0x80005716, 0x80005606, 0x80005717, - 0x80005651, 0x80005674, 0x80005207, 0x800058ee, - 0x800057ce, 0x800057f4, 0x8000580d, 0x8000578b, - 0x80005832, 0x80005831, 0x800058ac, 0x800214e4, - 0x800058f2, 0x800058f7, 0x80005906, 0x8000591a, - 0x80005922, 0x80005962, 0x800216a8, 0x800216ea, - 0x800059ec, 0x80005a1b, 0x80005a27, 0x800059d8, - 0x80005a66, 0x800036ee, 0x800036fc, 0x80005b08, - 0x80005b3e, 0x80005b3e, 0x800219c8, 0x80005bc3, - 0x80005bd8, 0x80005be7, 0x80005bf3, 0x80021b18, - 0x80005bff, 0x80005c06, 0x80005f53, 0x80005c22, - 0x80003781, 0x80005c60, 0x80005c6e, 0x80005cc0, - 0x80005c8d, 0x80021de4, 0x80005d43, 0x80021de6, - 0x80005d6e, 0x80005d6b, 0x80005d7c, 0x80005de1, - 0x80005de2, 0x8000382f, 0x80005dfd, 0x80005e28, - 0x80005e3d, 0x80005e69, 0x80003862, 0x80022183, - 0x8000387c, 0x80005eb0, 0x80005eb3, 0x80005eb6, - 0x80005eca, 0x8002a392, 0x80005efe, 0x80022331, - 0x80022331, 0x80008201, 0x80005f22, 0x80005f22, - 0x800038c7, 0x800232b8, 0x800261da, 0x80005f62, - 0x80005f6b, 0x800038e3, 0x80005f9a, 0x80005fcd, - 0x80005fd7, 0x80005ff9, 0x80006081, 0x8000393a, - 0x8000391c, 0x80006094, 0x800226d4, 0x800060c7, - 0x80006148, 0x8000614c, 0x8000614e, 0x8000614c, - 0x8000617a, 0x8000618e, 0x800061b2, 0x800061a4, - 0x800061af, 0x800061de, 0x800061f2, 0x800061f6, - 0x80006210, 0x8000621b, 0x8000625d, 0x800062b1, - 0x800062d4, 0x80006350, 0x80022b0c, 0x8000633d, - 0x800062fc, 0x80006368, 0x80006383, 0x800063e4, - 0x80022bf1, 0x80006422, 0x800063c5, 0x800063a9, - 0x80003a2e, 0x80006469, 0x8000647e, 0x8000649d, - 0x80006477, 0x80003a6c, 0x8000654f, 0x8000656c, - 0x8002300a, 0x800065e3, 0x800066f8, 0x80006649, - 0x80003b19, 0x80006691, 0x80003b08, 0x80003ae4, - 0x80005192, 0x80005195, 0x80006700, 0x8000669c, - 0x800080ad, 0x800043d9, 0x80006717, 0x8000671b, - 0x80006721, 0x8000675e, 0x80006753, 0x800233c3, - 0x80003b49, 0x800067fa, 0x80006785, 0x80006852, - 0x80006885, 0x8002346d, 0x8000688e, 0x8000681f, - 0x80006914, 0x80003b9d, 0x80006942, 0x800069a3, - 0x800069ea, 0x80006aa8, 0x800236a3, 0x80006adb, - 0x80003c18, 0x80006b21, 0x800238a7, 0x80006b54, - 0x80003c4e, 0x80006b72, 0x80006b9f, 0x80006bba, - 0x80006bbb, 0x80023a8d, 0x80021d0b, 0x80023afa, - 0x80006c4e, 0x80023cbc, 0x80006cbf, 0x80006ccd, - 0x80006c67, 0x80006d16, 0x80006d3e, 0x80006d77, - 0x80006d41, 0x80006d69, 0x80006d78, 0x80006d85, - 0x80023d1e, 0x80006d34, 0x80006e2f, 0x80006e6e, - 0x80003d33, 0x80006ecb, 0x80006ec7, 0x80023ed1, - 0x80006df9, 0x80006f6e, 0x80023f5e, 0x80023f8e, - 0x80006fc6, 0x80007039, 0x8000701e, 0x8000701b, - 0x80003d96, 0x8000704a, 0x8000707d, 0x80007077, - 0x800070ad, 0x80020525, 0x80007145, 0x80024263, - 0x8000719c, 0x800243ab, 0x80007228, 0x80007235, - 0x80007250, 0x80024608, 0x80007280, 0x80007295, - 0x80024735, 0x80024814, 0x8000737a, 0x8000738b, - 0x80003eac, 0x800073a5, 0x80003eb8, 0x80003eb8, - 0x80007447, 0x8000745c, 0x80007471, 0x80007485, - 0x800074ca, 0x80003f1b, 0x80007524, 0x80024c36, - 0x8000753e, 0x80024c92, 0x80007570, 0x8002219f, - 0x80007610, 0x80024fa1, 0x80024fb8, 0x80025044, - 0x80003ffc, 0x80004008, 0x800076f4, 0x800250f3, - 0x800250f2, 0x80025119, 0x80025133, 0x8000771e, - 0x8000771f, 0x8000771f, 0x8000774a, 0x80004039, - 0x8000778b, 0x80004046, 0x80004096, 0x8002541d, - 0x8000784e, 0x8000788c, 0x800078cc, 0x800040e3, - 0x80025626, 0x80007956, 0x8002569a, 0x800256c5, - 0x8000798f, 0x800079eb, 0x8000412f, 0x80007a40, - 0x80007a4a, 0x80007a4f, 0x8002597c, 0x80025aa7, - 0x80025aa7, 0x80007aee, 0x80004202, 0x80025bab, - 0x80007bc6, 0x80007bc9, 0x80004227, 0x80025c80, - 0x80007cd2, 0x800042a0, 0x80007ce8, 0x80007ce3, - 0x80007d00, 0x80025f86, 0x80007d63, 0x80004301, - 0x80007dc7, 0x80007e02, 0x80007e45, 0x80004334, - 0x80026228, 0x80026247, 0x80004359, 0x800262d9, - 0x80007f7a, 0x8002633e, 0x80007f95, 0x80007ffa, - 0x80008005, 0x800264da, 0x80026523, 0x80008060, - 0x800265a8, 0x80008070, 0x8002335f, 0x800043d5, - 0x800080b2, 0x80008103, 0x8000440b, 0x8000813e, - 0x80005ab5, 0x800267a7, 0x800267b5, 0x80023393, - 0x8002339c, 0x80008201, 0x80008204, 0x80008f9e, - 0x8000446b, 0x80008291, 0x8000828b, 0x8000829d, - 0x800052b3, 0x800082b1, 0x800082b3, 0x800082bd, - 0x800082e6, 0x80026b3c, 0x800082e5, 0x8000831d, - 0x80008363, 0x800083ad, 0x80008323, 0x800083bd, - 0x800083e7, 0x80008457, 0x80008353, 0x800083ca, - 0x800083cc, 0x800083dc, 0x80026c36, 0x80026d6b, - 0x80026cd5, 0x8000452b, 0x800084f1, 0x800084f3, - 0x80008516, 0x800273ca, 0x80008564, 0x80026f2c, - 0x8000455d, 0x80004561, 0x80026fb1, 0x800270d2, - 0x8000456b, 0x80008650, 0x8000865c, 0x80008667, - 0x80008669, 0x800086a9, 0x80008688, 0x8000870e, - 0x800086e2, 0x80008779, 0x80008728, 0x8000876b, - 0x80008786, 0x800045d7, 0x800087e1, 0x80008801, - 0x800045f9, 0x80008860, 0x80008863, 0x80027667, - 0x800088d7, 0x800088de, 0x80004635, 0x800088fa, - 0x800034bb, 0x800278ae, 0x80027966, 0x800046be, - 0x800046c7, 0x80008aa0, 0x80008aed, 0x80008b8a, - 0x80008c55, 0x80027ca8, 0x80008cab, 0x80008cc1, - 0x80008d1b, 0x80008d77, 0x80027f2f, 0x80020804, - 0x80008dcb, 0x80008dbc, 0x80008df0, 0x800208de, - 0x80008ed4, 0x80008f38, 0x800285d2, 0x800285ed, - 0x80009094, 0x800090f1, 0x80009111, 0x8002872e, - 0x8000911b, 0x80009238, 0x800092d7, 0x800092d8, - 0x8000927c, 0x800093f9, 0x80009415, 0x80028bfa, - 0x8000958b, 0x80004995, 0x800095b7, 0x80028d77, - 0x800049e6, 0x800096c3, 0x80005db2, 0x80009723, - 0x80029145, 0x8002921a, 0x80004a6e, 0x80004a76, - 0x800097e0, 0x8002940a, 0x80004ab2, 0x80029496, - 0x8000980b, 0x8000980b, 0x80009829, 0x800295b6, - 0x800098e2, 0x80004b33, 0x80009929, 0x800099a7, - 0x800099c2, 0x800099fe, 0x80004bce, 0x80029b30, - 0x80009b12, 0x80009c40, 0x80009cfd, 0x80004cce, - 0x80004ced, 0x80009d67, 0x8002a0ce, 0x80004cf8, - 0x8002a105, 0x8002a20e, 0x8002a291, 0x80009ebb, - 0x80004d56, 0x80009ef9, 0x80009efe, 0x80009f05, - 0x80009f0f, 0x80009f16, 0x80009f3b, 0x8002a600, -}; - diff --git a/intl/unicharutil/nsUnicodeNormalizer.cpp b/intl/unicharutil/nsUnicodeNormalizer.cpp index 16c3a969c..6f6c3d2dd 100644 --- a/intl/unicharutil/nsUnicodeNormalizer.cpp +++ b/intl/unicharutil/nsUnicodeNormalizer.cpp @@ -1,66 +1,16 @@ /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/* This file is modified from JPNIC's mDNKit, it is under both MPL and - * JPNIC's license. - */ - /* 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/. */ -/* - * Copyright (c) 2000,2002 Japan Network Information Center. - * All rights reserved. - * - * By using this file, you agree to the terms and conditions set forth bellow. - * - * LICENSE TERMS AND CONDITIONS - * - * The following License Terms and Conditions apply, unless a different - * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, - * Chiyoda-ku, Tokyo 101-0047, Japan. - * - * 1. Use, Modification and Redistribution (including distribution of any - * modified or derived work) in source and/or binary forms is permitted - * under this License Terms and Conditions. - * - * 2. Redistribution of source code must retain the copyright notices as they - * appear in each source code file, this License Terms and Conditions. - * - * 3. Redistribution in binary form must reproduce the Copyright Notice, - * this License Terms and Conditions, in the documentation and/or other - * materials provided with the distribution. For the purposes of binary - * distribution the "Copyright Notice" refers to the following language: - * "Copyright (c) 2000-2002 Japan Network Information Center. All rights reserved." - * - * 4. The name of JPNIC may not be used to endorse or promote products - * derived from this Software without specific prior written approval of - * JPNIC. - * - * 5. Disclaimer/Limitation of Liability: THIS SOFTWARE IS PROVIDED BY JPNIC - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JPNIC BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR - * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR - * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF - * ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - */ - -#include <string.h> - -#include "nsMemory.h" #include "nsUnicodeNormalizer.h" -#include "nsString.h" -#include "mozilla/BinarySearch.h" +#include "ICUUtils.h" +#include "unicode/unorm2.h" +#include "unicode/utext.h" NS_IMPL_ISUPPORTS(nsUnicodeNormalizer, nsIUnicodeNormalizer) - nsUnicodeNormalizer::nsUnicodeNormalizer() { } @@ -69,636 +19,80 @@ nsUnicodeNormalizer::~nsUnicodeNormalizer() { } - - -#define END_BIT 0x80000000 - - -/* - * Some constants for Hangul decomposition/composition. - * These things were taken from unicode book. - */ -#define SBase 0xac00 -#define LBase 0x1100 -#define VBase 0x1161 -#define TBase 0x11a7 -#define LCount 19 -#define VCount 21 -#define TCount 28 -#define SLast (SBase + LCount * VCount * TCount) - -struct composition { - uint32_t c2; /* 2nd character */ - uint32_t comp; /* composed character */ -}; - - -#include "normalization_data.h" - -/* - * Macro for multi-level index table. - */ -#define LOOKUPTBL(vprefix, mprefix, v) \ - DMAP(vprefix)[\ - IMAP(vprefix)[\ - IMAP(vprefix)[IDX0(mprefix, v)] + IDX1(mprefix, v)\ - ]\ - ].tbl[IDX2(mprefix, v)] - -#define IDX0(mprefix, v) IDX_0(v, BITS1(mprefix), BITS2(mprefix)) -#define IDX1(mprefix, v) IDX_1(v, BITS1(mprefix), BITS2(mprefix)) -#define IDX2(mprefix, v) IDX_2(v, BITS1(mprefix), BITS2(mprefix)) - -#define IDX_0(v, bits1, bits2) ((v) >> ((bits1) + (bits2))) -#define IDX_1(v, bits1, bits2) (((v) >> (bits2)) & ((1 << (bits1)) - 1)) -#define IDX_2(v, bits1, bits2) ((v) & ((1 << (bits2)) - 1)) - -#define BITS1(mprefix) mprefix ## _BITS_1 -#define BITS2(mprefix) mprefix ## _BITS_2 - -#define IMAP(vprefix) vprefix ## _imap -#define DMAP(vprefix) vprefix ## _table -#define SEQ(vprefix) vprefix ## _seq - -static int32_t -canonclass(uint32_t c) { - /* Look up canonicalclass table. */ - return (LOOKUPTBL(canon_class, CANON_CLASS, c)); -} - -static int32_t -decompose_char(uint32_t c, const uint32_t **seqp) -{ - /* Look up decomposition table. */ - int32_t seqidx = LOOKUPTBL(decompose, DECOMP, c); - *seqp = SEQ(decompose) + (seqidx & ~DECOMP_COMPAT); - return (seqidx); -} - -static int32_t -compose_char(uint32_t c, - const struct composition **compp) -{ - /* Look up composition table. */ - int32_t seqidx = LOOKUPTBL(compose, CANON_COMPOSE, c); - *compp = SEQ(compose) + (seqidx & 0xffff); - return (seqidx >> 16); -} - -static nsresult -mdn__unicode_decompose(int32_t compat, uint32_t *v, size_t vlen, - uint32_t c, int32_t *decomp_lenp) -{ - uint32_t *vorg = v; - int32_t seqidx; - const uint32_t *seq; - - //assert(v != nullptr && vlen >= 0 && decomp_lenp != nullptr); - - /* - * First, check for Hangul. - */ - if (SBase <= c && c < SLast) { - int32_t idx, t_offset, v_offset, l_offset; - - idx = c - SBase; - t_offset = idx % TCount; - idx /= TCount; - v_offset = idx % VCount; - l_offset = idx / VCount; - if ((t_offset == 0 && vlen < 2) || (t_offset > 0 && vlen < 3)) - return (NS_ERROR_UNORM_MOREOUTPUT); - *v++ = LBase + l_offset; - *v++ = VBase + v_offset; - if (t_offset > 0) - *v++ = TBase + t_offset; - *decomp_lenp = v - vorg; - return (NS_OK); - } - - /* - * Look up decomposition table. If no decomposition is defined - * or if it is a compatibility decomosition when canonical - * decomposition requested, return 'NS_SUCCESS_UNORM_NOTFOUND'. - */ - seqidx = decompose_char(c, &seq); - if (seqidx == 0 || (compat == 0 && (seqidx & DECOMP_COMPAT) != 0)) - return (NS_SUCCESS_UNORM_NOTFOUND); - - /* - * Copy the decomposed sequence. The end of the sequence are - * marked with END_BIT. - */ - do { - uint32_t c; - int32_t dlen; - nsresult r; - - c = *seq & ~END_BIT; - - /* Decompose recursively. */ - r = mdn__unicode_decompose(compat, v, vlen, c, &dlen); - if (r == NS_OK) { - v += dlen; - vlen -= dlen; - } else if (r == NS_SUCCESS_UNORM_NOTFOUND) { - if (vlen < 1) - return (NS_ERROR_UNORM_MOREOUTPUT); - *v++ = c; - vlen--; - } else { - return (r); - } - - } while ((*seq++ & END_BIT) == 0); - - *decomp_lenp = v - vorg; - - return (NS_OK); -} - -static int32_t -mdn__unicode_iscompositecandidate(uint32_t c) -{ - const struct composition *dummy; - - /* Check for Hangul */ - if ((LBase <= c && c < LBase + LCount) || (SBase <= c && c < SLast)) - return (1); - - /* - * Look up composition table. If there are no composition - * that begins with the given character, it is not a - * composition candidate. - */ - if (compose_char(c, &dummy) == 0) - return (0); - else - return (1); -} - -namespace { - -struct SequenceAdaptor -{ - const composition* const mSequence; - explicit SequenceAdaptor(const composition* aSequence) : mSequence(aSequence) {} - uint32_t operator[](size_t aIdx) const { - return mSequence[aIdx].c2; - } -}; - -} // namespace - -static nsresult -mdn__unicode_compose(uint32_t c1, uint32_t c2, uint32_t *compp) -{ - int32_t n; - const struct composition *cseq; - - //assert(compp != nullptr); - - /* - * Check for Hangul. - */ - if (LBase <= c1 && c1 < LBase + LCount && - VBase <= c2 && c2 < VBase + VCount) { - /* - * Hangul L and V. - */ - *compp = SBase + - ((c1 - LBase) * VCount + (c2 - VBase)) * TCount; - return (NS_OK); - } else if (SBase <= c1 && c1 < SLast && - TBase <= c2 && c2 < TBase + TCount && - (c1 - SBase) % TCount == 0) { - /* - * Hangul LV and T. - */ - *compp = c1 + (c2 - TBase); - return (NS_OK); - } - - /* - * Look up composition table. If the result is 0, no composition - * is defined. Otherwise, upper 16bits of the result contains - * the number of composition that begins with 'c1', and the lower - * 16bits is the offset in 'compose_seq'. - */ - if ((n = compose_char(c1, &cseq)) == 0) - return (NS_SUCCESS_UNORM_NOTFOUND); - - /* - * The composite sequences are sorted by the 2nd character 'c2'. - * So we can use binary search. - */ - size_t idx; - if (mozilla::BinarySearch(SequenceAdaptor(cseq), 0, n, c2, &idx)) { - *compp = cseq[idx].comp; - return (NS_OK); - } - - return (NS_SUCCESS_UNORM_NOTFOUND); -} - - -#define WORKBUF_SIZE 128 -#define WORKBUF_SIZE_MAX 10000 - -typedef struct { - int32_t cur; /* pointing now processing character */ - int32_t last; /* pointing just after the last character */ - int32_t size; /* size of UCS and CLASS array */ - uint32_t *ucs; /* UCS-4 characters */ - int32_t *cclass; /* and their canonical classes */ - uint32_t ucs_buf[WORKBUF_SIZE]; /* local buffer */ - int32_t class_buf[WORKBUF_SIZE]; /* ditto */ -} workbuf_t; - -static nsresult decompose(workbuf_t *wb, uint32_t c, int32_t compat); -static void get_class(workbuf_t *wb); -static void reorder(workbuf_t *wb); -static void compose(workbuf_t *wb); -static nsresult flush_before_cur(workbuf_t *wb, nsAString& aToStr); -static void workbuf_init(workbuf_t *wb); -static void workbuf_free(workbuf_t *wb); -static nsresult workbuf_extend(workbuf_t *wb); -static nsresult workbuf_append(workbuf_t *wb, uint32_t c); -static void workbuf_shift(workbuf_t *wb, int32_t shift); -static void workbuf_removevoid(workbuf_t *wb); - - -static nsresult -mdn_normalize(bool do_composition, bool compat, - const nsAString& aSrcStr, nsAString& aToStr) -{ - workbuf_t wb; - nsresult r = NS_OK; - /* - * Initialize working buffer. - */ - workbuf_init(&wb); - - nsAString::const_iterator start, end; - aSrcStr.BeginReading(start); - aSrcStr.EndReading(end); - - while (start != end) { - uint32_t c; - char16_t curChar; - - //assert(wb.cur == wb.last); - - /* - * Get one character from 'from'. - */ - curChar= *start++; - - if (NS_IS_HIGH_SURROGATE(curChar) && start != end && NS_IS_LOW_SURROGATE(*(start)) ) { - c = SURROGATE_TO_UCS4(curChar, *start); - ++start; - } else { - c = curChar; - } - - /* - * Decompose it. - */ - if ((r = decompose(&wb, c, compat)) != NS_OK) - break; - - /* - * Get canonical class. - */ - get_class(&wb); - - /* - * Reorder & compose. - */ - for (; wb.cur < wb.last; wb.cur++) { - if (wb.cur == 0) { - continue; - } else if (wb.cclass[wb.cur] > 0) { - /* - * This is not a starter. Try reordering. - * Note that characters up to it are - * already in canonical order. - */ - reorder(&wb); - continue; - } - - /* - * This is a starter character, and there are - * some characters before it. Those characters - * have been reordered properly, and - * ready for composition. - */ - if (do_composition && wb.cclass[0] == 0) - compose(&wb); - - /* - * If CUR points to a starter character, - * then process of characters before CUR are - * already finished, because any further - * reordering/composition for them are blocked - * by the starter CUR points. - */ - if (wb.cur > 0 && wb.cclass[wb.cur] == 0) { - /* Flush everything before CUR. */ - r = flush_before_cur(&wb, aToStr); - if (r != NS_OK) - break; - } - } - } - - if (r == NS_OK) { - if (do_composition && wb.cur > 0 && wb.cclass[0] == 0) { - /* - * There is some characters left in WB. - * They are ordered, but not composed yet. - * Now CUR points just after the last character in WB, - * and since compose() tries to compose characters - * between top and CUR inclusive, we must make CUR - * one character back during compose(). - */ - wb.cur--; - compose(&wb); - wb.cur++; - } - /* - * Call this even when WB.CUR == 0, to make TO - * NUL-terminated. - */ - r = flush_before_cur(&wb, aToStr); - } - - workbuf_free(&wb); - - return (r); -} - -static nsresult -decompose(workbuf_t *wb, uint32_t c, int32_t compat) { - nsresult r; - int32_t dec_len; - -again: - r = mdn__unicode_decompose(compat, wb->ucs + wb->last, - wb->size - wb->last, c, &dec_len); - switch (r) { - case NS_OK: - wb->last += dec_len; - return (NS_OK); - case NS_SUCCESS_UNORM_NOTFOUND: - return (workbuf_append(wb, c)); - case NS_ERROR_UNORM_MOREOUTPUT: - if ((r = workbuf_extend(wb)) != NS_OK) - return (r); - if (wb->size > WORKBUF_SIZE_MAX) { - // "mdn__unormalize_form*: " "working buffer too large\n" - return (NS_ERROR_FAILURE); - } - goto again; - default: - return (r); - } - /* NOTREACHED */ -} - -static void -get_class(workbuf_t *wb) { - int32_t i; - - for (i = wb->cur; i < wb->last; i++) - wb->cclass[i] = canonclass(wb->ucs[i]); -} - -static void -reorder(workbuf_t *wb) { - uint32_t c; - int32_t i; - int32_t cclass; - - //assert(wb != nullptr); - - i = wb->cur; - c = wb->ucs[i]; - cclass = wb->cclass[i]; - - while (i > 0 && wb->cclass[i - 1] > cclass) { - wb->ucs[i] = wb->ucs[i - 1]; - wb->cclass[i] =wb->cclass[i - 1]; - i--; - wb->ucs[i] = c; - wb->cclass[i] = cclass; - } -} - -static void -compose(workbuf_t *wb) { - int32_t cur; - uint32_t *ucs; - int32_t *cclass; - int32_t last_class; - int32_t nvoids; - int32_t i; - - //assert(wb != nullptr && wb->cclass[0] == 0); - - cur = wb->cur; - ucs = wb->ucs; - cclass = wb->cclass; - - /* - * If there are no decomposition sequence that begins with - * the top character, composition is impossible. - */ - if (!mdn__unicode_iscompositecandidate(ucs[0])) - return; - - last_class = 0; - nvoids = 0; - for (i = 1; i <= cur; i++) { - uint32_t c; - int32_t cl = cclass[i]; - - if ((last_class < cl || cl == 0) && - mdn__unicode_compose(ucs[0], ucs[i], - &c) == NS_OK) { - /* - * Replace the top character with the composed one. - */ - ucs[0] = c; - cclass[0] = canonclass(c); - - cclass[i] = -1; /* void this character */ - nvoids++; - } else { - last_class = cl; - } - } - - /* Purge void characters, if any. */ - if (nvoids > 0) - workbuf_removevoid(wb); -} - -static nsresult -flush_before_cur(workbuf_t *wb, nsAString& aToStr) -{ - int32_t i; - - for (i = 0; i < wb->cur; i++) { - if (!IS_IN_BMP(wb->ucs[i])) { - aToStr.Append((char16_t)H_SURROGATE(wb->ucs[i])); - aToStr.Append((char16_t)L_SURROGATE(wb->ucs[i])); - } else { - aToStr.Append((char16_t)(wb->ucs[i])); - } - } - - workbuf_shift(wb, wb->cur); - - return (NS_OK); -} - -static void -workbuf_init(workbuf_t *wb) { - wb->cur = 0; - wb->last = 0; - wb->size = WORKBUF_SIZE; - wb->ucs = wb->ucs_buf; - wb->cclass = wb->class_buf; -} - -static void -workbuf_free(workbuf_t *wb) { - if (wb->ucs != wb->ucs_buf) { - free(wb->ucs); - free(wb->cclass); - } -} - static nsresult -workbuf_extend(workbuf_t *wb) { - int32_t newsize = wb->size * 3; - - if (wb->ucs == wb->ucs_buf) { - wb->ucs = (uint32_t*)moz_xmalloc(sizeof(wb->ucs[0]) * newsize); - if (!wb->ucs) - return NS_ERROR_OUT_OF_MEMORY; - wb->cclass = (int32_t*)moz_xmalloc(sizeof(wb->cclass[0]) * newsize); - if (!wb->cclass) { - free(wb->ucs); - wb->ucs = nullptr; - return NS_ERROR_OUT_OF_MEMORY; - } - } else { - void* buf = moz_xrealloc(wb->ucs, sizeof(wb->ucs[0]) * newsize); - if (!buf) - return NS_ERROR_OUT_OF_MEMORY; - wb->ucs = (uint32_t*)buf; - buf = moz_xrealloc(wb->cclass, sizeof(wb->cclass[0]) * newsize); - if (!buf) - return NS_ERROR_OUT_OF_MEMORY; - wb->cclass = (int32_t*)buf; - } - return (NS_OK); -} - -static nsresult -workbuf_append(workbuf_t *wb, uint32_t c) { - nsresult r; - - if (wb->last >= wb->size && (r = workbuf_extend(wb)) != NS_OK) - return (r); - wb->ucs[wb->last++] = c; - return (NS_OK); -} - -static void -workbuf_shift(workbuf_t *wb, int32_t shift) { - int32_t nmove; - - //assert(wb != nullptr && wb->cur >= shift); - - nmove = wb->last - shift; - memmove(&wb->ucs[0], &wb->ucs[shift], - nmove * sizeof(wb->ucs[0])); - memmove(&wb->cclass[0], &wb->cclass[shift], - nmove * sizeof(wb->cclass[0])); - wb->cur -= shift; - wb->last -= shift; -} - -static void -workbuf_removevoid(workbuf_t *wb) { - int32_t i, j; - int32_t last = wb->last; - - for (i = j = 0; i < last; i++) { - if (wb->cclass[i] >= 0) { - if (j < i) { - wb->ucs[j] = wb->ucs[i]; - wb->cclass[j] = wb->cclass[i]; - } - j++; - } - } - wb->cur -= last - j; - wb->last = j; -} - -nsresult -nsUnicodeNormalizer::NormalizeUnicodeNFD( const nsAString& aSrc, nsAString& aDest) -{ - return mdn_normalize(false, false, aSrc, aDest); -} - -nsresult -nsUnicodeNormalizer::NormalizeUnicodeNFC( const nsAString& aSrc, nsAString& aDest) -{ - return mdn_normalize(true, false, aSrc, aDest); -} - -nsresult -nsUnicodeNormalizer::NormalizeUnicodeNFKD( const nsAString& aSrc, nsAString& aDest) -{ - return mdn_normalize(false, true, aSrc, aDest); +DoNormalization(const UNormalizer2* aNorm, const nsAString& aSrc, + nsAString& aDest) +{ + UErrorCode errorCode = U_ZERO_ERROR; + const int32_t length = aSrc.Length(); + const UChar* src = reinterpret_cast<const UChar*>(aSrc.BeginReading()); + // Initial guess for a capacity that is likely to be enough for most cases. + int32_t capacity = length + (length >> 8) + 8; + do { + aDest.SetLength(capacity); + UChar* dest = reinterpret_cast<UChar*>(aDest.BeginWriting()); + int32_t len = unorm2_normalize(aNorm, src, aSrc.Length(), dest, capacity, + &errorCode); + if (U_SUCCESS(errorCode)) { + aDest.SetLength(len); + break; + } + if (errorCode == U_BUFFER_OVERFLOW_ERROR) { + // Buffer wasn't big enough; adjust to the reported size and try again. + capacity = len; + errorCode = U_ZERO_ERROR; + continue; + } + } while (false); + return ICUUtils::UErrorToNsResult(errorCode); +} + +nsresult +nsUnicodeNormalizer::NormalizeUnicodeNFD(const nsAString& aSrc, + nsAString& aDest) +{ + // The unorm2_getNF*Instance functions return static singletons that should + // not be deleted, so we just get them once on first use. + static UErrorCode errorCode = U_ZERO_ERROR; + static const UNormalizer2* norm = unorm2_getNFDInstance(&errorCode); + if (U_SUCCESS(errorCode)) { + return DoNormalization(norm, aSrc, aDest); + } + return ICUUtils::UErrorToNsResult(errorCode); } -nsresult -nsUnicodeNormalizer::NormalizeUnicodeNFKC( const nsAString& aSrc, nsAString& aDest) +nsresult +nsUnicodeNormalizer::NormalizeUnicodeNFC(const nsAString& aSrc, + nsAString& aDest) { - return mdn_normalize(true, true, aSrc, aDest); + static UErrorCode errorCode = U_ZERO_ERROR; + static const UNormalizer2* norm = unorm2_getNFCInstance(&errorCode); + if (U_SUCCESS(errorCode)) { + return DoNormalization(norm, aSrc, aDest); + } + return ICUUtils::UErrorToNsResult(errorCode); } -bool -nsUnicodeNormalizer::Compose(uint32_t a, uint32_t b, uint32_t *ab) +nsresult +nsUnicodeNormalizer::NormalizeUnicodeNFKD(const nsAString& aSrc, + nsAString& aDest) { - return mdn__unicode_compose(a, b, ab) == NS_OK; + static UErrorCode errorCode = U_ZERO_ERROR; + static const UNormalizer2* norm = unorm2_getNFKDInstance(&errorCode); + if (U_SUCCESS(errorCode)) { + return DoNormalization(norm, aSrc, aDest); + } + return ICUUtils::UErrorToNsResult(errorCode); } -bool -nsUnicodeNormalizer::DecomposeNonRecursively(uint32_t c, uint32_t *c1, uint32_t *c2) +nsresult +nsUnicodeNormalizer::NormalizeUnicodeNFKC(const nsAString& aSrc, + nsAString& aDest) { - // We can't use mdn__unicode_decompose here, because that does a recursive - // decomposition that may yield more than two characters, but the harfbuzz - // callback wants just a single-step decomp that is guaranteed to produce - // no more than two characters. So we do a low-level lookup in the table - // of decomp sequences. - const uint32_t *seq; - uint32_t seqidx = decompose_char(c, &seq); - if (seqidx == 0 || ((seqidx & DECOMP_COMPAT) != 0)) { - return false; - } - *c1 = *seq & ~END_BIT; - if (*seq & END_BIT) { - *c2 = 0; - } else { - *c2 = *++seq & ~END_BIT; + static UErrorCode errorCode = U_ZERO_ERROR; + static const UNormalizer2* norm = unorm2_getNFKCInstance(&errorCode); + if (U_SUCCESS(errorCode)) { + return DoNormalization(norm, aSrc, aDest); } - return true; + return ICUUtils::UErrorToNsResult(errorCode); } diff --git a/intl/unicharutil/nsUnicodeNormalizer.h b/intl/unicharutil/nsUnicodeNormalizer.h index 5d9f1fe24..e92e53f21 100644 --- a/intl/unicharutil/nsUnicodeNormalizer.h +++ b/intl/unicharutil/nsUnicodeNormalizer.h @@ -25,13 +25,6 @@ public: NS_IMETHOD NormalizeUnicodeNFKD( const nsAString& aSrc, nsAString& aDest) override; NS_IMETHOD NormalizeUnicodeNFKC( const nsAString& aSrc, nsAString& aDest) override; -#if !ENABLE_INTL_API - // Low-level access to the composition data needed for HarfBuzz callbacks; - // only required when ICU is not available in the build. - static bool Compose(uint32_t a, uint32_t b, uint32_t *ab); - static bool DecomposeNonRecursively(uint32_t comp, uint32_t *c1, uint32_t *c2); -#endif - private: virtual ~nsUnicodeNormalizer(); }; diff --git a/intl/unicharutil/nsUnicodeNormalizer_ICU.cpp b/intl/unicharutil/nsUnicodeNormalizer_ICU.cpp deleted file mode 100644 index 6f6c3d2dd..000000000 --- a/intl/unicharutil/nsUnicodeNormalizer_ICU.cpp +++ /dev/null @@ -1,98 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 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 "nsUnicodeNormalizer.h" -#include "ICUUtils.h" -#include "unicode/unorm2.h" -#include "unicode/utext.h" - -NS_IMPL_ISUPPORTS(nsUnicodeNormalizer, nsIUnicodeNormalizer) - -nsUnicodeNormalizer::nsUnicodeNormalizer() -{ -} - -nsUnicodeNormalizer::~nsUnicodeNormalizer() -{ -} - -static nsresult -DoNormalization(const UNormalizer2* aNorm, const nsAString& aSrc, - nsAString& aDest) -{ - UErrorCode errorCode = U_ZERO_ERROR; - const int32_t length = aSrc.Length(); - const UChar* src = reinterpret_cast<const UChar*>(aSrc.BeginReading()); - // Initial guess for a capacity that is likely to be enough for most cases. - int32_t capacity = length + (length >> 8) + 8; - do { - aDest.SetLength(capacity); - UChar* dest = reinterpret_cast<UChar*>(aDest.BeginWriting()); - int32_t len = unorm2_normalize(aNorm, src, aSrc.Length(), dest, capacity, - &errorCode); - if (U_SUCCESS(errorCode)) { - aDest.SetLength(len); - break; - } - if (errorCode == U_BUFFER_OVERFLOW_ERROR) { - // Buffer wasn't big enough; adjust to the reported size and try again. - capacity = len; - errorCode = U_ZERO_ERROR; - continue; - } - } while (false); - return ICUUtils::UErrorToNsResult(errorCode); -} - -nsresult -nsUnicodeNormalizer::NormalizeUnicodeNFD(const nsAString& aSrc, - nsAString& aDest) -{ - // The unorm2_getNF*Instance functions return static singletons that should - // not be deleted, so we just get them once on first use. - static UErrorCode errorCode = U_ZERO_ERROR; - static const UNormalizer2* norm = unorm2_getNFDInstance(&errorCode); - if (U_SUCCESS(errorCode)) { - return DoNormalization(norm, aSrc, aDest); - } - return ICUUtils::UErrorToNsResult(errorCode); -} - -nsresult -nsUnicodeNormalizer::NormalizeUnicodeNFC(const nsAString& aSrc, - nsAString& aDest) -{ - static UErrorCode errorCode = U_ZERO_ERROR; - static const UNormalizer2* norm = unorm2_getNFCInstance(&errorCode); - if (U_SUCCESS(errorCode)) { - return DoNormalization(norm, aSrc, aDest); - } - return ICUUtils::UErrorToNsResult(errorCode); -} - -nsresult -nsUnicodeNormalizer::NormalizeUnicodeNFKD(const nsAString& aSrc, - nsAString& aDest) -{ - static UErrorCode errorCode = U_ZERO_ERROR; - static const UNormalizer2* norm = unorm2_getNFKDInstance(&errorCode); - if (U_SUCCESS(errorCode)) { - return DoNormalization(norm, aSrc, aDest); - } - return ICUUtils::UErrorToNsResult(errorCode); -} - -nsresult -nsUnicodeNormalizer::NormalizeUnicodeNFKC(const nsAString& aSrc, - nsAString& aDest) -{ - static UErrorCode errorCode = U_ZERO_ERROR; - static const UNormalizer2* norm = unorm2_getNFKCInstance(&errorCode); - if (U_SUCCESS(errorCode)) { - return DoNormalization(norm, aSrc, aDest); - } - return ICUUtils::UErrorToNsResult(errorCode); -} |